1 способ
1 2 3 4 5 6 7 8 |
ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК СпрНоменклатура ГДЕ СпрНоменклатура.Ссылка = &Ссылка ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ |
Результат:

2 способ (более оптимальный по производительности)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
&НаСервере Процедура СообщитьВсехРодителей() //РеквизитСНоменклатурой - реквизит формы, тип СправочникСсылка.Номенклатура ТекущаяНоменклатура = РеквизитСНоменклатурой; Сообщить(ТекущийЭлементНоменклатуры); Запрос = Новый Запрос("ВЫБРАТЬ | СпрНоменклатура.Родитель КАК Родитель, | СпрНоменклатура.Родитель.Родитель КАК РодительРодитель, | СпрНоменклатура.Родитель.Родитель.Родитель КАК РодительРодительРодитель, | СпрНоменклатура.Родитель.Родитель.Родитель.Родитель КАК РодительРодительРодительРодитель, | СпрНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель КАК РодительРодительРодительРодительРодитель |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура |ГДЕ | СпрНоменклатура.Ссылка = &ТекущаяНоменклатура"); Пока Истина Цикл Запрос.УстановитьПараметр("ТекущаяНоменклатура", ТекущаяНоменклатура); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Прервать; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл ТекущаяНоменклатура = Выборка[НомерКолонки]; Если ТекущаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; Иначе Сообщить(ТекущаяНоменклатура); КонецЕсли; КонецЦикла; Если ТекущаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры |
Результат:
