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

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

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

Анализ проблемы и распространенная ошибка

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

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

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

Решение: использование свойства "Растягивать по вертикали"

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

  1. Откройте нужную форму в конфигураторе.

  2. В дереве элементов формы найдите вашу таблицу (например, с именем Товары или Список).

  3. Разверните дочерние элементы таблицы, чтобы увидеть список ее колонок (полей).

  4. Выберите ту колонку, в которой выводится многострочный текст и по которой должна подстраиваться высота строки (например, Комментарий).

  5. В палитре свойств для выбранной колонки найдите группу "Использование" и в ней свойство РастягиватьПоВертикали.

  6. Установите значение этого свойства в Истина.

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

Дополнительные важные настройки

Для корректной работы автоматического растягивания строки важно убедиться, что само поле, отображающее текст, настроено на многострочный режим. Это особенно актуально, если данные в колонку можно вводить или редактировать прямо в таблице.

Для этого проверьте следующие свойства у элемента управления поля (колонки):

Как правило, эти свойства уже корректно установлены, если тип данных реквизита — строка неограниченной длины, но проверить их не будет лишним, особенно если что-то идет не так.

Пример программной установки (при необходимости)

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

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


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

    Если Параметры.РежимПросмотра = "Подробный" Тогда
        // Включаем растягивание для колонки с описанием
        Элементы.СписокНоменклатурыПолноеОписание.РастягиватьПоВертикали = Истина;
    Иначе
        // В обычном режиме отключаем, чтобы сэкономить место
        Элементы.СписокНоменклатурыПолноеОписание.РастягиватьПоВертикали = Ложь;
    КонецЕсли;

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

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

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

← На главную