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

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

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

Способ 1. Автоматический разделитель (Сплиттер)

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

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

  1. Растягивание элементов: Оба разделяемых элемента должны иметь установленное свойство РастягиватьПоГоризонтали в значении Да. Если хотя бы один из элементов имеет фиксированную ширину, платформе нет смысла создавать интерактивный разделитель.
  2. Соседство в структуре: Между разделяемыми элементами не должно быть других объектов. В дереве элементов формы они должны располагаться непосредственно друг за другом внутри одной родительской группы.
  3. Минимальная высота: Высота каждого из разделяемых элементов должна составлять не менее 2 строк. Если элементы слишком мелкие, разделитель не будет отрисован из-за отсутствия достаточного пространства.
  4. Диапазон размеров: Свойства Ширина разделяемых элементов должны находиться в интервале между их минимально возможной и максимально заданной шириной. Если у одного из элементов жестко ограничена МаксимальнаяШирина и она уже достигнута, разделитель может исчезнуть.
  5. Отсутствие автопереноса: Ни один из разделяемых элементов не должен быть декорацией-надписью с включенным свойством АвтоПереносТрафика (автоматический перенос текста).
  6. Достаточный интервал: В свойствах родительской группы должен быть установлен достаточный интервал между элементами. Если интервал принудительно установлен в «Нет», место для отрисовки линии не выделится.
  7. Свойство «Объединенная»: Это критически важный нюанс. Если вы разделяете две подгруппы внутри одной родительской группы, у этих подгрупп свойство Объединенная должно быть включено. Это дает платформе сигнал воспринимать подгруппу как целостный блок. При этом у родительской группы не должно быть дочерних элементов типа Группа с видом Обычная группа, у которых это свойство выключено.

Разберем по шагам типичную структуру для автоматического разделителя:

Способ 2. Использование декорации «Линия»

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

Выполним следующие действия:

  1. Добавим в горизонтальную группу элемент формы типа Декорация.
  2. В свойстве Вид выберем значение Линия.
  3. Установим свойство ТипЛинии. Здесь можно выбрать Пунктирная, Сплошная или Штриховая в зависимости от желаемого дизайна.
  4. Ориентация: Для вертикального разделения в горизонтальной группе выберем ориентацию Вертикальная.
  5. Размеры: Чтобы линия выглядела именно как тонкий разделитель, установим свойство Ширина равным 1.

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


// Пример настройки декорации в коде (если элемент создан программно)
Разделитель = Элементы.Добавить("ДекорацияРазделитель", Тип("ДекорацияФормы"), ГруппаРодитель);
Разделитель.Вид = ВидДекорацииФормы.Линия;
Разделитель.Линия = Новый Линия(ТипЛинииДиаграммы.Пунктир, 1);
Разделитель.ЦветРамки = ЦветаСтиля.ЦветРазделителя;

Особенности интерфейса «Такси» и компактного режима

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

Также стоит обратить внимание на «Компактный режим» интерфейса. В версиях платформы 8.3.15 и выше при включении компактного режима многие декоративные отступы и тонкие линии могут скрываться для экономии экранного пространства. Если ваша задача — гарантированно показать линию пользователю, лучше использовать Способ 2 (Декорация) с явно заданным цветом, контрастирующим с фоном формы.

Типичные ошибки при создании разделителей

Рассмотрим причины, по которым разделитель может «сломаться»:

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

← На главную