Логотип 2А СОФТ

Развернуть / свернуть программным способом строки дерева значений на форме 1С

1С

В статье содержится информация о том как можно программно свернуть или развернуть дерево в 1С до требуемого уровня

2 мин
Доступно для: Программист
статья

В «1С:Предприятие» чтобы развернуть строки таблицы формы с отображением «Дерево» необходимо использовать метод «Развернуть». Согласно «Синтакс-помощнику» Платформы 1С 8, такие методы есть:

Синтаксис:
Развернуть(<ИдентификаторСтроки>, <СПодчиненными>)

Параметры:
ИдентификаторСтроки (обязательный)
Тип: Произвольный.
Идентификатор строки таблицы.

<СПодчиненными> (необязательный)
Тип: Булево.
Определяет необходимость раскрытия подчиненных узлов. Истина - раскрывать подчиненные узлы, Ложь - не раскрывать подчиненные узлы. Значение по умолчанию: Ложь.

Описание:
Разворачивает узел в указанной строке дерева.

Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

В «1С:Предприятие» чтобы свернуть строки таблицы формы необходимо использовать метод «Свернуть». Также рекомендуем ознакомиться в «Синтакс-помощнике» Платформы 1С 8 с методами «Развернут» и «Свернут». С помощью этих методов определяется, находится ли узел дерева в развёрнутом или свёрнутом состоянии в указанной строке.

Пример

Задача: развернуть дерево до последнего узла. На последнем уровне находится расшифровка по документам, которую раскрывать не требуется.

Процедура “РазвернутьВсеСтрокиДерева” рекурсивно развернет все строки дерева, кроме последнего узла:

 1&НаКлиенте
 2Процедура РазвернутьВсеСтрокиДерева(СтрокиДЗ)
 3	Строки = СтрокиДЗ.ПолучитьЭлементы();
 4    Для Каждого СтрокаДерева Из Строки Цикл
 5        
 6	    СтрокаДереваИД = СтрокаДерева.ПолучитьИдентификатор();
 7		
 8        Дочерние = СтрокаДерева.ПолучитьЭлементы();
 9		РазвернутьДальше = Ложь;
10		//проверим дочернии узлы. Последние они или нет
11		Для Каждого ПодчиненнаяСтрока Из Дочерние Цикл
12			ПодчиненнаяСтрокаДочерние = ПодчиненнаяСтрока.ПолучитьЭлементы();
13			//у строки дерева еще есть подчиненные, это не последний узел. дальше можно не проверять
14			Если ПодчиненнаяСтрокаДочерние.Количество() > 0 Тогда
15				РазвернутьДальше = Истина;
16				Прервать;
17			КонецЕсли;	
18		КонецЦикла;			
19		
20		Если РазвернутьДальше Тогда 
21            РазвернутьВсеСтрокиДерева(СтрокаДерева);
22		    //можно проверить состояние строки, но мы закомментируем эту возможность
23			//оставим как пример
24		    //Если СтрокаДерева.Развернут(СтрокаДереваИД) = Ложь Тогда
25		         Элементы.дзРезультат.Развернуть(СтрокаДереваИД);
26		    //КонецЕсли;		
27		КонецЕсли;	
28    КонецЦикла;
29КонецПроцедуры

Пример как можно вызвать процедуру “РазвернутьВсеСтрокиДерева” (обработчик команды формы “РазвернутьДЗ”):

1&НаКлиенте
2Процедура РазвернутьДЗ(Команда)
3	РазвернутьВсеСтрокиДерева(дзРезультат);
4КонецПроцедуры
Результат процедуры “РазвернутьВсеСтрокиДерева”