При разработке интерфейсов на управляемых формах в 1С:Предприятии 8.3 разработчики нередко сталкиваются с ситуацией, когда на форме или внутри панели страниц неожиданно появляется вертикальная полоса прокрутки. В отличие от обычных форм, где при проверке привязок проблемный элемент подсвечивался красной рамкой, в декларативном интерфейсе управляемых форм визуальная диагностика устроена иначе. Разберем по шагам, как выявить растягивающий форму элемент и как правильно настроить свойства элементов управления для устранения нежелательного скролла.
Когда форма визуально должна помещаться на экране, но платформа все равно отображает полосу прокрутки, необходимо локализовать элемент или контейнер, вызывающий переполнение. Рассмотрим основные способы поиска виновника.
min-height и блоки с переполнением overflow, что позволяет мгновенно вычислить точный узел, раздувающий высоту страницы.Проанализируем ситуацию, когда полосу прокрутки вызывает табличная часть или динамический список регистра. По умолчанию платформа применяет автоматический расчет габаритов, который имеет ряд скрытых особенностей:
Высота (или ВысотаВСтроках) не задано (равно нулю), платформа пытается автоматически определить минимально необходимый размер. При этом для таблицы рассчитывается системный минимум, включающий высоту строк данных, шапки, подвала, командной панели и встроенной строки поиска.РастягиватьПоВертикали, платформа делит пространство между ними с учетом их минимальных габаритов. Если их суммарная минимальная высота превышает высоту экрана, неизбежно появляется полоса прокрутки.АвтоМаксимальнаяВысота, элемент стремится занять все доступное пространство родителя, что при каскадном вложении групп часто приводит к выходу за видимые границы формы.МногострочныйРежим без явного ограничения высоты может динамически увеличивать высоту строк таблицы или полей ввода, растягивая родительский блок.Выясним причину и применим комплекс настроек в палитре свойств элементов формы для восстановления корректной компоновки.
РастягиватьПоВертикали (установим значение Ложь). Если на форме расположено несколько таблиц, растяжение по вертикали рекомендуется оставлять включенным только для одной — главной рабочей области.АвтоМаксимальнаяВысота у таблицы или группы и вручную зададим свойство МаксимальнаяВысота. Это предотвратит бесконтрольное увеличение элемента при изменении размеров клиентского окна.РастягиватьПоВертикали согласовано с дочерними элементами.Шапка = Ложь), подвал и панель поиска.Посмотрим на пример программной корректировки свойств элементов формы при ее создании на сервере, если форму необходимо динамически адаптировать под разное разрешение экрана:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Ограничиваем высоту динамического списка и запрещаем избыточное растяжение
ЭлементТаблица = Элементы.СписокРегистра;
ЭлементТаблица.Высота = 5;
ЭлементТаблица.РастягиватьПоВертикали = Ложь;
ЭлементТаблица.АвтоМаксимальнаяВысота = Ложь;
ЭлементТаблица.МаксимальнаяВысота = 8;
// Настраиваем главную таблицу, которая должна занимать все свободное место
ЭлементГлавнаяТаблица = Элементы.ГлавнаяТаблицаДокумента;
ЭлементГлавнаяТаблица.РастягиватьПоВертикали = Истина;
КонецПроцедуры
Рассмотренный подход позволяет полностью контролировать поведение элементов интерфейса, исключить непредвиденные полосы прокрутки и обеспечить удобную работу пользователей на экранах с любым разрешением.