Уведомления
Очистить все

1С Как получить всех родителей выбранного элемента справочника?

1 Записи
1 Пользователи
0 Likes
853 Просмотры
158-150 Okolokompa Форум
(@mitozzz)
Trusted Member
Присоединился: 4 года назад
Записи: 32
Создатель темы  
МассивРодителей = Новый Массив; 
Родитель = СсылкаНаЭлемент.Родитель; 

Пока Не Родитель.Пустая() Цикл 

МассивРодителей.Добавить(Родитель); 
Родитель = Родитель.Родитель; 
КонецЦикла;

Для Каждого ТекущийРодитель Из МассивРодителей Цикл 
// Работа с текущим родителем. 
КонецЦикла;

| ВЫБРАТЬ 
| Номенклатура.Ссылка КАК Ссылка 
| ИЗ
| Справочник.Номенклатура КАК Номенклатура 
| ГДЕ 
| Номенклатура.Ссылка = &Ссылка 
| ИТОГИ ПО
| Ссылка ТОЛЬКО ИЕРАРХИЯ

ТекущийЭлементНоменклатуры = ЭлементНоменклатура; 

Запрос = Новый Запрос("ВЫБРАТЬ | Номенклатура.Родитель, | Номенклатура.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры"; 

Пока Истина Цикл 
Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры", ТекущийЭлементНоменклатуры); 
Результат = Запрос.Выполнить(); 

Если Результат.Пустой() Тогда 
Прервать; 
КонецЕсли; 

Выборка = Результат.Выбрать(); 
Выборка.Следующий(); 

Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл 

ТекущийЭлементНоменклатуры = Выборка[НомерКолонки]; 

Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда 
Прервать;
Иначе 
Сообщить(ТекущийЭлементНоменклатуры); 
КонецЕсли; 

КонецЦикла; 

Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда 
Прервать; 
КонецЕсли; 

КонецЦикла;

   
Цитата
Поделиться: