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

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

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

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

Почему возникает проблема?

Платформа 1С в управляемых формах (особенно в интерфейсе «Такси») использует сложные алгоритмы компоновки элементов. Она стремится оптимизировать пространство экрана, и если явно не указано обратное, платформа может игнорировать неявные переносы строк, пытаясь уместить все в одну строку. Это часто происходит, если свойство таблицы ВысотаШапки установлено в значение 0 (Авто).

Кроме того, на отображение влияют:

  1. Наличие группировок колонок.
  2. Свойства растягивания колонок по горизонтали.
  3. Режим совместимости конфигурации.
  4. Пользовательские настройки масштаба интерфейса.

Способ 1. Принудительный перенос строки в свойствах (Самый простой)

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

Разберем этот метод по шагам (кстати, добавление элементов на управляемые формы возможно и без сложного кодирования):

  1. Откройте форму в Конфигураторе.
  2. Выберите нужную колонку в дереве элементов формы (в этом может помочь конструктор управляемых форм) — для этого подойдет набор инструментов разработчика для отладки управляемых форм.
  3. Найдите свойство Заголовок (или ТекстШапки в старых версиях свойств), которое также позволяет менять редактор форм в режиме предприятия.
  4. В поле ввода текста заголовка напишите первую строку, затем нажмите комбинацию клавиш Shift + Enter, и напишите вторую строку.

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

Способ 2. Программная установка заголовка

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

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Явно задаем заголовок с переносом строки
    Элементы.ТоварыНоменклатура.Заголовок = "Наименование" + Символы.ПС + "товара (полное)";
    
    // Для другой колонки можно задать фиксированную ширину, чтобы стимулировать перенос
    Элементы.ТоварыКоличество.Ширина = 10;
    Элементы.ТоварыКоличество.Заголовок = "Количество" + Символы.ПС + "на складе";
    
КонецПроцедуры

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

Способ 3. Управление высотой шапки таблицы

Иногда проблема кроется в настройках самой таблицы, а не отдельных колонок. У элемента формы типа «Таблица» есть свойство ВысотаШапки.

По умолчанию оно стоит в значении 0 (Авто). В этом режиме платформа пытается минимизировать высоту. Если мы установим конкретное значение (например, 2 или 3), мы зарезервируем место под несколько строк.

Однако у этого метода есть недостатки:

Поэтому данный способ лучше комбинировать с первым или вторым: задать ВысотаШапки (если нужно жестко зафиксировать размер) и добавить спецсимволы переноса.

Способ 4. Использование группировок колонок

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

Посмотрим, как это организовать:

  1. В дереве элементов формы добавьте «Группу – Колонки» внутри вашей таблицы.
  2. В свойствах группы задайте Заголовок (это будет верхний уровень шапки).
  3. Поместите нужные колонки внутрь этой группы.
  4. У самих колонок оставьте их собственные заголовки (это будет второй уровень шапки).

Такой подход заставляет платформу рисовать шапку высотой минимум в 2 строки (строка группы + строка колонки). Часто это решает проблему отображения, так как высота шапки увеличивается структурно.

Существует также интересный прием («лайфхак»):

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

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

Влияние ширины колонок

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

Рекомендация: для колонок с многострочными заголовками попробуйте зафиксировать ширину (если не требуется программное перемещение колонки):

  1. Установите РастягиватьПоГоризонтали в значение Нет.
  2. Задайте конкретную Ширина (например, 10 или 15).

Это заставит платформу «упереться» в границы ширины и перенести слова вниз.

Заключение

Мы выяснили, что наиболее действенным методом борьбы с однострочными заголовками в режиме Предприятия является явное указание переноса строки. Использование комбинации клавиш Shift+Enter в палитре свойств или добавление Символы.ПС в коде дает платформе четкую инструкцию по отрисовке интерфейса, которая имеет приоритет над механизмами авто-оптимизации высоты строк.

← На главную