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

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

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

Почему форма растягивается при добавлении растягивания таблицы

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

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

Решение 1. Ограничение базовой высоты при сохранении растягивания

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

Разберем настройку по шагам:

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

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

Решение 2. Сброс сохраненных настроек формы

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

Выполним сброс закэшированных габаритов:

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

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

Решение 3. Ревизия вертикальных групп и управление высотой по содержимому

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

  1. Проверим все вышестоящие и соседние элементы по вертикали. У текстовых полей, надписей и вспомогательных групп переведем параметр РастягиватьПоВертикали в значение Нет. Растягивание должно быть включено только у самой таблицы и ее непосредственных родительских групп.
  2. Для компактных табличных частей с небольшим числом записей используем свойство ВариантУправленияВысотой со значением ПоСодержимому. Это позволит таблице автоматически адаптироваться под количество введенных строк без образования пустых областей.
  3. Если на форме объективно много элементов, вынесем таблицу или сопутствующие аналитические блоки на отдельные страницы панели вкладок (элемент Страницы). Это устранит перегрузку формы по высоте без ущерба для функциональности.
← На главную