При программном создании элементов на управляемой форме разработчики часто сталкиваются с ситуацией, когда у созданной группы элементов не удается сразу найти привычные свойства, доступные в конфигураторе, например свойство Поведение или управление возможностью свертывания. Разберем по шагам, почему так происходит, как правильно инициализировать свертываемую группу и как управлять ее состоянием из встроенного языка 1С.
Когда мы добавляем элемент с типом ГруппаФормы через коллекцию ЭтаФорма.Элементы.Вставить() или ЭтаФорма.Элементы.Добавить(), изначально создается базовый объект группы. В синтакс-помощнике у объекта ГруппаФормы действительно нет свойства Поведение.
Специфические свойства появляются только тогда, когда элементу явно назначен определенный вид с помощью свойства Вид. Для обычной группы подключается механизм Расширение обычной группы, в котором и содержатся свойства Поведение, ОтображениеУправления, ЗаголовокСвернутогоОтображения и другие параметры.
Рассмотрим подробнее правильный алгоритм создания свертываемой группы на форме:
ГруппаФормы в коллекцию элементов формы.ВидГруппыФормы.ОбычнаяГруппа, чтобы активировать расширение обычной группы.Поведение в значение ПоведениеОбычнойГруппы.Свертываемая.Посмотрим на пример программного создания группы:
// Добавляем новую группу в форму
ГруппаПроводок = ЭтаФорма.Элементы.Вставить("ГруппаПроводок", Тип("ГруппаФормы"), ЭтаФорма, Элементы.Реквизит1);
// Подключаем расширение обычной группы
ГруппаПроводок.Вид = ВидГруппыФормы.ОбычнаяГруппа;
// Задаем поведение группы как свертываемой
ГруппаПроводок.Поведение = ПоведениеОбычнойГруппы.Свертываемая;
// Задаем текст заголовка
ГруппаПроводок.Заголовок = "Проводки (нажмите сюда, чтобы свернуть или развернуть)";
Проанализируем сопутствующие свойства, которые предоставляет расширение обычной группы для более удобной настройки пользовательского интерфейса:
ОтображениеУправленияОбычнойГруппы (например, Картинка или ГиперссылкаЗаголовка).УстановитьДействие(), что удобно для динамической загрузки тяжелых данных только в момент открытия группы.Разберем пример расширенной настройки оформления:
ГруппаПроводок.ЗаголовокСвернутогоОтображения = "Проводки (скрыто, нажмите для показа)";
ГруппаПроводок.ОтображениеУправления = ОтображениеУправленияОбычнойГруппы.ГиперссылкаЗаголовка;
ГруппаПроводок.Объединенная = Истина;
Выясним причину, почему разработчикам не удается напрямую записать булево свойство свернутости. Свойство «Свернута» доступно для редактирования только интерактивно в палитре свойств конфигуратора (определяет начальное состояние при открытии), но напрямую через точку во встроенном языке оно недоступно на запись.
Для программного управления состоянием обычной свертываемой группы платформа версии 8.3.12 и выше предоставляет специализированные методы:
Скрыть() — программно сворачивает группу элементов.Показать() — разворачивает скрытую ранее группу.Скрыта() — возвращает булево значение (Истина, если группа свернута, и Ложь, если развернута).Посмотрим, как проверить состояние группы и программно ее свернуть:
// Проверяем, развернута ли группа, и сворачиваем ее при необходимости
Если Не Элементы.ГруппаПроводок.Скрыта() Тогда
Элементы.ГруппаПроводок.Скрыть();
КонецЕсли;
Использование связки свойства Вид, системного перечисления ПоведениеОбычнойГруппы и методов Скрыть() / Показать() позволяет полностью контролировать динамическое поведение панелей интерфейса на управляемых формах 1С.