v7: 1sqlite - Отбор родителя справочника по списку групп #706457


#0 by ildary
Уважаемые специалисты, посоветуйте пожалуйста как правильно осуществить SUBJ? На форуме упоминалось, что "select val from" возвращает только id элементов, и упоминалось, что можно применить Запрос.Подставлять, но это работает только если мы отбираем по одной группе, а как быть со списком групп?
#1 by Vinianel
Если я ничего не путаю, то УложитьОбъекты(ТвойСписок, "Список", 0). Ну и потом "SELECT Val FROM Список".
#2 by Ёпрст
Как обычно, уложитьОбъекты  и привет
#3 by Ёпрст
путаешь, не указана типизация.
#4 by Vinianel
Если указать типизацию, то в список будут уложены элементы, входящие в группы из Списка.
#5 by Ёпрст
+3 * иерархия, не указана.. Параметры: Объект - тип: СписокЗначений, Справочник, Счет. Выгружаемые объекты. ИмяТаблицы - тип: Строка. Имя созаваемой в базе данных таблицы. КакПостоянную - тип: Число. 1 - создать обычную таблицу, 0 - создать временную таблицу. Необязательный параметр. По умолчанию 0. Иерархия - тип: Строка. Название справочника или плана счетов для разворота групп справочника или групп счетов. Необязательный параметр. По умолчанию - пустая строка. Описание: Загружает значение либо список значений в базу данных, как таблицу базы данных. В базе данных создается таблица с заданным именем с одним полем val. Если таблица с таким именем существует, она уничтожается. В данную таблицу выгружаются внутренние идентификаторы объектов в формате char. Если первым параметром передан список значений, в таблицу укладываются значения из переданного списка. Если задана иерархия (название справочника либо плана счетов), то вместо объектов-групп выгружаются все входящие в группу элементы/счета всех нижележащих уровней. Сами группы при этом не выгружаются. Работа с иеерархией выполняется только в дбф-базах, в sql-версии 1С будет генерироваться исключение. Перед выполнением метода проверяется только то, что первый параметр либо список значений, либо справочник, либо счет. Проверка выгружаемых значений на то, что они действительно являются справочниками/счетами нужного вида - не производится, и вся отвественность за это возлагается на пользователя. При использовании иерархии метод гарантирует, что каждый из входящих в список объектов выгрузится не более одного раза, те дубли не выгружаются. Если иерархия не используется, список объектов выгружается как есть.
#6 by Ёпрст
ему это и надо
#7 by Ёпрст
Хотя.. хз чего ему надо :)
#8 by Vinianel
Да я не ради спора :) Значит, неправильно поняла фразу ТС "как быть со списком групп" :)
#9 by Ёпрст
ага, мот он в списке групп хочет найти нужную ? Тогда да, иерархию не надо указывать..
#10 by monsterZE
либо
#11 by monsterZE
вопрос нормально сформулируй
#12 by ildary
Формулирую: Таблица возвращается пустая. Вот здесь: сказано: "у тебя группа, в SELECT Val From ВыбТовар всегда id элементов" Вопрос: как наложить фильтр по родителю элементов справочника по списку групп этого српавочника?
#13 by Ёпрст
в этом случае, никак. Нужно в список пихать еще и сами группы.
#14 by Ёпрст
как например, это в классе Ивана сделано в аккаундсрекордсет.. там есть уложить с группами.
#15 by ildary
но ведь я и пихал группу Грп в СпсГрупп? этого недостаточно?
#16 by ildary
речь идет о классе "ПрямойЗапрос" и процедуре УложитьСписокГрупп?
#17 by Попытка1С
Класс "ПрямойЗапрос" написал Александр Анисков.
#18 by Ёпрст
там разворачивается всегда до всех элементов, входящих в эту группу, сами группы не пихаются не, речь про УложитьСписокГрупп в классе аккаунтрекордсет, хотя думаю, автор класса ПрямойЗапрос реализовал тоже самое и там.. вот еще можешь почитать
#19 by Ёпрст
если не заморачиваться, то список с только группами, можешь создать сам, примитивной выборкой с использованием параметров в методе ВыбратьЭлементы и ПолучитьЭлемент ..
#20 by Ёпрст
ну и тупой рекурсией.. А можешь и прямым запросом с кучей лефтджоинов поиметь иерархию групп справочника для фильтра.
#21 by ildary
я прошу объяснить - что я в итоге должен положить в список отбора? Сейчас у меня в списке отбора одна группа, я должен получить все её подгруппы и в итоге фильтровать по ним? Но если это так, почему тогда не возвращаются элементы, которые подчинены непосредственно этой группе?
#22 by orefkov
Надо не parentid сравнивать, а сам id. Уложить до элементов раскручивает. Если надо одну группу уложить, в СЗ её не обязательно класть, можно передать в метод сразу группу.
#23 by Salimbek
1. Если нужны Элементы, входящие в группу (без вложенных подгрупп), то можно сделать: "Спр.PARENTID = &ВыбГруппа" запрос.УстановитьПараметр("ВыбГруппа",Грп); 2. Если нужны Элементы, входящие в список групп (без вложенных подгрупп), то можно уложить без раскрытия иерархии: "Спр.PARENTID  IN (select val from СпсГрупп )" 3. Если нужны все вложенные элементы и из подгрупп, то надо раскрывать иерархию: "Спр.ID  IN (select val from СпсЭлементов )" P.S. Тестовый пример с поставщиком - "Справочник" не получилось сделать?
#24 by ildary
Прошу прощения, пример сделал, куда выслать?
#25 by ildary
еще хотел уточнить - мне надо выполнить вариант 3, что должно быть в спсГрупп - все группы, которые я хочу получить вместе их подгруппами?
#26 by Ёпрст
а вопрос то в чем ? Тебе нужно фильровать как хоть ? По родителю справочника ? Что если родитель есть в списке груп с учетом вложенности? Или что ?
#27 by ildary
Многоуровневый справочник (Номенклатура в ТиС), мне надо получить список товаров, содержащихся в нескольких группах с кучей всяких условий. В есть пункт 3, который описывает мою задачу, хочу узнать, что надо положить в СпсГрупп?
#28 by Salimbek
Список нужных тебе групп
#29 by Salimbek
+ После Уложить - во временной таблице будут только Элементы из этих и подчиненных групп. Причем в таблице будут только уникальные элементы. Дубли не выгрузятся.
#30 by Salimbek
На 1cpp в теме выложи, если что - там же, если разберусь, и отвечу. Здесь тему для этого создавать не очень удобно.
#31 by Ёпрст
ну дык и делай как ы (23.3) + выкинь условие на parentid where id in (select val from Список) база.УложитьОбъекты(СпсГрупп, "Список",0,"Номенклатура");
#32 by КонецЦикла
Вот примерно разворот уложить список объектов, можно модифицировать по своему усмотрению
#33 by Salimbek
Там sqlite так что твой текст - он хорош только для понимания сути происходящего.
#34 by КонецЦикла
Ну для этого и писал, для понимания
#35 by ildary
Простите пожалуйста, все прекрасно работает, просто я перед вызовом запроса забыл убрать строку Условия = ""; (баловался при отладке и добаловался) - и удивлялся, почему выводятся все.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям