При переносе форм на управляемый интерфейс или разработке управляемых форм для конфигураций со смешанным режимом (например, 1С:Управление торговлей 10.3 или других конфигураций на обычных формах) разработчики часто сталкиваются с поведением, когда элементы внутри горизонтальных групп неконтролируемо растягиваются по высоте. Платформа пытается соотнести высоту соседних колонок, в результате чего декорации, кнопки и поля ввода увеличиваются в размерах, а интерфейс теряет компактность.
В этой статье мы подробно разберем, почему возникает такое поведение платформенного механизма компоновки, и рассмотрим пошаговые способы фиксации компактного вертикального размера элементов формы.
Проанализируем основные причины, которые влияют на вертикальную компоновку элементов:
РежимСовместимостиИнтерфейса часто установлено в значение Версия 8.2 или Формы в закладках. В таком режиме используется старый алгоритм компоновки, который иначе рассчитывает вертикальные размеры и межэлементные интервалы по сравнению с интерфейсом «Такси».Разберем по шагам базовый комплекс настроек дерева элементов, который позволяет убрать лишние отступы и прижать элементы к верхнему краю:
ВертикальныйИнтервал в значение Нет. Это минимизирует автоматические отступы между строками.РастягиватьПоВертикали в значение Ложь. Также снимем флаг АвтоМаксимальнаяВысота.Объединенная у родительской горизонтальной группы и всех вложенных подгрупп. Данный флаг заставляет элементы вести себя как единый блок и выравнивать внутренние сетки, поэтому его следует отключить.Отображение в значение Нет, а свойство ОтображатьЗаголовок — в значение Ложь. Это предотвратит резервирование лишнего вертикального пространства под рамки и заголовки.ВертикальноеПоложениеПодчиненных в значение Верх, чтобы платформа не распределяла свободное место равномерно по всей высоте контейнера.Рассмотрим распространенный архитектурный прием компоновки в 1С, когда в параллельных колонках расположено разное количество элементов разной высоты.
Чтобы исключить влияние соседних колонок друг на друга и предотвратить растягивание полезных элементов, применим следующую схему:
Обычная группа (без выделения) со свойствами Отображение = Нет и ВертикальноеПоложениеПодчиненных = Верх.РастягиватьПоВертикали = Ложь.Декорация - надпись без текста заголовка.РастягиватьПоВертикали = Истина.В такой конфигурации пустая невидимая декорация забирает на себя все свободное вертикальное пространство, выступая в роли «поглотителя высоты», а смысловые элементы остаются компактно прижатыми к верхнему краю формы.
Стандартные командные кнопки в режиме совместимости 8.2 имеют фиксированную минимальную высоту и внутренние поля, которые принудительно увеличивают высоту всей строки. Если требуется максимально уплотнить интерфейс, заменим громоздкие кнопки на элементы вида Поле надписи с включенным свойством Гиперссылка = Истина или декорации со ссылками. Это позволяет сократить вертикальный размер строки на 30–50%.
Если интерфейс разрабатывается для конфигурации в режиме совместимости (например, УТ 10.3), и стандартные возможности декларативной верстки 1С не позволяют добиться пиксельной точности на всех клиентах, рассмотрим альтернативные варианты отображения данных:
Поле HTML документа. Разметка через стандартный HTML и CSS обеспечивает жесткую фиксацию размеров, шрифтов, фонов и расположения блоков независимо от версии платформы, DPI экрана и режима совместимости интерфейса.