При разработке интерфейсов на платформе «1С:Предприятие 8.3» мы часто сталкиваемся с ситуацией, когда визуальное представление формы в Конфигураторе отличается от того, что видит пользователь в режиме Предприятия. Одна из распространенных проблем — отображение многострочных заголовков в таблицах (ТаблицаФормы). В Конфигураторе заголовок может аккуратно переноситься на две или три строки, но при запуске приложения он схлопывается в одну строку, обрезая текст или растягивая колонку до нечитаемой ширины.
Давайте подробно разберем, почему так происходит, и рассмотрим проверенные способы, которые гарантируют корректное отображение многострочной шапки таблицы.
Платформа 1С в управляемых формах (особенно в интерфейсе «Такси») использует сложные алгоритмы компоновки элементов. Она стремится оптимизировать пространство экрана, и если явно не указано обратное, платформа может игнорировать неявные переносы строк, пытаясь уместить все в одну строку. Это часто происходит, если свойство таблицы ВысотаШапки установлено в значение 0 (Авто).
Кроме того, на отображение влияют:
Как выяснилось в ходе обсуждения проблемы, платформа начинает корректно отрисовывать многострочность, если обнаруживает в тексте заголовка явный символ перевода строки.
Разберем этот метод по шагам (кстати, добавление элементов на управляемые формы возможно и без сложного кодирования):
Заголовок (или ТекстШапки в старых версиях свойств), которое также позволяет менять редактор форм в режиме предприятия.Важный нюанс: Часто достаточно сделать такой принудительный перенос только в одной колонке таблицы. Если хотя бы в одной колонке есть явный спецсимвол переноса строки, платформа автоматически увеличивает высоту шапки для всей строки заголовков, и остальные длинные заголовки (где перенос стоял «автоматически» из-за ширины) также начнут отображаться в несколько строк. Для быстрой проверки и настройки параметров элементов прямо в сеансе пользовательского режима пригодится обработка для редактирования форм в режиме предприятия.
Если вы хотите гарантировать результат и не зависеть от ручных правок в палитре свойств, или если заголовки формируются динамически, используйте программный подход. Мы можем внедрить спецсимвол Символы.ПС непосредственно в код. Для удобной доработки управляемых форм кодом можно использовать конструктор для программной модификации форм.
Рассмотрим пример кода, который следует разместить в процедуре ПриСозданииНаСервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Явно задаем заголовок с переносом строки
Элементы.ТоварыНоменклатура.Заголовок = "Наименование" + Символы.ПС + "товара (полное)";
// Для другой колонки можно задать фиксированную ширину, чтобы стимулировать перенос
Элементы.ТоварыКоличество.Ширина = 10;
Элементы.ТоварыКоличество.Заголовок = "Количество" + Символы.ПС + "на складе";
КонецПроцедуры
Использование Символы.ПС является надежным сигналом для платформы, что в данном месте необходим разрыв строки.
Иногда проблема кроется в настройках самой таблицы, а не отдельных колонок. У элемента формы типа «Таблица» есть свойство ВысотаШапки.
По умолчанию оно стоит в значении 0 (Авто). В этом режиме платформа пытается минимизировать высоту. Если мы установим конкретное значение (например, 2 или 3), мы зарезервируем место под несколько строк.
Однако у этого метода есть недостатки:
РастягиватьПоГоризонтали.Поэтому данный способ лучше комбинировать с первым или вторым: задать ВысотаШапки (если нужно жестко зафиксировать размер) и добавить спецсимволы переноса.
Если ваша задача — сделать сложную шапку, где над двумя колонками есть общий заголовок, использование простого переноса строк может не дать нужной красоты. В этом случае правильнее использовать механизм группировки.
Посмотрим, как это организовать:
Заголовок (это будет верхний уровень шапки).Такой подход заставляет платформу рисовать шапку высотой минимум в 2 строки (строка группы + строка колонки). Часто это решает проблему отображения, так как высота шапки увеличивается структурно.
Существует также интересный прием («лайфхак»):
ОтображатьВШапке установите в Ложь (или очистите заголовок, если платформа позволяет).Таким образом, заголовок группы будет играть роль заголовка колонки, и платформа часто более лояльно относится к переносу слов в заголовках групп.
Важно помнить про свойство колонки РастягиватьПоГоризонтали. Если оно установлено в значение Да, платформа будет бесконечно расширять колонку, чтобы уместить текст заголовка в одну строку, игнорируя ваши попытки сделать перенос (кроме случаев с явным Символы.ПС).
Рекомендация: для колонок с многострочными заголовками попробуйте зафиксировать ширину (если не требуется программное перемещение колонки):
РастягиватьПоГоризонтали в значение Нет.Ширина (например, 10 или 15).Это заставит платформу «упереться» в границы ширины и перенести слова вниз.
Мы выяснили, что наиболее действенным методом борьбы с однострочными заголовками в режиме Предприятия является явное указание переноса строки. Использование комбинации клавиш Shift+Enter в палитре свойств или добавление Символы.ПС в коде дает платформе четкую инструкцию по отрисовке интерфейса, которая имеет приоритет над механизмами авто-оптимизации высоты строк.