Выбрать запросом всех родителей элемента справочника Номенклатура.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) ritd, так из (2) результата запроса выгрузить в таблицу значений и поместить потом ТЗ во временную таблицу или какие то такие костыли :
Выбрать з1.ссылка
из справочник.запчасти з,справочник.запчасти з1
Где з.ссылка=&ЗЧ и з1.ссылка в (
з.ссылка.Родитель,
з.ссылка.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель
)
Показать
Легко можно
ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура1
ПО Номенклатура.Ссылка = Номенклатура1.Родитель
СГРУППИРОВАТЬ ПО
Номенклатура.Ссылка
Показать
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)"; ГруппаСправочника = Справочники.Номенклатура.НайтиПоНаименованию("ТОВАРЫ"); Запрос.УстановитьПараметр("Родитель",ГруппаСправочника ); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка.ПолноеНаименование()); КонецЦикла;
Вот тут "Транзитивное замыкание запросом" есть универсальное решение. Там объясняются трудности этой задачи.
В статье приведена функция, которая строит и выполняет запрос, но из нее можно взять и готовый запрос, если задать предельный уровень иерархии.
Подход, приведенный по ссылке, это не банальное решение типа {Ссылка.Родитель, Ссылка.Родитель.Родитель, Ссылка.Родитель.Родитель.Родитель, ... и так далее}. За счет "матричного умножения" коротким запросом обрабатываются сколь угодно большие уровни иерархии.
В статье приведена функция, которая строит и выполняет запрос, но из нее можно взять и готовый запрос, если задать предельный уровень иерархии.
Подход, приведенный по ссылке, это не банальное решение типа {Ссылка.Родитель, Ссылка.Родитель.Родитель, Ссылка.Родитель.Родитель.Родитель, ... и так далее}. За счет "матричного умножения" коротким запросом обрабатываются сколь угодно большие уровни иерархии.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот