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