Развернуть / свернуть программным способом строки дерева значений на форме 1С
В статье содержится информация о том как можно программно свернуть или развернуть дерево в 1С до требуемого уровня
В «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КонецПроцедуры
