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