Есть заполненное дерево значений типа:
-БазаОтправитель
.....-БазаПолучатель
-БазаОтправитель
.....-БазаПолучатель
...
Мне нужно эти значения записать в регистр сведений:
Отправитель|Получатель|ПланОбмена|ЭтапОбмена|
И я вот не пойму, как мне обходить значения верхнего и нижнего уровней??
-БазаОтправитель
.....-БазаПолучатель
-БазаОтправитель
.....-БазаПолучатель
...
Мне нужно эти значения записать в регистр сведений:
Отправитель|Получатель|ПланОбмена|ЭтапОбмена|
И я вот не пойму, как мне обходить значения верхнего и нижнего уровней??
&НаСервере
Процедура ОкНаСервере()
ЭлементыДерева = ИерархияИБ.ПолучитьЭлементы();
Если ЭлементыДерева.Количество() > 0 Тогда
НЗ = РегистрыСведений.УчастникиПлановОбмена.СоздатьНаборЗаписей();
НЗ.Отбор.ПланОбмена.Установить(ПланОбмена);
НЗ.Отбор.ЭтапОбмена.Установить(ЭтапОбмена);
Для Каждого Стр Из ЭлементыДерева Цикл
СтрокаЗапись = НЗ.Добавить();
СтрокаЗапись.ПланОбмена = ПланОбмена;
СтрокаЗапись.ЭтапОбмена = ЭтапОбмена;
СтрокаЗапись.Отправитель = //Элемент дерева значений верхнего уровня
СтрокаЗапись.Получатель = // Элемент дерева значений нижнего уровня
КонецЦикла;
Попытка
НЗ.Записать();
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("Не удалось записать состав участников по этапу ""%1"". Причина" + Символы.ПС + ОписаниеОшибки(), ЭтапОбмена));
КонецПопытки;
Иначе
Сообщить("Необходимо выбрать участников обмена!");
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Рекурсия в 1С и управление деревом значений
- Рекурсивный обход дерева значений с пересчетом иерархических итогов группировок
- Конструктор результата системы компоновки данных для работы с деревом значений в тонком клиенте.
- Просто о дереве значений
- Вывод условного оформления дерева значений или табличной части в эксель
Найденные решения
(4)
УзлыОтправителей = ИерархияИБ.ПолучитьЭлементы();
Для Каждого УзелОтправителя Из УзлыОтправителей Цикл
УзлыПолучателей = УзелОтправителя.ПолучитьЭлементы();
Для Каждого УзелПолучателя Из УзлыПолучателей Цикл
// тут в переменной УзелОтправителя будет узел верхнего уровня, а в переменной УзелПолучателя - один из его получателей (вложенного уровня)
КонецЦикла;
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
да также через получить элементы, только по родителю.
Если количество уровней иерерхии неопределено, то делать рекурсивную функцию.
Если их всего 2, то получай подчиненного и все.
И я вот не пойму, как мне обходить значения верхнего и нижнего уровней??
да также через получить элементы, только по родителю.
Если количество уровней иерерхии неопределено, то делать рекурсивную функцию.
Если их всего 2, то получай подчиненного и все.
(4)
УзлыОтправителей = ИерархияИБ.ПолучитьЭлементы();
Для Каждого УзелОтправителя Из УзлыОтправителей Цикл
УзлыПолучателей = УзелОтправителя.ПолучитьЭлементы();
Для Каждого УзелПолучателя Из УзлыПолучателей Цикл
// тут в переменной УзелОтправителя будет узел верхнего уровня, а в переменной УзелПолучателя - один из его получателей (вложенного уровня)
КонецЦикла;
КонецЦикла;
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот