Как правильно выровнять элементы и группы в управляемых формах 1С?

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

Разработка интерфейсов в управляемом приложении 1С существенно отличается от работы с обычными формами. Основной принцип здесь — декларативный подход, где разработчик лишь описывает структуру элементов, а платформа самостоятельно отрисовывает их, исходя из доступного пространства и настроек. Однако часто возникают ситуации, когда элементы «улетают» вправо, не выравниваются по вертикали или ведут себя непредсказуемо при изменении размеров окна. Разберем подробно, как усмирить автоматическую расстановку элементов.

Понимание иерархии группировок и влияние родительского элемента

Первое, с чего мы начнем — это анализ иерархии элементов в дереве формы. В управляемых формах поведение дочернего элемента всегда зависит от свойств его родителя. Если у вас есть Страница, на которой расположены две группы, их взаимное расположение определяется свойством Группировка именно у этой страницы.

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

Чтобы гарантированно расположить Группу 2 строго под Группой 1, необходимо выполнить следующие шаги:

  1. Выделим родительский элемент (страницу или общую группу).
  2. В палитре свойств найдем параметр Группировка.
  3. Установим значение Вертикальная.

Теперь, независимо от настроек внутри самих групп, они будут выстроены в колонку друг за другом.

Сквозное выравнивание: как добиться идеальной вертикали

Часто мы сталкиваемся с тем, что поля ввода в разных группах имеют разную длину заголовков, из-за чего сами поля начинаются на разных уровнях. Это создает визуальный хаос. Рассмотрим механизм сквозного выравнивания, который платформа 1С использует для решения этой задачи.

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

Использование фиксированной ширины заголовков

Если автоматика не справляется, мы можем прибегнуть к ручному управлению. Рассмотрим ситуацию, когда в Группе 1 заголовок очень длинный, а в Группе 2 — короткий. Чтобы поля ввода начинались с одной вертикальной линии, выполним настройку свойства ШиринаЗаголовка:

  1. Выделим все элементы (поля), которые должны быть выровнены по одной линии (можно сделать это массово через Ctrl).
  2. В свойствах найдем поле ШиринаЗаголовка.
  3. Установим числовое значение (например, 20). Это заставит платформу выделить под текст заголовка ровно 20 символов, обеспечив ровный край для полей ввода.

Также важно обратить внимание на свойство АвтоМаксимальнаяШирина. Если оно включено, поле не будет растягиваться на всю ширину формы, что часто помогает избежать ситуации, когда поля «разъезжаются» при максимизации окна.

Проблема растягивания элементов по горизонтали

Выясним причину, по которой элементы могут смещаться неравномерно при изменении размеров формы. В управляемом интерфейсе за это отвечает свойство РастягиватьПоГоризонтали. Если у одной группы это свойство включено (Да), а у другой выключено (Нет) или стоит Авто, они будут вести себя по-разному при масштабировании.

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

Специфика свертываемых групп

Если в форме используется функционал свертывания (свойство Отображение = Сильное выделение или С заголовоком, и разрешено свертывание), платформа резервирует место под иконку «плюс/минус». Это автоматически создает небольшой левый отступ для всех вложенных элементов.

В результате элементы внутри свертываемой группы всегда будут немного смещены вправо относительно элементов в обычной группе без заголовка. Чтобы визуально компенсировать этот сдвиг, можно пойти на хитрость: добавить в обычную группу декорацию типа Надпись без текста (пустышку) с минимальной шириной, которая «подвинет» элементы вправо на нужное расстояние.

Использование структуры «Колонки» через вложенные группы

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


- ГруппаОбщая (Горизонтальная)
    - ГруппаКолонка1 (Вертикальная)
        - Поле1_Верх
        - Поле1_Низ
    - ГруппаКолонка2 (Вертикальная)
        - Поле2_Верх
        - Поле2_Низ

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

Программное управление интерфейсом

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Установим фиксированную ширину для группы элементов
    Элементы.Группа1Поле1.ШиринаЗаголовка = 15;
    Элементы.Группа2Поле1.ШиринаЗаголовка = 15;
    
    // Управление растягиванием группы
    Элементы.ГруппаОсновныеДанные.РастягиватьПоГоризонтали = Ложь;
    
КонецПроцедуры

Подводя итог, можно сказать, что выравнивание в УФ — это всегда баланс между настройками родительских и дочерних элементов. Помните о приоритете родительской группировки, используйте сквозное выравнивание и не бойтесь фиксировать ширину заголовков там, где автоматика платформы не справляется с эстетическими требованиями.

← На главную