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

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

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

Проанализируем причины такого поведения платформы и разберем практические способы решения этой задачи.

Почему платформа увеличивает интервалы между полями

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

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

Способ 1. Группировка элементов в дополнительный горизонтальный контейнер

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

Разберем по шагам, как настроить структуру элементов:

  1. В дереве элементов формы создаем новую группу с видом Группа страниц или обычную Обычная группа без отображения.
  2. Устанавливаем для созданной группы свойство Группировка в значение Горизонтальная если возможно или Горизонтальная.
  3. Переносим внутрь этой группы вертикальные колонки с реквизитами (например, группы ШапкаЛево и ШапкаПраво), а также группу с полем картинки.
  4. В свойствах созданной группы проверяем, чтобы свойство ОтображениеУправления стояло в значении Нет, а свойство ОтображатьЗаголовок было отключено, чтобы группа оставалась визуально невидимой для пользователя.

Благодаря созданию явного промежуточного контейнера платформа изолирует внутренний расчет высот колонок от внешних групп формы, возвращая полям стандартные компактные интервалы.

Способ 2. Настройка вертикального выравнивания и растяжимости групп

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

  1. Выбираем группы с реквизитами, у которых разъезжаются строки.
  2. В палитре свойств находим параметр ВертикальноеВыравнивание. По умолчанию он установлен в значение Авто. Меняем его на Верх. Элементы внутри группы плотно прижмутся к верхней границе, а межстрочные интервалы вернутся к стандартным значениям.
  3. В свойстве РастягиватьПоВертикали переключаем значение с Авто на Ложь. Это явно запретит контейнеру с полями ввода занимать всю доступную высоту соседней колонки с картинкой.
  4. У родительской группы проверяем свойство СквозноеВыравнивание. Устанавливаем его в значение Не использовать, чтобы платформенный механизм не раздвигал строки принудительно.

Способ 3. Ограничение размеров элемента картинки

Часто причиной искажения формы становится то, что само поле картинки не имеет ограничений по высоте и раздувает всю горизонтальную линию. Настроим свойства самого проблемного элемента:

  1. Выделяем поле картинки в дереве элементов формы.
  2. Снимаем флаг РастягиватьПоВертикали (устанавливаем в Ложь).
  3. Снимаем отметку со свойства АвтоМаксимальнаяВысота и явно задаем значение в свойстве МаксимальнаяВысота (или указываем фиксированную Высота в строках).
  4. В свойстве РазмерКартинки выбираем вариант Пропорционально или Реальный размер, чтобы картинка не пыталась бесконечно растягивать контейнер формы.

Способ 4. Использование декорации-распорки

Если требуется, чтобы сама группа с реквизитами всё же растягивалась по высоте синхронно с картинкой, но строки полей ввода оставались плотно прижатыми друг к другу, применим классический прием с компенсатором пространства:

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

Посмотрим на результат: декорация заберет на себя всю избыточную высоту вертикальной колонки, а поля ввода сверху сохранят компактное расположение со стандартным расстоянием между строками.

← На главную