Как убрать вертикальное растягивание элементов и подгрупп на управляемой форме 1С?

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

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

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

Почему элементы на управляемой форме растягиваются по вертикали

Проанализируем основные причины, которые влияют на вертикальную компоновку элементов:

  1. Табличная сетка и автовыравнивание базовых линий. Когда несколько вертикальных подгрупп помещаются внутрь одной горизонтальной группы, платформа 1С строит общую сквозную матрицу строк. Если в одной из параллельных колонок элементов больше или они имеют большую высоту, алгоритм компоновки пытается синхронизировать базовые линии строк во всех колонках, принудительно распределяя свободное вертикальное пространство между элементами в соседних столбцах.
  2. Влияние режима совместимости интерфейса. В конфигурациях с обычным или смешанным интерфейсом свойство конфигурации РежимСовместимостиИнтерфейса часто установлено в значение Версия 8.2 или Формы в закладках. В таком режиме используется старый алгоритм компоновки, который иначе рассчитывает вертикальные размеры и межэлементные интервалы по сравнению с интерфейсом «Такси».
  3. Разница масштабирования экрана (DPI) и режимов запуска. При работе через RDP или на мониторах с разным системным масштабированием (100%, 125%, 150%) платформа пересчитывает размеры шрифтов и высоту элементов. Если жесткие ограничения компоновки не заданы, автовыравнивание может давать разные результаты на разных рабочих местах.

Способ 1. Тонкая настройка свойств групп и элементов

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

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

Способ 2. Изоляция колонок и использование элемента-поглотителя («распорки»)

Рассмотрим распространенный архитектурный прием компоновки в 1С, когда в параллельных колонках расположено разное количество элементов разной высоты.

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

  1. Обернем каждую вертикальную колонку в отдельную изолирующую группу вида Обычная группа (без выделения) со свойствами Отображение = Нет и ВертикальноеПоложениеПодчиненных = Верх.
  2. Для всех полезных элементов в колонке (кнопки, декорации, поля) принудительно укажем РастягиватьПоВертикали = Ложь.
  3. В самый низ короткой колонки добавим элемент Декорация - надпись без текста заголовка.
  4. Для этой пустой декорации установим свойство РастягиватьПоВертикали = Истина.

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

Способ 3. Замена кнопок на гиперссылки и компактные надписи

Стандартные командные кнопки в режиме совместимости 8.2 имеют фиксированную минимальную высоту и внутренние поля, которые принудительно увеличивают высоту всей строки. Если требуется максимально уплотнить интерфейс, заменим громоздкие кнопки на элементы вида Поле надписи с включенным свойством Гиперссылка = Истина или декорации со ссылками. Это позволяет сократить вертикальный размер строки на 30–50%.

Способ 4. Вывод сложных блоков через «Поле HTML документа» или табличный документ

Если интерфейс разрабатывается для конфигурации в режиме совместимости (например, УТ 10.3), и стандартные возможности декларативной верстки 1С не позволяют добиться пиксельной точности на всех клиентах, рассмотрим альтернативные варианты отображения данных:

  1. Поле HTML документа: разместим на форме элемент с видом Поле HTML документа. Разметка через стандартный HTML и CSS обеспечивает жесткую фиксацию размеров, шрифтов, фонов и расположения блоков независимо от версии платформы, DPI экрана и режима совместимости интерфейса.
  2. Поле табличного документа: сформируем макет карточки в табличном документе и выведем его на форму в режиме только для чтения (с отключенным отображением заголовков строк и колонок, а также сетки). Это гарантирует фиксированную высоту каждой строки и ячейки.
← На главную