К статье
Практический материал

Разработка и Конфигурация · 10 мин

1С управляемая форма: как добавить разделитель

Как добавить разделитель на управляемую форму в 1С: программное создание декорации, работа через конфигуратор, разделители в командной панели и типичные ошибки.

Разделитель на управляемой форме 1С — это визуальный элемент, который отделяет одни блоки интерфейса от других: поля ввода, группы кнопок в командной панели, колонки таблицы. В отличие от обычных форм, где разделитель можно было «кинуть» мышью, в управляемых формах платформа сама управляет компоновкой, поэтому добавить разделитель приходится либо через структуру элементов в конфигураторе, либо программно в модуле формы.

Задача встречается в трёх типовых сценариях. Первый — разделение команд в командной панели или контекстном меню, чтобы визуально сгруппировать кнопки. Второй — отделение блоков полей друг от друга, для чего обычно используют декорацию вида «Надпись» или группу с отображением. Третий — разделитель при программном создании элементов формы в обработчике ПриСозданииНаСервере, когда интерфейс строится динамически.

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

Как устроены разделители в управляемом интерфейсе

В управляемых формах платформа 1С использует декларативную модель: разработчик описывает состав и свойства элементов, а расположение, отступы и выравнивание рассчитывает сама платформа. Поэтому «нарисовать линию» в произвольном месте нельзя — можно только добавить элемент, который платформа отобразит как разделитель.

Фактически разделитель существует в двух ипостасях. Первая — разделитель в меню и командной панели: это не отдельный элемент, а способ группировки кнопок. Вторая — визуальное отделение блоков формы, которое достигается декорациями, группами с заголовком или группами с рамкой. Понимание этой разницы избавляет от бесплодных попыток найти несуществующий элемент в палитре.

Разделитель в командной панели и контекстном меню

Самый частый случай — визуально разделить кнопки в командной панели формы, подменю или контекстном меню таблицы. Для этого в конфигураторе в дереве элементов формы внутрь командной панели добавляется элемент типа «Группа» с видом «Группа кнопок». Кнопки, помещённые в разные такие группы, отделяются друг от друга вертикальной чертой — это и есть разделитель.

Порядок действий в конфигураторе: откройте форму, найдите в дереве элементов «КоманднаяПанель», добавьте в неё группу кнопок (правая кнопка мыши → Добавить → Группа → Группа кнопок), затем перетащите в эту группу те кнопки, которые должны стоять после разделителя. Кнопки вне группы и кнопки внутри группы будут визуально разделены.

В контекстном меню таблицы механика та же: группы кнопок внутри контекстного меню отображаются как горизонтальные линии между пунктами. Это стандартный способ отделить, например, команды изменения данных от команд отчётности.

Разделитель в командной панели через конфигуратор
  1. 1
    Откройте управляемую форму в конфигураторе
  2. 2
    В дереве элементов найдите КоманднаяПанель
  3. 3
    Добавьте в неё элемент Группа с видом ГруппаКнопок
  4. 4
    Перетащите в новую группу кнопки, которые должны идти после разделителя
  5. 5
    Обновите конфигурацию и проверьте вид панели в режиме предприятия

Программное добавление разделителя в меню

Если элементы формы создаются динамически — например, в универсальной обработке или при формировании меню по данным настроек, — разделитель добавляется кодом. Используется метод Элементы.Добавить() с типом Тип("ГруппаФормы") и установкой вида группы.

// Создаём кнопку до разделителя

НоваяКнопка = Элементы.Добавить("КнопкаПечать", Тип("КнопкаФормы"), Элементы.КоманднаяПанель);

НоваяКнопка.ИмяКоманды = "Печать";

// Группа-разделитель

ГруппаРазделитель = Элементы.Добавить("ГруппаРазделитель", Тип("ГруппаФормы"), Элементы.КоманднаяПанель);

ГруппаРазделитель.Вид = ВидГруппыФормы.ГруппаКнопок;

// Кнопка после разделителя — добавляется в группу

ВтораяКнопка = Элементы.Добавить("КнопкаОтправить", Тип("КнопкаФормы"), ГруппаРазделитель);

ВтораяКнопка.ИмяКоманды = "Отправить";

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

bsl
ГруппаРазделитель = Элементы.Добавить("ГруппаРазделитель", Тип("ГруппаФормы"), Элементы.КоманднаяПанель);
ГруппаРазделитель.Вид = ВидГруппыФормы.ГруппаКнопок;

Визуальное отделение блоков полей на форме

Когда нужно отделить не кнопки, а области ввода — например, блок «Основные реквизиты» от блока «Дополнительно» — применяются другие приёмы. Самый простой: декорация вида «Надпись» с пустым текстом или с текстом-заголовком, для которой задано свойство оформления. Декорация с заголовком визуально работает как подпись секции и отделяет содержимое.

