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

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

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

Диагностика: как найти проблемный элемент на форме

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

  1. Диагностика в пользовательском режиме через изменение формы. Откроем форму в режиме «1С:Предприятие» и перейдем в меню Еще — Изменить форму... Поочередно отключая видимость групп и отдельных элементов (особенно таблиц, динамических списков и многострочных текстовых полей), мы можем сразу увидеть, после скрытия какого именно узла вертикальный скролл пропадает.
  2. Инспекция разметки через веб-клиент. Запустим конфигурацию в веб-клиенте через любой современный браузер и откроем встроенные инструменты разработчика по нажатию клавиши F12. В дереве DOM и на вкладке вычисленных стилей (Computed) сразу видны реальные размеры контейнеров, системное свойство min-height и блоки с переполнением overflow, что позволяет мгновенно вычислить точный узел, раздувающий высоту страницы.

Причины некорректного расчета высоты таблиц и списков

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

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

Пошаговое устранение вертикального скролла

Выясним причину и применим комплекс настроек в палитре свойств элементов формы для восстановления корректной компоновки.

  1. Явное указание высоты таблицы в строках. Выделим проблемную таблицу (или динамический список) и зададим в ее свойствах конкретное значение высоты (например, от 3 до 10 строк в зависимости от назначения) вместо значения по умолчанию. Это зафиксирует базовый расчетный размер элемента.
  2. Корректировка вертикального растяжения. Для второстепенных таблиц и списков снимем флаг РастягиватьПоВертикали (установим значение Ложь). Если на форме расположено несколько таблиц, растяжение по вертикали рекомендуется оставлять включенным только для одной — главной рабочей области.
  3. Настройка максимальной высоты. Снимем флаг АвтоМаксимальнаяВысота у таблицы или группы и вручную зададим свойство МаксимальнаяВысота. Это предотвратит бесконтрольное увеличение элемента при изменении размеров клиентского окна.
  4. Проверка родительских групп и страниц. Проанализируем настройки группы страниц и промежуточных вертикальных групп. Убедимся, что для контейнеров, внутри которых скролл не требуется, свойство РастягиватьПоВертикали согласовано с дочерними элементами.
  5. Оптимизация декоративных элементов таблицы. Если таблица должна быть максимально компактной, отключим встроенную командную панель (перенесем нужные команды в командную панель формы), а также отключим неиспользуемые шапку (Шапка = Ложь), подвал и панель поиска.

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

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    // Ограничиваем высоту динамического списка и запрещаем избыточное растяжение
    ЭлементТаблица = Элементы.СписокРегистра;
    ЭлементТаблица.Высота = 5;
    ЭлементТаблица.РастягиватьПоВертикали = Ложь;
    ЭлементТаблица.АвтоМаксимальнаяВысота = Ложь;
    ЭлементТаблица.МаксимальнаяВысота = 8;
    
    // Настраиваем главную таблицу, которая должна занимать все свободное место
    ЭлементГлавнаяТаблица = Элементы.ГлавнаяТаблицаДокумента;
    ЭлементГлавнаяТаблица.РастягиватьПоВертикали = Истина;

КонецПроцедуры

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

← На главную