При разработке и доработке управляемых форм в среде 1С:Предприятие разработчики часто сталкиваются с ситуацией, когда табличная часть или динамический список на форме сжимаются до критического минимума — отображается только шапка и буквально одна строка данных. При этом изменение числового свойства Высота в палитре свойств таблицы не приносит ожидаемого результата: таблица либо не реагирует, либо увеличивается всего на пару пикселей.
Проанализируем механику работы компоновщика управляемого интерфейса, выясним причину такого поведения и разберем по шагам все способы решения данной проблемы.
Разберем логику платформы «1С:Предприятие 8.3». Компоновщик интерфейса управляемых форм рассчитывает геометрию окна, деля доступную область между двумя типами элементов:
По умолчанию у формы включен режим отображения полос прокрутки Использовать при необходимости. В этом режиме платформа стремится любой ценой уместить всё содержимое в видимые границы окна монитора, не допуская появления вертикального скроллбара у всей формы. Если на форме расположено множество реквизитов, полей ввода или групп, суммарная высота неделимых элементов забирает почти весь экран. В условиях дефицита экранного пространства компоновщик принудительно урезает именно растягиваемые элементы — вплоть до их технического минимума (шапка плюс одна строка).
Свойство таблицы Высота (в строках) является лишь рекомендацией для платформы. Если физического места на экране не хватает, компоновщик просто игнорирует указанное значение.
Рассмотрим самое простое и быстрое решение, позволяющее снять с компоновщика ограничение по высоте окна.
Если на форме много полей и таблица должна отображаться в нормальном размере независимо от разрешения экрана, разберем порядок действий:
ВертикальнаяПрокрутка.Использовать при необходимости на Использовать.После включения этого свойства форма получает возможность прокручиваться вертикально с помощью общего скроллбара. Компоновщик перестает искусственно зажимать таблицу в видимые рамки экрана и выделяет ей пространство в соответствии с установленным свойством Высота.
Включение вертикального скроллбара формы не всегда удобно для конечного пользователя, так как прокручивать всё окно целиком бывает некомфортно. Проанализируем альтернативный путь — освобождение экранного пространства за счет грамотной группировки полей:
Обычная группа без выделения и свойством Группировка, установленным в значение Горизонтальная если возможно или В ячейке. Размещение реквизитов по два в одну строку освобождает до 50% вертикального пространства.Обычная группа с выделением и установим свойство Поведение в значение Сворачиваемая. По умолчанию такие группы можно оставить свернутыми.Страницы. Вынесем таблицу на отдельную страницу (закладку). На своей странице таблица не конкурирует с реквизитами шапки и занимает 100% высоты рабочего пространства.Если свободное место на форме есть, но таблица все равно не увеличивается, проверим настройки растяжения по всей иерархии дерева элементов:
РастягиватьПоВертикали установлено в значение Истина или Авто (при этом расчет должен давать положительный результат).ВариантУправленияВысотойТаблицы. Если оно установлено в значение ПоСодержимому, таблица автоматически подстраивается под количество строк в данных. Для свободного заполнения пространства выставим значение НеОграничивать.РастягиватьПоВертикали принудительно выставлено в Ложь, дочерняя таблица не сможет расти вниз.РастягиватьПоВертикали = Ложь и задайте им фиксированную высоту.АвтоМаксимальнаяВысота таблицы установлено в значение Истина, либо свойство МаксимальнаяВысота не ограничено малым числом строк.Платформа 1С сохраняет индивидуальные настройки интерфейса и размеры областей для каждого пользователя в специальном хранилище системных настроек. Если пользователь случайно сдвинул границы таблицы мышью или впервые открыл форму на мониторе с маленьким разрешением, сжатый размер мог зафиксироваться в кэше.
Для проверки этой причины в режиме «1С:Предприятие» выполним следующие действия:
Сброс возвращает геометрию всех элементов к исходному состоянию, заложенному разработчиком в конфигураторе.