Имя: Пароль:
1C
1С v8
УФ Дерево.Развернуть()
0 ZaprosMan
 
09.04.13
16:20
Всем привет.
не получается развернуть дерево в нужном месте.
подскажите кто знает что не так.

Есть УФ ЭлементФормы тип(Дерево).

при изменении реквизита

&НаКлиенте
Процедура ДеревоОперацийСИзменениямиТрудоемкостьПриИзменении(Элемент)
   УИД = Элементы.ДеревоОперацийСИзменениями.ТекущиеДанные.УИД;
   ОчиститьМассивСтрок();
   ЗаполнитьТрудоемкостьИВремяВыполнения();
   РазвернутьДерево(УИД);
КонецПроцедуры

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

&НаКлиенте
Процедура РазвернутьДерево(УИД)
   ДЗ = ДеревоОперацийСИзменениями.ПолучитьЭлементы();
   Элементы.ДеревоОперацийСИзменениями.Развернуть(ПолучитьСтрокуФормыПоУИД(ДЗ,УИД),Ложь);
КонецПроцедуры

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


////////////////////////////////////////////////////////
Смысл в том, что не разворачивает дерево.
После выполнения процедуры, дерево не разворачивается.
Строка.ПолучитьИдентификатор() дает число!
Что тут не так?
Заранее благодарю!
1 ZaprosMan
 
09.04.13
16:29
Наверное вопрос не понятен?
В дереве в подчиненной строке,
при изменении нужно подсчитать сумму по всем подчиненным.
Вывести её в корне дерева.
И раскрыть дерево ровно в том месте где вносились изменения.
2 ZaprosMan
 
09.04.13
16:43
Может просто есть у кого то опыт работы с деревьями в УФ
И их разворачивания вручную?
3 GANR
 
09.04.13
16:49
(2) кусок кода 1,5-летней давности

&НаСервере
Процедура ЗаполнитьДерево()

   ...

   //"операция" по разворачиванию дерева
   Элементы.ЭлементыНСИ.Отображение = ОтображениеТаблицы.Список;
   Элементы.ЭлементыНСИ.Отображение = ОтображениеТаблицы.Дерево;

КонецПроцедуры
4 GANR
 
09.04.13
16:52
(0) код ниже разворачивает дерево???

   Элементы.ТвоеДерево.Отображение = ОтображениеТаблицы.Список;
   Элементы.ТвоеДерево.Отображение = ОтображениеТаблицы.Дерево;
5 Зойч
 
09.04.13
16:54
Для Каждого СтрокаДерева Из ДеревоИнтерфейса.ПолучитьЭлементы() Цикл
       Элементы.ДеревоИнтерфейса.Развернуть(СтрокаДерева.ПолучитьИдентификатор());
   КонецЦикла;
6 GANR
 
09.04.13
16:55
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.