При работе с макетами и табличными документами в платформе 1С часто возникает необходимость вывести многострочный текст внутри одной ячейки. В зависимости от того, редактируем ли мы макет вручную в конфигураторе или формируем документ программно из кода BSL, используются разные подходы. Рассмотрим подробно все способы и важные настройки свойств ячеек.
Разберем ситуацию, когда мы редактируем макет табличного документа непосредственно в конфигураторе или в режиме пользователя и хотим перенести часть текста на новую строку без использования кода.
Обычное нажатие клавиши Enter переводит курсор на следующую ячейку таблицы. Чтобы ввести перенос строки внутри редактируемой ячейки, воспользуйтесь комбинацией клавиш Shift+Enter.
Также обратим внимание на настройки формы: если ввод многострочного текста осуществляется пользователем в поле ввода на форме, у соответствующего элемента должно быть установлено свойство МногострочныйРежим = Истина.
Посмотрим, как задать перенос строки при формировании печатной формы из кода. В платформе 1С для этого предусмотрен специальный системный символ Символы.ПС (перевод строки).
Рассмотрим пример формирования многострочного текста путем конкатенации строк:
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.ТекстЯчейки = "Первая строка" + Символы.ПС + "Вторая строка";
Кроме того, в языке BSL можно использовать многострочные строковые литералы с вертикальной чертой | в начале каждой следующей строки:
ОбластьМакета.Параметры.ТекстЯчейки = "Первая строка
|Вторая строка";
Проанализируем случай с выгрузкой табличного документа во внешние форматы, такие как Excel. Для корректного отображения переноса строк внешними приложениями рекомендуется использовать комбинацию Символы.ВК + Символы.ПС (возврат каретки и перевод строки).
Выясним причину, почему перенос строки может не отображаться визуально, а текст обрезаться по границам ячейки. Чтобы многострочный текст отображался корректно, необходимо правильно настроить свойства области табличного документа:
Область.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить;. Если оставить значение «Авто» или «Обрезать», текст ниже первой строки скрывается.АвтоВысотаСтроки = Истина. Если высота строки была зафиксирована вручную в дизайнере макета, платформа не сможет автоматически расширить её под количество строк текста.Обратим внимание на важное ограничение платформы: механизм автоматического расчета высоты строки (АвтоВысотаСтроки) не работает для объединенных ячеек. Если многострочный текст выводится в область, состоящую из нескольких объединенных ячеек, автовысота не рассчитается автоматически. В этом случае требуется либо программно рассчитывать высоту строки, либо изменять структуру макета, отказываясь от объединения ячеек.