Рассмотрим задачу, когда на форме нужно заполнить элемент дерева значений.

Рассмотрим на примере заполнения элемента ДеревоЦен формы документа Установка цен номенклатуры конфигурации УТ 11.0.7.21. В элемент ДеревоЦен записываются данные по номенклатуре, а в подчиненные номенклатуре строки – данные по характеристикам номенклатуры. В результате в табличной части Товары документа Установка цен номенклатуры находятся строки по Номенклатуре (без характеристики) и строки по Характеристикам номенклатуры (т.е. получается как развернутый вид дерева значений ДеревоЦен).

Элемент ДеревоЦен

В рассматриваемом примере на форму документа добавлена команда пр_ЗаполнитьДеревоЦен. В процедуре описания действия команды вызывается процедура пр_ЗаполнитьДеревоЦенСервер(). Элемент ДеревоЦен заполняется товарами из ассортимента выбранного партнера, для этого в конфигурацию добавлен регистр сведений пр_АссортиментТоваров с измерениями Партнер и Характеристика; в документ Установка цен номенклатуры добавлен реквизит пр_Партнер.

Пример процедуры для заполнения элемента ДеревоЦен:

&НаСервере
Процедура пр_ЗаполнитьДеревоЦенСервер()
                Запрос = Новый Запрос;
                Запрос.Текст = "ВЫБРАТЬ
                | пр_АссортиментТоваров.Характеристика КАК Характеристика,
                | пр_АссортиментТоваров.Характеристика.Владелец КАК Номенклатура,
                | пр_АссортиментТоваров.Характеристика.Владелец.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                | пр_АссортиментТоваров.Характеристика.Владелец.ЦеноваяГруппа КАК ЦеноваяГруппа,
                | пр_АссортиментТоваров.Характеристика.Владелец.ВидНоменклатуры.ИспользованиеХарактеристик КАК ИспользованиеХарактеристик
                |ИЗ
                | РегистрСведений.пр_АссортиментТоваров КАК пр_АссортиментТоваров
                |ГДЕ
                | пр_АссортиментТоваров.Партнер = &Партнер
                |ИТОГИ
                | МАКСИМУМ(Характеристика),
                | МАКСИМУМ(ЕдиницаИзмерения),
                | МАКСИМУМ(ЦеноваяГруппа),
                | МАКСИМУМ(ИспользованиеХарактеристик)
                |ПО
                | Номенклатура";
                Запрос.УстановитьПараметр("Партнер", Объект.пр_Партнер);
                РезультатПоНоменклатуре = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
             
                ДеревоЦенДЗ = РеквизитФормыВЗначение("ДеревоЦен", Тип("ДеревоЗначений"));
                Пока РезультатПоНоменклатуре.Следующий() Цикл
                               СтрокаДерева = ДеревоЦенДЗ.Строки.Добавить();
                               СтрокаДерева.Номенклатура = РезультатПоНоменклатуре.Номенклатура;
                               //СтрокаДерева.Характеристика = Результат.Характеристика;
                               СтрокаДерева.ЕдиницаИзмерения = РезультатПоНоменклатуре.ЕдиницаИзмерения;
                               СтрокаДерева.ЦеноваяГруппа = РезультатПоНоменклатуре.ЦеноваяГруппа;
                               Если РезультатПоНоменклатуре.ИспользованиеХарактеристик = Перечисления.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.НеИспользовать Тогда
                                               СтрокаДерева.ХарактеристикиИспользуются = Ложь;
                               Иначе
                                               СтрокаДерева.ХарактеристикиИспользуются = Истина;
                               КонецЕсли;
                             
                               РезультатПоХарактеристикам = РезультатПоНоменклатуре.Выбрать();
                               Пока РезультатПоХарактеристикам.Следующий() Цикл
                                               ПодСтрокаДерева = СтрокаДерева.Строки.Добавить();
                                               ПодСтрокаДерева.Номенклатура = РезультатПоХарактеристикам.Номенклатура;
                                               ПодСтрокаДерева.Характеристика = РезультатПоХарактеристикам.Характеристика;
                                               ПодСтрокаДерева.ЕдиницаИзмерения = РезультатПоХарактеристикам.ЕдиницаИзмерения;
                                               ПодСтрокаДерева.ЦеноваяГруппа = РезультатПоХарактеристикам.ЦеноваяГруппа;
                                               Если РезультатПоХарактеристикам.ИспользованиеХарактеристик = Перечисления.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.НеИспользовать Тогда
                                                               ПодСтрокаДерева.ХарактеристикиИспользуются = Ложь;
                                               Иначе
                                                               ПодСтрокаДерева.ХарактеристикиИспользуются = Истина;
                                               КонецЕсли;
                               КонецЦикла;
                КонецЦикла;
              
                ЗначениеВРеквизитФормы(ДеревоЦенДЗ,"ДеревоЦен");
КонецПроцедуры