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

Программист 1С v8.3 (Обычные формы) Торговля и дистрибуция
← На главную

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

Почему стандартный перенос текста может не работать?

Выясним причину, почему при попытке настроить перенос текста стандартными средствами результат часто отсутствует. Начинающие разработчики обычно включают у элемента управления колонки (поля ввода) свойства МногострочныйРежим и АвтоПереносСтрок, однако текст в ячейке продолжает обрезываться и выводиться в одну строку.

Это происходит по нескольким причинам:

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

Способ 1. Настройка свойств колонки в Конфигураторе

Рассмотрим пошагово, как правильно настроить свойства элементов в конфигураторе для включения автоматического переноса текста:

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

Способ 2. Расположение колонок на следующей строке

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

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

Способ 3. Программная настройка оформления ячеек

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

Для реализации подвяжемся к событию табличного поля ПриВыводеСтроки или ПриПолученииДанных:


Процедура ТаблицаТоваровПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
    // Получаем оформление ячейки с наименованием
    ЯчейкаНаименование = ОформлениеСтроки.Ячейки.Наименование;
    
    // Включаем автовысоту и задаем лимит строк
    ЯчейкаНаименование.АвтоВысотаЯчейки = Истина;
    ЯчейкаНаименование.ВысотаЯчейки = 3;
    
    // Передаем полное наименование из справочника
    Если ЗначениеЗаполнено(ДанныеСтроки.Номенклатура) Тогда
        ЯчейкаНаименование.УстановитьТекст(ДанныеСтроки.Номенклатура.НаименованиеПолное);
    КонецЕсли;
    
КонецПроцедуры

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

Альтернативные варианты решения

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

  1. Вывод наименования под таблицей: Разместим под табличным полем отдельное многострочное поле ввода в режиме «Только просмотр». В событии таблицы ПриАктивизацииСтроки будем транслировать полное наименование текущей строки в это поле:
    
    Процедура ТаблицаТоваровПриАктивизацииСтроки(Элемент)
        ТекущиеДанные = Элемент.ТекущиеДанные;
        Если ТекущиеДанные <> Неопределено Тогда
            ЭлементыФормы.ПолеПолноеНаименование.Значение = ТекущиеДанные.Номенклатура.НаименованиеПолное;
        КонецЕсли;
    КонецПроцедуры
    
  2. Использование Поля Табличного Документа: Заменим элемент ТабличноеПоле на ПолеТабличногоДокумента. В табличном документе свойства ячейки Контроль = Переносить и АвтоВысотаСтроки = Истина работают без ограничений сетки и автоматически подстраивают высоту строк под любой объем текста.
← На главную