Сворачивает узел в указанной строке дерева.
Синтаксис
Свернуть(<Строка>)Полное описание, параметры и ограничения
ТаблицаФормы.Свернуть (FormTable.Collapse)
ТаблицаФормы (FormTable)
Свернуть (Collapse)
Доступен, начиная с версии 8.2.
Синтаксис:
Свернуть(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Произвольный.
Идентификатор строки таблицы.
Описание:
Сворачивает узел в указанной строке дерева.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
Если таблица не отображается на форме, то метод не выполняет действия.
Если в таблице нет строк или передана строка, отсутствующая в таблице, то будет сгенерировано исключение.
Использование в версии:
Доступен, начиная с версии 8.2.
Описание изменено в версии 8.3.17.
Методическая информация
Практические примеры
Развернуть и свернуть собственную группу дерева по идентификатору
Работаем с группой Канцелярия, а не индексом строки произвольного дерева. Разворачивание меняет просмотр, не удаляет детей.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В учебной базе создайте новую внешнюю обработку УчебноеДерево с пустой управляемой основной формой. Каждую задачу размещайте в отдельной копии формы.
Не создавайте вручную реквизит Категории и элементы ДеревоКатегорий: код создаёт их программно.
В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре из кода. Остальные процедуры вставьте полностью на уровне модуля.
Сохраните собственную EPF и откройте в 1С через Файл → Открыть. Данные Книга/Ручка создаются только в памяти формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
Новые.Добавить(Новый РеквизитФормы("Категории", Новый ОписаниеТипов("ДеревоЗначений")));
Новые.Добавить(Новый РеквизитФормы("Название", Новый ОписаниеТипов("Строка"), "Категории"));
Новые.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число"), "Категории"));
ЭтаФорма.ИзменитьРеквизиты(Новые);
Дерево = Новый ДеревоЗначений;
Дерево.Колонки.Добавить("Название", Новый ОписаниеТипов("Строка"));
Дерево.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Группа = Дерево.Строки.Добавить();
Группа.Название = "Канцелярия";
Книга = Группа.Строки.Добавить();
Книга.Название = "Книга";
Книга.Количество = 3;
Ручка = Группа.Строки.Добавить();
Ручка.Название = "Ручка";
Ручка.Количество = 1;
Резерв = Дерево.Строки.Добавить();
Резерв.Название = "Резерв";
ЭтаФорма.ЗначениеВРеквизитФормы(Дерево, "Категории");
Таблица = Элементы.Добавить("ДеревоКатегорий", Тип("ТаблицаФормы"));
Таблица.ПутьКДанным = "Категории";
Таблица.Отображение = ОтображениеТаблицы.Дерево;
Таблица.Заголовок = "Учебные категории — данные только в памяти";
Таблица.АвтоВводНовойСтроки = Ложь;
Таблица.АвтоВводНезаполненного = Ложь;
Для Каждого ИмяКолонки Из СтрРазделить("Название,Количество", ",") Цикл
Поле = Элементы.Добавить("Категории" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "Категории." + ИмяКолонки;
Поле.Заголовок = ИмяКолонки;
КонецЦикла;
Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить своё дерево";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Таблица = Элементы.ДеревоКатегорий;
Корни = ЭтаФорма.Категории.ПолучитьЭлементы();
Если Корни.Количество() <> 2 Тогда
ВызватьИсключение "Нужны исходные две учебные группы";
КонецЕсли;
Группа = Корни.Получить(0);
Если Группа.Название <> "Канцелярия" Тогда
ВызватьИсключение "Первая группа не учебная Канцелярия";
КонецЕсли;
Ключ = Группа.ПолучитьИдентификатор();
Состояние = Таблица.Развернут(Ключ);
Если Состояние = Неопределено Тогда
Сообщить("Узел сейчас не доступен в отображаемой таблице");
Возврат;
КонецЕсли;
Таблица.Развернуть(Ключ, Истина);
Сообщить(Таблица.Развернут(Ключ) = Истина);
Таблица.Свернуть(Ключ);
Сообщить(Таблица.Развернут(Ключ) = Ложь);
Сообщить(Группа.ПолучитьЭлементы().Количество() = 2);
КонецПроцедурыРазбор по шагам
При создании задаём НеРаскрывать; пользователь видит корневые группы.
По известной собственной схеме берём Канцелярию и проверяем её имя; получаем идентификатор, не подставляем индекс 0 в Развернуть.
Развернут может вернуть Неопределено. До действий отдельно проверяем доступность состояния.
Развернуть с Истина включает подчинённые узлы; Свернуть меняет только просмотр. Дети сохраняются в данных.
Как проверить результат
Три логических сообщения Истина: раскрыт, затем свёрнут, у группы осталось два ребёнка.
Раскройте вручную после команды: Книга/3 и Ручка/1 по-прежнему существуют.
Ожидаемый результат
Разобраны начальный вид, идентификатор узла и отсутствие удаления при сворачивании.
На что обратить внимание
Для отсутствующего узла Развернуть/Свернуть могут вызвать исключение. Не храните старый ключ после замены данных.
У скрытой таблицы команды просмотра могут ничего не делать.
Сворачивание дерева не является очисткой или сохранением иерархии.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.