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

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

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

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

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

Способ 1. Настройка свойств элемента колонки (Автовысота и Высота)

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

  1. Откроем нужную управляемую форму в конфигураторе.
  2. Найдем элемент колонки таблицы, в которой выводится неограниченная строка.
  3. Перейдем в панель свойств этого элемента.
  4. Снимем флаг со свойства АвтоВысотаЯчейки (установим АвтоВысотаЯчейки = Ложь).
  5. Установим свойство Высота равным 1.

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

Способ 2. Отключение многострочного режима

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

  1. В свойствах элемента колонки найдем параметр МногострочныйРежим.
  2. Установим значение Ложь.

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

Способ 3. Изменение вида поля таблицы

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

  1. Выберем элемент колонки таблицы.
  2. В свойстве Вид сменим значение с Поле ввода на Поле надписи (ВидПоляФормы.ПолеНадписи).

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

Способ 4. Ограничение длины строки в запросе

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


ВЫБРАТЬ
    ПОДСТРОКА(Документ.Описание, 1, 150) КАК ОписаниеСокращенное
ИЗ
    Документ.ПриходнаяНакладная КАК Документ

Или с помощью приведения типа с использованием функции ВЫРАЗИТЬ:


ВЫБРАТЬ
    ВЫРАЗИТЬ(Документ.Описание КАК СТРОКА(150)) КАК ОписаниеСокращенное
ИЗ
    Документ.ПриходнаяНакладная КАК Документ

Этот подход не только устраняет проблемы с отображением высоты строки в интерфейсе, но и оптимизирует объем данных, передаваемых между сервером и клиентом.

Способ 5. Вывод полного текста под таблицей

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


&НаКлиенте
Процедура ТаблицаПриАктивизацииСтроки(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
    Если ТекущиеДанные <> Неопределено Тогда
        Объект.ПолноеОписание = ТекущиеДанные.Описание;
    КонецЕсли;
КонецПроцедуры

Таким образом, мы сохраняем компактный вид таблицы и предоставляем удобный механизм для просмотра подробной информации.

← На главную