Типовые примеры кода если мы хотим использовать дерево на форме документа.


Примечание — Предварительно в документе создана табличная часть с реквизитами перечисляемые в «ДеревоЗаказа.Колонки.Добавить».

Пример —  Создаём и заполняем Дерево Значений

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


	//2. Записываем дерево в реквизит ХранилищеЗначения 
		
	ТекОбъект = РеквизитФормыВЗначение("Объект");
	ТекОбъект.ХранилищеЗначения = Новый ХранилищеЗначения(ДеревоЗаказа); 
	ТекОбъект.Записать();
	
	
КонецПроцедуры