В первую функцию передаем - ДеревоЗначений, во вторую (рекурсивную) функцию передаем созданный объект встроенного языка - ТаблицаЗначений, и строку дерева; В место вызова функции ДеревоЗначенийВТаблицуЗначений() произойдет возврат ТаблицыЗначений.
&НаСервере
Функция ДеревоЗначенийВТаблицуЗначений(Знач ДеревоЗначений)
ТаблицаТоваров = Новый ТаблицаЗначений;
//заполним колонки;
Для каждого Колонка Из ДеревоЗначений.Колонки Цикл
ТаблицаТоваров.Колонки.Добавить(Колонка.Имя);
КонецЦикла;
//произведем вызов вспомогательной рекурсивной функции;
Для каждого Строка Из ДеревоЗначений.Строки Цикл
РекурсивноеЗаполнениеТаблицыЗначений(ТаблицаТоваров, Строка);
КонецЦикла;
Возврат ТаблицаТоваров;
КонецФункции // ()
&НаСервере
Процедура РекурсивноеЗаполнениеТаблицыЗначений(ТаблицаЗначений, СтрокаДерева)
//условие выхода из рекурсии;
Если СтрокаДерева.Строки.Количество () = 0 Тогда
Возврат;
КонецЕсли;
Для каждого Строка Из СтрокаДерева.Строки Цикл
НоваяСтрока = ТаблицаЗначений.Добавить();
Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл
НоваяСтрока[Колонка.Имя] = Строка[Колонка.Имя];
КонецЦикла;
РекурсивноеЗаполнениеТаблицыЗначений(ТаблицаЗначений, Строка);
КонецЦикла;
КонецПроцедуры // ()
Функция копирования колонок в таблицу или дерево значений (конструктор таблиц и деревьев значений)
Выгрузить Таблицу значений в массив структур (для передачи сервер - клиент)
Вывод данных СКД в таблицу значений (дерево)
Таблица значений в табличный документ
ТаблицаЗначений из кроны ДереваЗначений
Создание схемы компоновки данных программно