Функция - Возвращает ТаблицуЗначений из "бездетных" (листья всех ветвей/крона/конечные узлы) строк Дерева. Включена вспомогательная рекурсивная процедура
// Функция - Возвращает ТаблицЗначений из "бездетных" (листья всех ветвей/крона/конечные узлы) строк Дерева
// Зависит от ЗаполнитьТаблицуЛистьямиВетви()
//
// Параметры:
// Дерево - ДеревоЗначений
//
// Возвращаемое значение:
// ТаблицаЗначений -
//
Функция ТаблицаЗначенийИзКроныДереваЗначений(Дерево) Экспорт
Таблица = Новый ТаблицаЗначений;
Для каждого КолонкаДерева из Дерево.Колонки Цикл
КолонкаТаблицы = Таблица.Колонки.Добавить(КолонкаДерева.Имя, КолонкаДерева.ТипЗначения);
КонецЦикла;
Для каждого Ветвь Из Дерево.Строки Цикл
ЗаполнитьТаблицуЛистьямиВетви(Таблица, Ветвь);
КонецЦикла;
Возврат Таблица;
КонецФункции
// Процедура - Заполнить таблицу листьями ветви.
// Рекурсивная вспомогательная функция для ТаблицаЗначенийИзКроныДереваЗначений()
//
// Параметры:
// Таблица - ТаблицаЗначений -
// Ветвь - СтрокаДереваЗначений -
//
Процедура ЗаполнитьТаблицуЛистьямиВетви(Таблица, Ветвь)
ЭтоЛист = (Ветвь.Строки.Количество() = 0);
Если ЭтоЛист Тогда
Лист = Ветвь;
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Лист);
Иначе
Для Каждого Подветвь из Ветвь.Строки Цикл
ЗаполнитьТаблицуЛистьямиВетви(Таблица, Подветвь);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Орфографическая ошибка в Подветвь (найдено 2): Подветвь
Вывод данных СКД в таблицу значений (дерево)
Функция копирования колонок в таблицу или дерево значений (конструктор таблиц и деревьев значений)
Создание схемы компоновки данных программно
Преобразование Объекта ДеревоЗначений в Объект ТаблицаЗначений
МассивИзДереваЗначенийНаСервере
Транспонировать таблицу значений
#1, 07 мая 2020 21:12
Рекурсия штука здоровская, но зело опасная - можно невзначай положить сервер или рабочий процесс, если не ограничить число рекурсивных вызовов. Будьте аккуратнее.
#2, 11 мая 2020 21:17
(1) Bezeus, Спасибо. Учту. В следующий раз когда эта функция пригодится придумаю какое-нибудь ограничение на глубину