Имя: Пароль:
1C
1С v8
Обход дерева значений на клиенте / развернуть многоуровневое дерево на клиенте
0 virtus
 
10.07.14
18:52
Подскажите, пожалуйста, как обойти дерево значений на клиенте. Или как развернуть те узлы дерева, которые были развернуты до пересчетов итогов в серверной процедуре.

У меня в серверной процедуре обсчитываются итоги. После этого я используя метод ЗначениеВРеквизитФормы(Дерево, "ДеревоЗначений") заполняю дерево на форме. При этом оно становится свернутым.

А я не хочу, чтоб оно сворачивалось. Я пробывал обойти его на клиенте после это и развернуть, но так не получается(нет подходящих методов)

Так не работает, в элементах дерева хранятся только корневые узлы, а в дочерние я попасть не могу:

ЭлементыДерева = Дерево.ПолучитьЭлементы();
    Для Каждого ЭлементДерева Из ЭлементыДерева Цикл
        Элементы.Дерево.Развернуть(ЭлементДерева.ПолучитьИдентификатор(), Истина);
    КонецЦикла;

Как можно это решить?

Спасибо.
1 vasmedv
 
22.07.14
05:50
Нежно сделать рекурсию:

&НаКлиенте
Процедура Развернуть(ДеревоПодчиненности)
    Для Каждого Строка Из ДеревоПодчиненности.ПолучитьЭлементы() Цикл    
        ИдентификаторСтроки=Строка.ПолучитьИдентификатор();
        Элементы.ДеревоПодчиненности.Развернуть(ИдентификаторСтроки);
        Развернуть(Строка);
    КонецЦикла;  
КонецПроцедуры
2 butterbean
 
22.07.14
08:15
(1) не, лучше грубо запомнить все развернутые узлы, а потом бесцеремонно развернуть их
3 vasmedv
 
25.07.14
12:36
(1),(2) Не Нежно, а Нужно!