Версия для печати темы (https://pro1c.org.ua/index.php?s=eea93e58d8b697afdb8d88d487f62d11&showtopic=21758)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С Предприятие 8 _ Как развернуть/свернуть дерево значений на управляемой форме

Автор: Vofka 28.01.15, 10:16

Есть дерево значений, которое надо показать на управляемой форме в развернутом виде.

Сценарий 1

Дерево заполняется единожды за сеанс работы с формой. В таком случае вопрос можно решить так:

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


Если же в процессе работы, процедура ЗаполнитьДеревоНаФорме() вызывается несколько раз, то дерево перестает разворачиваться. Не работает и в случае, если в процедуре выше поменять строки местами.

Сценарий 2

Дерево значений перезаполняется более 1 раза. Чтобы его развернуть, пишем так:

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



Как свернуть дерево значений?

Если же откуда-то вы уже имеете развернутое дерево значений, то чтобы его свернуть можно взять на вооружение код из 2 сценария, но использовать при этом метод Свернуть:

&НаКлиенте
Процедура Свернуть(Команда)
    
    Для Каждого Строка ИЗ МоеДеревоЗначений.ПолучитьЭлементы() Цикл
        Элементы.МоеДеревоЗначений.Свернуть(Строка.ПолучитьИдентификатор());
    КонецЦикла;
    
КонецПроцедуры

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua