Выбрать запросом всех родителей элемента справочника Номенклатура.

1. ritd 25.07.13 13:17 Сейчас в теме
Можно ли запросом выбрать всех родителей, всех уровней иерархии, элемента справочника номенклатура?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alk 3 25.07.13 13:21 Сейчас в теме
ВЫБРАТЬ
	Номенклатура.Ссылка КАК Ссылка
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка = &Ссылка
ИТОГИ ПО
	Ссылка ТОЛЬКО ИЕРАРХИЯ
vipetrov2; DJDUH; +2 Ответить
4. ritd 25.07.13 14:16 Сейчас в теме
По (2) к сожалению нельзя поместить во временную таблицу. По (3) почему-то не все позиции выбирает
7OH; olbu; +2 Ответить
7. 6есик 52 26.07.13 14:36 Сейчас в теме
(4) ritd, так из (2) результата запроса выгрузить в таблицу значений и поместить потом ТЗ во временную таблицу или какие то такие костыли :

	Выбрать з1.ссылка 
	из справочник.запчасти з,справочник.запчасти з1
	Где з.ссылка=&ЗЧ и з1.ссылка в (
	з.ссылка.Родитель,
	з.ссылка.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель,
	з.ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель
	)  
Показать
3. Sasha-man 25.07.13 13:40 Сейчас в теме
Легко можно

ВЫБРАТЬ
	Номенклатура.Ссылка
ИЗ
	Справочник.Номенклатура КАК Номенклатура
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура1
		ПО Номенклатура.Ссылка = Номенклатура1.Родитель

СГРУППИРОВАТЬ ПО
	Номенклатура.Ссылка
Показать
5. ssa 25.07.13 15:39 Сейчас в теме
По-моему, универсальный вариант запроса не получится написать.
Для известного количества уровней иерархии - можно.
А в (3) запрос даст список всех элементов, которые являются родителями других элементов, а не то, что хотят в (1).
6. sommid 25.07.13 15:55 Сейчас в теме
Выкручивались табличной частью в номенклатуре с перечнем всех родителей. табличная часть заполняется перед записью номенклатуры.
8. natarezn 04.05.16 13:48 Сейчас в теме
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)"; ГруппаСправочника = Справочники.Номенклатура.НайтиПоНаименованию("ТОВАРЫ"); Запрос.УстановитьПараметр("Родитель",ГруппаСправочника ); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка.ПолноеНаименование()); КонецЦикла;
10. 32ops 191 05.05.16 07:45 Сейчас в теме
(8) Вы постоянно находите старую тему, даете ответ, обычно не связанный с вопросом. В чем прикол?
olegmedvedev; +1 Ответить
9. ildarovich 7865 04.05.16 15:12 Сейчас в теме
Вот тут "Транзитивное замыкание запросом" есть универсальное решение. Там объясняются трудности этой задачи.
В статье приведена функция, которая строит и выполняет запрос, но из нее можно взять и готовый запрос, если задать предельный уровень иерархии.

Подход, приведенный по ссылке, это не банальное решение типа {Ссылка.Родитель, Ссылка.Родитель.Родитель, Ссылка.Родитель.Родитель.Родитель, ... и так далее}. За счет "матричного умножения" коротким запросом обрабатываются сколь угодно большие уровни иерархии.
skalex; OiSorry; axelerleo; Созинов; rozer; Krasnyj; +6 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот