Как программно свернуть обычную группу на управляемой форме в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При динамическом создании элементов интерфейса в управляемом приложении 1С часто возникает необходимость не просто добавить группу с поведением ПоведениеОбычнойГруппы.Свертываемая, но и сразу сделать её свернутой по умолчанию или свернуть при наступлении определенного события в коде.

Рассмотрим пример кода, с помощью которого разработчики обычно создают такую группу программно:


ГруппаФинДокументы = Элементы.Добавить("ГруппаФинДокументы_" + СокрЛП(НомерЗаказа), Тип("ГруппаФормы"), ГруппаТоварыОбщаяФин);
ГруппаФинДокументы.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаФинДокументы.Заголовок = "Документы";
ГруппаФинДокументы.ОтображатьЗаголовок = Истина;
ГруппаФинДокументы.Доступность = Истина;
ГруппаФинДокументы.Поведение = ПоведениеОбычнойГруппы.Свертываемая;

После выполнения этого кода группа появляется на форме и имеет кнопку сворачивания, однако по умолчанию она отображается в развернутом состоянии. Выясним, можно ли управлять состоянием сворачивания программно и какие альтернативные варианты решения существуют.

Ограничения платформы 1С:Предприятие

Проанализируем возможности работы с объектом ГруппаФормы во встроенном языке 1С. К сожалению, платформой установлены жесткие ограничения:

  1. Отсутствие свойства состояния сворачивания во встроенном языке: Свойство Свернута доступно для настройки только интерактивно в Конфигураторе через палитру свойств элемента формы. Во встроенном языке для объекта ГруппаФормы такое свойство отсутствует — его нельзя ни прочитать, ни изменить во время выполнения программы.
  2. Отсутствие штатного метода сворачивания: У объекта ГруппаФормы в обычном режиме исполнения нет методов Свернуть() или Развернуть(). Метод Свернуть() существует только у специального объекта ТестируемаяГруппаФормы, который применяется исключительно в механизме автоматизированного тестирования.
  3. Отсутствие событий интерфейса: Платформа не генерирует клиентских событий при нажатии пользователем на значок свертывания/разворачивания группы, а также не позволяет узнать актуальное текущее состояние группы на клиенте.

Таким образом, прямого способа программно свернуть динамически созданную ГруппаФормы во время работы пользователя не существует.

Альтернативные варианты решения задачи

Если бизнес-логика требует скрывать содержимое группы при открытии формы или по команде, разберем по шагам проверенные обходные пути.

Вариант 1. Управление видимостью содержимого

Вместо использования сворачиваемой группы создаем обычную группу и управляем свойством Видимость для ее содержимого или для самой группы. Переключение состояния выполняется с помощью гиперссылки или кнопки-переключателя.

Рассмотрим пример реализации:


&НаКлиенте
Процедура ПереключитьВидимостьГруппы(Команда)
    // Инвертируем видимость группы с документом
    Элементы.ГруппаФинДокументы.Видимость = НЕ Элементы.ГруппаФинДокументы.Видимость;
    
    // Меняем заголовок кнопки в зависимости от состояния
    Если Элементы.ГруппаФинДокументы.Видимость Тогда
        Элементы.КнопкаПереключатель.Заголовок = "Скрыть документы";
    Иначе
        Элементы.КнопкаПереключатель.Заголовок = "Показать документы";
    КонецЕсли;
КонецПроцедуры

Вариант 2. Использование группы страниц

Посмотрим на решение с помощью элемента вида Страницы. Этот подход позволяет визуально скрыть содержимое группы без изменения структуры формы:

  1. Создается группа формы вида Страницы и отображение страниц устанавливается в ОтображениеСтраницФормы.Нет (или Закладки).
  2. Внутри создаются две страницы (вида Страница): первая — с подробным содержимым, вторая — пустая или с кратким резюме.
  3. Программное сворачивание/разворачивание сводится к смене текущей страницы через свойство ТекущаяСтраница.

// Для "сворачивания" переключаем на пустую страницу
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаСвернута;

// Для "разворачивания" возвращаем основную страницу
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаОсновная;

Вариант 3. Динамическая смена свойства Поведение

В некоторых сценариях помогает программное изменение свойства Поведение группы. Мы можем переключать значения системного перечисления ПоведениеОбычнойГруппы между Обычная, Свертываемая и Всплывающая:

Элементы.ГруппаФинДокументы.Поведение = ПоведениеОбычнойГруппы.Всплывающая;

Это изменяет визуальный режим отображения панели на форме, хотя и не является прямым аналогом состояния «свернута» для обычной группы.

← На главную