Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 13:38

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

Автор Леонид, 26 ноя 2009, 00:29

0 Пользователей и 1 гость просматривают эту тему.

Леонид

Допустим, мы выбрали элемент, понятно чт оу него может быть несколько истоков, т.е. несколько родителей, посмотреть путь не получится, как выявить всех родителей этого элемента?

Никитина

Для получения результата в переменной СсылкаНаЭлементдолжна находиться ссылка на элемент справочника.тогда получим всех родителей элемента:
ЦитироватьМассивРодителей = Новый Массив;

Родитель = СсылкаНаЭлемент.Родитель;

Пока Не Родитель.Пустая() Цикл
   МассивРодителей.Добавить(Родитель);
   Родитель = Родитель.Родитель;
   
КонецЦикла;
+перебор родителей
ЦитироватьДля Каждого ТекущийРодитель Из МассивРодителей Цикл

   // Работа с текущим родителем.
   //   ...

КонецЦикла;
И после этого завершающим этапом будет подбор родителей в запросе:
ТекущийЭлементНоменклатуры = ЭлементНоменклатура;

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

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

Результат = Запрос.Выполнить();

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

КонецЕсли;

Выборка = Результат.Выбрать();

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

Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл
ТекущийЭлементНоменклатуры = Выборка[НомерКолонки];

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

Прервать;

Иначе
Сообщить(ТекущийЭлементНоменклатуры);

КонецЕсли;

КонецЦикла;

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

Прервать;

КонецЕсли;

КонецЦикла;



Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск