0

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

Иерархические данные, размещаемые в табличном поле на обычных формах или в таблице формы на управляемых формах, могут иметь множество строк и уровней вложенности. Порой бывает очень неудобно сворачивать и разворачивать строки дерева значений вручную. К счастью, встроенный язык располагает методами манипулирования такими объектами

По умолчанию, при помещении на форму табличного поля или таблицы формы, связанных с деревом значений, оно показывается в свернутом виде. Если нужно, чтобы при открытии формы дерево значений показывалось в раскрытом виде, проще всего воспользоваться свойством НачальноеОтображениеДерева таблицы (табличного поля). Оно может принимать одно из следующих значений:

НеРаскрывать
(NoExpand)
отображать строки дерева в свернутом виде (по умолчанию)
РаскрыватьВерхнийУровень
(ExpandTopLevel)
отображать развернутыми строки дерева значений первого уровня
РаскрыватьВсеУровни
(ExpandAllLevels)
отображать развернутыми все строки дерева значений
Внимание! Программная установка свойства НачальноеОтображениеДерева на клиенте в режиме управляемого приложения неизбежно ведет к вызову сервера

Теперь рассмотрим варианты программного сворачивания\разворачивания строк дерева значений. Реализация этих методов может отличаться для обычных и управляемых форм.

Дерево значений на управляемых формах

Пример для сворачивания всех строк дерева значений:

//получаем подчиненные элементы ДанныеФормыДерево
СтрокиДерева = ДеревоДокументов.ПолучитьЭлементы();
Для каждого СтрокаДерева Из СтрокиДерева Цикл
    //получаем идентификатор строки в таблице формы
    СтрокаДереваИД = СтрокаДерева.ПолучитьИдентификатор();
    //проверяем состояние строки
    Если Элементы.ДеревоДокументов.Развернут(СтрокаДереваИД) = Истина Тогда
        //сворачиваем строку дерева
        Элементы.ДеревоДокументов.Свернуть(СтрокаДереваИД);
    КонецЕсли;
КонецЦикла;

Пример для разворачивания всех строк дерева значений верхнего уровня:

//получаем подчиненные элементы ДанныеФормыДерево
СтрокиДерева = ДеревоДокументов.ПолучитьЭлементы();
Для каждого СтрокаДерева Из СтрокиДерева Цикл
    //получаем идентификатор строки в таблице формы
    СтрокаДереваИД = СтрокаДерева.ПолучитьИдентификатор();
    //проверяем состояние строки
    Если Элементы.ДеревоДокументов.Развернут(СтрокаДереваИД) = Ложь Тогда
        //разворачиваем строку дерева
        Элементы.ДеревоДокументов.Развернуть(СтрокаДереваИД);
    КонецЕсли;
КонецЦикла;

Если нужно сворачивать и разворачивать вложенные строки, потребуется доработать данный код, добавив рекурсию

Дерево значений на обычных формах

С обычными формами дела обстоят проще: обращение к серверу для обычных форм не так критично, как для управляемых, поэтому раскрыть все строки дерева можно так:

ЭлементыФормы.ДеревоДокументов.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;

Но в большинстве случаев лучше использовать следующий код, который гарантированно работает

//свернуть строки верхнего уровня
Для каждого ПодчиненнаяСтрока Из ДеревоДокументов.Строки Цикл
    Если ЭлементыФормы.ДеревоДокументов.Развернут(ПодчиненнаяСтрока) Тогда
        ЭлементыФормы.ДеревоДокументов.Свернуть(ПодчиненнаяСтрока);
    КонецЕсли;
КонецЦикла;
//развернуть строки верхнего уровня
Для каждого ПодчиненнаяСтрока Из ДеревоДокументов.Строки Цикл
    Если ЭлементыФормы.ДеревоДокументов.Развернут(ПодчиненнаяСтрока) = Ложь Тогда
        ЭлементыФормы.ДеревоДокументов.Развернуть(ПодчиненнаяСтрока);
    КонецЕсли;
КонецЦикла;

Поделиться страницей в соц.сетях

Метки: Метки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *