Типовые примеры кода если мы хотим использовать дерево на форме документа.
Примечание — Предварительно в документе создана табличная часть с реквизитами перечисляемые в «ДеревоЗаказа.Колонки.Добавить».
Пример — Создаём и заполняем Дерево Значений
&НаСервере
Процедура ЗаполнитьДеревоЗначенийНаСервере()
//1. Создадём дерево значений и заполняем
//Описание типов для дерева
СписокТипов = Новый Массив;
СписокТипов.Добавить(Тип("СправочникСсылка.ЩитыНазвания"));
СписокТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));
ОписаниеСоставногоТипа = Новый ОписаниеТипов(СписокТипов);
//Создадём дерево значений
ДеревоЗаказа = Новый ДеревоЗначений;
ДеревоЗаказа.Колонки.Добавить("Номенклатура", ОписаниеСоставногоТипа);
ДеревоЗаказа.Колонки.Добавить("Количество");
ДеревоЗаказа.Колонки.Добавить("ПолноеНаименование");
ДеревоЗаказа.Колонки.Добавить("КоличествоВсего");
ДеревоЗаказа.Колонки.Добавить("Время");
ДеревоЗаказа.Колонки.Добавить("ВремяВсего");
//Описание тивов для подставноки
ОписаниеЩита = Новый ОписаниеТипов("СправочникСсылка.ЩитыНазвания");
ОписаниеНоменклатуры = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
КолЩитов = 0;
КолНомен = 0;
//заполним щиты уровень 3 и 2
Для каждого СтрокаТЧ Из Объект.ТЧСтруктураЗаказа Цикл
Если СтрокаТЧ.УровеньВложенности = 3 ИЛИ СтрокаТЧ.УровеньВложенности = 2 Тогда
ЩитСтрока = ДеревоЗаказа.Строки.Добавить();
ЩитСтрока.Номенклатура = ОписаниеЩита.ПривестиЗначение(СтрокаТЧ.Номенклатура);
ЩитСтрока.Количество = СтрокаТЧ.Количество;
ЩитСтрока.Время = СтрокаТЧ.СборкаЧасы;
ЩитСтрока.ВремяВсего = СтрокаТЧ.Количество * СтрокаТЧ.СборкаЧасы;
КолЩитов = КолЩитов + 1;
//Найдем подчиненые строки и добавим к строке
Для каждого ПодСтока Из Объект.ТЧСтруктураЗаказа Цикл
Если ПодСтока.ЩитРодитель = СтрокаТЧ.Номенклатура Тогда
ПодчиненаяСтрока = ЩитСтрока.Строки.Добавить();
ПодчиненаяСтрока.Номенклатура = ОписаниеНоменклатуры.ПривестиЗначение(ПодСтока.Номенклатура);
ПодчиненаяСтрока.ПолноеНаименование = ПодСтока.Номенклатура;
ПодчиненаяСтрока.Количество = ПодСтока.Количество;
ПодчиненаяСтрока.КоличествоВсего = ПодСтока.Количество * ЩитСтрока.Количество;
КолНомен = КолНомен + 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ЗначениеВРеквизитФормы(ДеревоЗаказа,"ТЧДеревоЗаказа"); //выгрузим в форму
Сообщить("Заполнено щитов " + КолЩитов + " и " + КолНомен + " позиций номенклатуры к ним");
//2. Записываем дерево в реквизит ХранилищеЗначения
ТекОбъект = РеквизитФормыВЗначение("Объект");
ТекОбъект.ХранилищеЗначения = Новый ХранилищеЗначения(ДеревоЗаказа);
ТекОбъект.Записать();
КонецПроцедуры