При разработке интерфейса управляемых форм в 1С часто возникает задача: расположить основные реквизиты шапки документа или справочника компактно в две колонки, а под ними во всю ширину окна разместить табличную часть или панель со страницами. Однако разработчики нередко сталкиваются с неприятным поведением компоновщика интерфейса: как только во вторую колонку добавляется реквизит, табличная часть ниже неожиданно сжимается по ширине ровно до границы первой колонки шапки, оставляя половину формы пустой.
Рассмотрим причины такого поведения платформы 1С и разберем по шагам, как построить правильную структуру дерева элементов формы для корректного отображения.
Проанализируем механику работы движка компоновки интерфейса управляемых форм. Начиная с интерфейса «Такси», размещение элементов рассчитывается клиентским интерфейсным модулем, который формирует общую логическую сетку выравнивания (grid-layout).
Если на форме на одном вертикальном уровне создаются группы колонок, движок платформы может попытаться выровнять все нижележащие элементы по направляющим линиям этой сетки. В результате табличная часть или контейнер страниц ошибочно привязываются к границе первой колонки шапки. При этом изменение свойств РастягиватьПоГоризонтали = Да или отключение АвтоМаксимальнаяШирина у самой таблицы не дает результата, так как таблица физически не может стать шире своего родительского контейнера или ячейки сетки, куда её поместил компоновщик.
Кроме того, при частых интерактивных перемещениях элементов методом перетаскивания (drag-and-drop) в конфигураторе во внутреннем XML-описании формы могут накапливаться скрытые некорректные связи и привязки, которые визуально не видны в свойствах, но искажают отображение формы в режиме предприятия.
Разберем по шагам, как изолировать колонки шапки от нижней таблицы с помощью корректной иерархии групп. Чтобы деление на колонки не влияло на нижние элементы, обе колонки должны быть заключены в отдельную родительскую группу-контейнер.
Выстроим следующую иерархию элементов в дереве формы:
Группировка установлено в значение Вертикальная.Обычная группа;Нет;Горизонтальная (обратим внимание: вариант Горизонтальная если возможно использовать не рекомендуется, так как при изменении ширины экрана он может динамически перестраивать реквизиты);Объединенная: установлено в значение Истина (это изолирует сетку колонок внутри группы и запрещает транслировать ее на форму ниже);ШиринаПодчиненныхЭлементов: рекомендуется установить Одинаковая, чтобы обе колонки равномерно делили доступную ширину.Обычная группа;Нет;Вертикальная. Внутрь помещаются необходимые реквизиты левой части.Обычная группа;Нет;Вертикальная. Внутрь помещаются реквизиты правой части.При такой структуре группа «Шапка» выступает замкнутым горизонтальным контейнером. Движок платформы делит пространство на две части исключительно внутри нее, а расположенная ниже таблица занимает 100% ширины корня формы.
Нередко разработчик уже исправил структуру дерева элементов в конфигураторе, однако при запуске в режиме «1С:Предприятие» таблица по-прежнему выглядит сжатой. Это происходит из-за того, что платформа автоматически сохраняет пользовательские настройки формы (расположение разделителей, ширину колонок и размеры областей), зафиксированные при предыдущих открытиях.
Чтобы исключить влияние старых настроек, выполним следующие действия:
Если дерево элементов выстроено строго по правилам, пользовательские настройки сброшены, но компоновщик продолжает отображать форму с ошибками (например, на новой пустой обработке аналогичная схема работает корректно, а в рабочем документе сжимается), имеет место внутренний сбой разметки формы.
В этом случае наиболее быстрым и надежным решением является пересоздание формы с нуля:
Такой подход полностью устраняет скрытые ошибки внутреннего XML-описания и гарантирует стабильное поведение элементов формы при любых разрешениях монитора.