Разработка интерфейсов на управляемых формах в 1С:Предприятии значительно отличается от классического проектирования в обычных формах. Платформа берет на себя автоматический расчет положения элементов на основе адаптивной сетки. С одной стороны, это упрощает жизнь, с другой — часто приводит к неприятным визуальным багам: кнопки «разлетаются» по ширине, между декорациями и полями ввода образуются огромные пустые пространства, а стандартные настройки выравнивания по левому краю почему-то не дают желаемого результата.
В этой статье мы подробно разберем, почему управляемая форма ведет себя подобным образом, проанализируем неочевидные настройки платформы и рассмотрим пошаговые сценарии, которые помогут раз и навсегда победить нежелательные интервалы и прижать элементы плотно друг к другу.
Прежде чем переходить к настройкам, давайте разберем логику работы движка управляемых форм 1С. Платформа использует так называемый сеточный (колоночный) дизайн. Форма не просто располагает элементы друг за другом — она пытается выстроить их в невидимую таблицу, ориентируясь на соседние строки и родительские контейнеры.
Если группа с вашими кнопками находится внутри более крупной вертикальной группы (или непосредственно в корне самой формы), платформа пытается выровнять элементы нижних строк по колонкам верхних строк. Например, если в шапке формы у вас расположено широкое текстовое поле ввода, система автоматически создаст под него невидимую широкую колонку. Ваши кнопки, находящиеся в строке ниже, непроизвольно «привяжутся» к границам этой колонки, из-за чего между кнопкой и соседней декорацией образуется огромный пустой зазор.
Давайте рассмотрим подробнее, как решить эту и сопутствующие проблемы при помощи тонкой настройки свойств элементов.
Если ваши элементы упорно игнорируют настройки выравнивания и растягиваются по ширине, в 90% случаев виновато сквозное выравнивание родительской группы. Чтобы разорвать нежелательную связь вашей группы элементов с общей сеткой формы, выполните следующие шаги:
Как только мы отключаем это свойство, группа обособляется от общей табличной структуры формы. Элементы внутри нее сразу же стягиваются к левому краю, переставая подстраиваться под ширину соседних полей ввода.
Чтобы элементы принудительно оставались слева и не пытались занять всё свободное пространство экрана, необходимо жестко ограничить поведение самого контейнера (группы), в котором они находятся. Проанализируем настройки группы:
РастягиватьПоГоризонтали и установите его в значение Нет (сняв флажок «Авто»). Если сам контейнер не будет растягиваться по ширине экрана, то и его содержимое не будет разъезжаться.ГоризонтальноеПоложениеПодчиненных и вместо значения Авто принудительно укажите Лево.Посмотрим на пример классического приема верстки в 1С — использование пустой декорации-распорки. Этот метод незаменим, когда группа обязана растягиваться по ширине всей формы (например, для соответствия общему стилю), но кнопки внутри нее должны быть плотно прижаты к левому краю.
Суть метода заключается в том, что мы добавляем в самый конец группы пустой элемент, который забирает на себя все свободное пространство справа, физически выталкивая кнопки влево.
Разберем по шагам, как правильно настроить этот механизм, так как при малейшей ошибке он перестает работать:
Декорация (вид — Надпись).РастягиватьПоГоризонтали в значение Да (Истина).РастягиватьПоГоризонтали должно быть строго установлено в значение Нет (Ложь).РастягиватьПоГоризонтали должно быть установлено в значение Да.При такой комбинации настроек пустая декорация расширится на всю доступную ширину справа, а кнопки, которым запрещено растягиваться, останутся компактно лежать в левом углу.
Часто визуальные зазоры возникают из-за того, что элементы имеют избыточную стандартную ширину, заложенную платформой по умолчанию. Особенно это актуально для декораций-надписей.
Чтобы вернуть контроль над размерами элементов, выполните следующие настройки:
АвтоМаксимальнаяШирина.Ширина задайте конкретное небольшое число. Например, для декорации, выполняющей роль небольшого разделителя, можно указать значение 2 или 3.0 при снятом флаге автоширины, тогда платформа сожмет кнопку ровно под длину её названия.Если вам нужно просто уменьшить расстояние между элементами, не прибегая к глобальной перестройке структуры, обратите внимание на свойства оформления интерфейса:
Если элементы, которые вы пытаетесь выровнять, являются исключительно кнопками команд, не стоит использовать для их объединения «Обычную группу». Платформа предлагает более специализированные инструменты:
Автозаполнение и перенесите нужные команды вручную.Разработчики, пришедшие из обычных форм (1С v8.2 и ранее), часто пытаются найти привычные свойства привязок элементов («привязать левую границу к правой границе соседа» и т. д.). На управляемых формах классических координатных привязок действительно нет.
Однако их полностью заменяют логические привязки, которыми мы управляем через свойства группировки, распределения свободного пространства и отключения сквозного выравнивания. Понимание этих механизмов позволяет собирать интерфейсы любой сложности, которые будут корректно и аккуратно отображаться на мониторах с любым разрешением экрана.