Второй приём — обычная группа с включённым отображением заголовка или рамки. Группа с заголовком даёт чёткую визуальную границу и одновременно структурирует форму: при сворачивании группы пользователь скрывает целый блок. Это предпочтительный способ, если блоков много и форма перегружена.

Третий вариант — пустая горизонтальная группа минимальной высоты, которая создаёт отступ между блоками. Это ближайший аналог «линии» из обычных форм, хотя чистой линии без отступов платформа не рисует. Учитывайте, что внешний вид зависит от клиента: в тонком клиенте и веб-клиенте отступы и рамки могут выглядеть по-разному.

Способы визуального разделения блоков

Группа с заголовком

Подходит для смысловых секций; даёт подпись и возможность сворачивания. Ограничение: занимает больше места.

Декорация-надпись

Подходит для лёгкого отделения и пояснений. Ограничение: не группирует элементы логически.

Пустая группа-отступ

Подходит как замена «линии» между блоками. Ограничение: вид зависит от клиента, точной тонкой линии не даёт.

Разделитель в динамически создаваемых формах: нюансы

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

Дополнительное ограничение — изменение программно созданных элементов в режиме «Изменить форму» у пользователя. Если разделители и группы добавлены кодом, пользователь не сможет перетащить их в стандартном диалоге настройки формы так же свободно, как элементы, заданные в конфигураторе. Для форм, которые пользователи настраивают сами, статическое описание предпочтительнее.

Типичные ошибки и как их избежать

Самая частая ошибка — поиск несуществующего элемента «Разделитель» в палитре и попытка использовать декорацию вида «Картинка» с изображением линии. Такой костыль ломается при смене масштаба, темы оформления и в веб-клиенте. Правильный путь — группы кнопок для меню и группы с заголовком для блоков.

Вторая ошибка — добавление кнопок не в ту группу. Если после создания группы-разделителя кнопку добавить в командную панель, а не в группу, разделитель визуально «съедет»: кнопка окажется до разделителя. Всегда проверяйте третий параметр метода Элементы.Добавить() — родительский элемент.

Третья ошибка — попытка добавить элементы в обработчике ПриОткрытии на клиенте. Код выполнится с ошибкой или молча не сработает, потому что изменение структуры формы возможно только на сервере до отображения формы пользователю.

Типичные ошибки
01
Искать элемент «Разделитель» в палитре — его нет, используется группа кнопок или декорация
02
Добавлять кнопки в командную панель вместо группы-разделителя — порядок отображения нарушается
03
Пытаться создать элементы на клиенте в ПриОткрытии — структура формы меняется только на сервере
04
Использовать картинку-линию вместо штатных средств — ломается в веб-клиенте и при смене масштаба

Проверка результата

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

Если форма используется в веб-клиенте или на мобильном клиенте, проверьте отображение и там: группы кнопок и декорации могут отрисовываться с другими отступами, а часть оформления — игнорироваться. Для критичных форм тестирование во всех используемых клиентах обязательно.

Контрольные точки

Как проверить результат

Отображение разделителя
Норма

Между группами кнопок видна черта, блоки полей визуально отделены

Тревожный признак

Кнопки идут подряд без разделения или порядок нарушен

Работа команд
Норма

Все кнопки вызывают назначенные команды

Тревожный признак

Кнопка неактивна или вызывает чужую команду

Веб-клиент и мобильный клиент
Норма

Разделители отображаются корректно во всех клиентах

Тревожный признак

Оформление съезжает или пропадает

Частые вопросы

Есть ли в управляемой форме отдельный элемент «Разделитель»?

Нет. В палитре элементов управляемой формы такого типа не существует. Разделение достигается группами кнопок в меню и командных панелях, а также декорациями и группами с заголовком для блоков полей.

Как добавить разделитель в контекстное меню таблицы формы?

В дереве элементов найдите контекстное меню нужной таблицы, добавьте в него группу с видом «Группа кнопок» и переместите в неё пункты, которые должны идти после линии. Граница между группами отобразится как горизонтальный разделитель меню.

Можно ли добавить разделитель программно на клиенте?

Нет. Методы изменения структуры формы (Элементы.Добавить, Элементы.Удалить) доступны только в серверном контексте. Все изменения выполняются в ПриСозданииНаСервере или в серверных процедурах до отображения формы.

Почему разделитель не отображается, хотя группа кнопок создана?

Чаще всего кнопки после разделителя добавлены не в группу, а напрямую в командную панель — тогда граница визуально не образуется. Проверьте родителя каждой кнопки. Также убедитесь, что у группы установлен вид «Группа кнопок», а не «Обычная группа».

Как нарисовать горизонтальную линию между полями формы?

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

Повлияет ли добавление разделителя на расширение формы, если форма заимствована?

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

Итог

Что важно запомнить

Отдельного элемента «разделитель» в управляемой форме нет: в командных панелях и меню разделение создаётся группами кнопок, между полями — декорациями и группами с заголовком. Программно элементы добавляются только на сервере через Элементы.Добавить с правильным родителем. После изменений проверяйте отображение во всех используемых клиентах.