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

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

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

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

Выясним причину: почему растягивается строка?

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

Решение проблемы в управляемых формах (1С v8.3)

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

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

Программная настройка высоты строк

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

Разберем пример кода, который необходимо разместить в модуле формы в обработчике события ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Отключаем автовысоту ячейки для колонки комментария
    Элементы.СписокКомментарий.АвтоВысотаЯчейки = Ложь;
    // Принудительно устанавливаем высоту в одну строку
    Элементы.СписокКомментарий.Высота = 1;
КонецПроцедуры

Обратите внимание, что имя элемента СписокКомментарий должно точно соответствовать имени элемента (колонки) на вашей управляемой форме.

Решение для обычных форм (1С v8.2 и толстый клиент)

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

  1. Свойство табличного поля «ВысотаСтроки»: Выделим само табличное поле (весь список номенклатуры) на форме. В палитре свойств найдем параметр ВысотаСтроки. Если его значение равно 0, платформа рассчитывает высоту автоматически. Установим фиксированное значение (например, 1 или конкретное число пикселей), чтобы принудительно зафиксировать одинаковую высоту для всех строк.
  2. Свойства колонки табличного поля: Перейдем в свойства конкретной колонки Комментарий. Убедимся, что свойство Автовысота ячейки отключено, а свойство Высота ячейки установлено в значение 1.
  3. Анализ кода «ПриВыводеСтроки»: Иногда программный код конфигурации динамически переопределяет свойства ячеек. Проанализируем модуль формы и найдем обработчик события ПриВыводеСтроки. Убедимся, что в нем не прописано принудительное включение автовысоты (например, через свойство АвтоВысотаЯчейки объекта оформления ячейки).

Настройка силами пользователя (без конфигуратора)

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

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

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

← На главную