Имя: Пароль:
1C
 
Загрузка данных в дерево значений
0 _Ramzes
 
02.11.09
01:20
На произвольной форме документа создал реквизит типа дерево значений с реквизитами Номенклатура и Цена.
В процедуре ПриСозданииНаСервере делаю запрос, возвращающий результат в виде Иерархического дерева значений.

Подскажите пожалуйста через что можно загрузить эту коллекцию в ДеревоЗначений на управляемой форме.
1 _Ramzes
 
02.11.09
01:45
Я решил проблему загрузки путем написания рекурсивной процедуры

                Результат=Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
                Список=ДЗНоменклатура.ПолучитьЭлементы();
                ЗагрузитьВДеревоЗначений(Список,Результат,Неопределено);
               
КонецПроцедуры

Процедура ЗагрузитьВДеревоЗначений(Список,Результат,Родитель)
   
   Для каждого ТекСтр Из Результат.Строки Цикл
       
       Если Родитель=Неопределено Тогда
           Нов=Список.Добавить();
           Нов.Номенклатура=ТекСтр.Номенклатура;
           Нов.Цена=ТекСтр.Цена;
       Иначе
           Нов=Родитель.ПолучитьЭлементы().Добавить();
           Нов.Номенклатура=ТекСтр.Номенклатура;
           Нов.Цена=ТекСтр.Цена;
       КонецЕсли;
       Если ТекСтр.Строки.Количество()>0 Тогда
           ЗагрузитьВДеревоЗначений(Список,ТекСтр,Нов);
       КонецЕсли;
       
       
   КонецЦикла;
   
   
КонецПроцедуры

Но мне кажется что есть что-то более типовое для загрузки дерева значений.
2 Topol-M
 
02.11.09
13:28
(0) я делал так
Дерево = РеквизитФормыВЗначение("ДеревоОбъектов");
Дерево.Строки.Очистить();
... тра ля ля
ЗначениеВРеквизитФормы(Дерево,"ДеревоОбъектов");
3 Stagor
 
05.11.09
08:46
а с таблицей значения можно так?
То есть с сервера перекинуть таблицу значения на клиент?
4 Stagor
 
06.11.09
09:36
ап
5 Topol-M
 
06.11.09
14:35
(3) через временное хранилище можно
6 Stagor
 
06.11.09
15:01
(5) а можно примерчик? Что то не выходит! :)
7 Topol-M
 
06.11.09
15:20
АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ.Выгрузить(), КлючУникальности);

ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);