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

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

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

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

Почему таблица сжимается до одной строки: механизм компоновщика

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

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

По умолчанию у формы включен режим отображения полос прокрутки Использовать при необходимости. В этом режиме платформа стремится любой ценой уместить всё содержимое в видимые границы окна монитора, не допуская появления вертикального скроллбара у всей формы. Если на форме расположено множество реквизитов, полей ввода или групп, суммарная высота неделимых элементов забирает почти весь экран. В условиях дефицита экранного пространства компоновщик принудительно урезает именно растягиваемые элементы — вплоть до их технического минимума (шапка плюс одна строка).

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

Способ 1. Включение постоянной вертикальной прокрутки формы

Рассмотрим самое простое и быстрое решение, позволяющее снять с компоновщика ограничение по высоте окна.

Если на форме много полей и таблица должна отображаться в нормальном размере независимо от разрешения экрана, разберем порядок действий:

  1. Откроем форму в конфигураторе.
  2. Выделим корневой элемент в дереве элементов формы (саму форму).
  3. В палитре свойств найдем раздел Использование и свойство ВертикальнаяПрокрутка.
  4. Переключим значение со стандартного Использовать при необходимости на Использовать.
  5. Сохраним изменения и проверим работу формы в пользовательском режиме.

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

Способ 2. Оптимизация компоновки элементов на форме

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

  1. Размещение полей в несколько колонок: объединим последовательно идущие вертикальные поля ввода в группы с видом Обычная группа без выделения и свойством Группировка, установленным в значение Горизонтальная если возможно или В ячейке. Размещение реквизитов по два в одну строку освобождает до 50% вертикального пространства.
  2. Использование сворачиваемых групп: для второстепенных реквизитов (служебные сведения, история версий, дополнительные параметры) создадим группу с видом Обычная группа с выделением и установим свойство Поведение в значение Сворачиваемая. По умолчанию такие группы можно оставить свернутыми.
  3. Перенос таблицы на отдельную вкладку: если форма перегружена реквизитами шапки, лучшим архитектурным решением будет создание группы вида Страницы. Вынесем таблицу на отдельную страницу (закладку). На своей странице таблица не конкурирует с реквизитами шапки и занимает 100% высоты рабочего пространства.

Способ 3. Проверка цепочки свойств растяжения таблицы

Если свободное место на форме есть, но таблица все равно не увеличивается, проверим настройки растяжения по всей иерархии дерева элементов:

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

Способ 4. Сброс пользовательских настроек формы

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

Для проверки этой причины в режиме «1С:Предприятие» выполним следующие действия:

  1. В правом верхнем углу окна формы нажмем меню Еще.
  2. Выберем пункт Изменить форму....
  3. В открывшемся окне настройки формы нажмем Еще → Установить стандартные настройки.
  4. Нажмем ОК и перезапустим форму.

Сброс возвращает геометрию всех элементов к исходному состоянию, заложенному разработчиком в конфигураторе.

← На главную