Имя: Пароль:
1C
 
Отображение дерева значений на форме
0 МойКодУныл
 
18.02.11
13:03
На форме есть табличное поле с типом данных ДеревоЗначений.
Хочу прикрутить кнопки "РазвернутьВсе", "СвернутьВсе". Вот код для "РазвернутьВсе":
Процедура КоманднаяПанельДеревоРазвернутьВсе(Кнопка)
   ЭлементыФормы.Дерево.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;    
   Обновить();
КонецПроцедуры

Все работает отлично. А вот для "СвернутьВсе" такое уже не получается:
ЭлементыФормы.Дерево.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;    
Обновить();

Оставляет дерево развернутым. Приходится вместо Обновить() заново перезаполнять дерево, тогда все работает, но это дольше.

Где я туплю? Подскажите.
1 Смешной 1С
 
18.02.11
13:16
ТабличноеПоле (TableBox)
Развернуть (Expand)
Синтаксис:
Развернуть(<Строка>, <С подчиненными>)
Параметры:
<Строка> (обязательный)
Строка табличного поля. Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.
<С подчиненными> (необязательный)
Тип: Булево. Определяет необходимость раскрытия подчиненных узлов. Истина - раскрывать подчиненные узлы, Ложь - не раскрывать подчиненные узлы.
Значение по умолчанию: Ложь
Описание:
Разворачивает узел в указанной строке дерева.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Используется в случае, если с табличным полем связано дерево значений или список справочника в виде дерева.
Пример:
// Разворот текущей строки в дереве:

Строка = ЭлементыФормы.ТабличноеПоле.ТекущаяСтрока;
ЭлементыФормы.ТабличноеПоле.Развернуть(Строка, Истина);

ТабличноеПоле (TableBox)
Свернуть (Collapse)
Синтаксис:
Свернуть(<Строка>)
Параметры:
<Строка> (обязательный)
Строка табличного поля. Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.
Описание:
Сворачивает узел в указанной строке дерева.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Используется в случае, если с табличным полем связано дерево значений или список справочника в виде дерева.
Пример:
УзелРазвернут = ЭлементыФормы.ТабличноеПоле.Развернут(Строка);
Если УзелРазвернут Тогда
ЭлементыФормы.ТабличноеПоле.Свернуть(Строка);
КонецЕсли;
2 МойКодУныл
 
18.02.11
13:22
(1) спасибо, сейчас покурю мануал. Но это, вроде, для конкретной строки(узла), а не для всего дерева в целом.
3 МойКодУныл
 
18.02.11
13:28
(2) Дерево достаточно большое и пробегать по всем строкам, как и получать данные заново, довольно долго.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший