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