При разработке печатных форм в системе 1С:Предприятие разработчики часто сталкиваются с ситуацией, когда при использовании типа заполнения ячейки Шаблон или Параметр текст наотрез отказывается переноситься по словам в режиме конфигуратора. Даже если установлены все необходимые флаги, визуально текст отображается одной строкой, уходящей за границы ячейки. Это вызывает закономерные вопросы о корректности настроек макета.
В этой статье мы подробно разберем, почему платформа ведет себя именно так, проанализируем технические нюансы работы табличного документа и выясним, как добиться идеального отображения многострочного текста в итоговых печатных формах.
Разберем фундаментальный аспект работы 1С: в режиме конфигуратора ячейка с типом заполнения Шаблон или Параметр не содержит фактического текста. Она содержит лишь описание того, что должно быть подставлено в момент формирования документа. Например, строка вида [Контрагент.НаименованиеПолное] для договора [НомерДоговора] для программы является кодом, а не текстом.
Проанализируем ситуацию: платформа не может рассчитать перенос слов, так как она не знает, какой длины будет итоговая строка. На месте параметра может оказаться как три символа, так и три тысячи. Следовательно, расчет границ переноса в конфигураторе просто невозможен. Перенос текста начнет работать только в режиме Предприятия, когда вместо конструкций в квадратных скобках подставятся реальные строковые значения.
Прежде чем переходить к сложным случаям, проверим основные свойства ячейки в палитре свойств макета. Чтобы текст переносился, необходимо выполнить следующие действия:
Заполнение в значение Шаблон (или Параметр, если вы выводите одно значение).РазмещениеТекста обязательно выбрать значение Переносить.АвтоВысотаСтроки.Рассмотрим важный нюанс: если вы хотите, чтобы текст выглядел аккуратно, рекомендуется также установить горизонтальное выравнивание По ширине. Это заставит платформу равномерно распределять слова, что особенно критично для длинных текстовых блоков (например, в преамбулах договоров).
Одной из самых коварных особенностей 1С является некорректная работа автоматической высоты строки в случае, когда ячейки объединены по горизонтали. Если вы объединили несколько колонок для вывода длинного текста шаблона, стандартный механизм АвтоВысотаСтроки часто дает сбой: текст обрезается снизу, так как платформа неверно вычисляет требуемое пространство.
Для решения этой проблемы мы можем применить проверенный метод «невидимой колонки»:
Переносить.В этом случае платформа корректно рассчитает высоту строки по этой одиночной ячейке, и ваш основной объединенный текстовый блок отобразится полностью.
Иногда автоматики платформы недостаточно, и нам требуется вмешаться в процесс формирования печатной формы через встроенный язык. Рассмотрим ситуацию, когда текст нужно разбить на строки принудительно внутри шаблона.
Выясним, как это сделать. При заполнении параметров, которые входят в шаблон, мы можем использовать константу Символы.ПС (перевод строки). Шаблон корректно интерпретирует этот символ и выполнит разрыв в указанном месте.
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ТекстДляШаблона = "Первая строка документа" + Символы.ПС + "Вторая строка документа";
ОбластьМакета.Параметры.ВашПараметрВШаблоне = ТекстДляШаблона;
ТабДок.Вывести(ОбластьМакета);
Также полезно гарантировать применение автовысоты программным способом. После того как область выведена в табличный документ, мы можем явно вызвать пересчет:
ОбластьСтрока = ТабДок.Область(НомерСтроки, , НомерСтроки, );
ОбластьСтрока.АвтоВысотаСтроки = Истина;
Малоизвестный, но критически важный факт: расчет переноса слов в 1С напрямую зависит от драйвера принтера, установленного в системе по умолчанию. Платформа обращается к метрикам шрифта конкретного драйвера, чтобы понять, сколько пикселей занимает каждый символ.
Если на компьютере разработчика установлен один принтер, а у пользователя другой (или принтер вовсе отсутствует), границы слов могут сместиться. Это приводит к тому, что последнее слово строки может «провалиться» вниз или, наоборот, строка окажется пустой. Чтобы минимизировать эти риски, придерживайтесь следующих правил:
Arial, Times New Roman или Calibri. Алгоритмы 1С лучше всего оптимизированы под их метрики.По ширине страницы, это может исказить логику переносов.Проанализируем еще одно ограничение. Несмотря на то что современные версии платформы 8.3 справляются с большими объемами данных, при попытке запихнуть в одну ячейку шаблона текст объемом в несколько страниц формата А4 (например, весь текст юридического договора), вы можете столкнуться с визуальными артефактами. В таких случаях правильнее будет разбивать текст на несколько областей макета и выводить их последовательно, а не пытаться решить все одной ячейкой с Шаблоном.
Подводя итог, можно сказать: отсутствие переносов в конфигураторе — это не ошибка, а особенность проектирования. Настроив РазмещениеТекста, используя АвтоВысотуСтроки и учитывая нюансы объединенных ячеек, вы сможете добиться корректного и профессионального вида ваших печатных форм в режиме Предприятия. Для изменения макетов напрямую в пользовательском интерфейсе можно использовать руководство по редактированию печатных форм в программах 1С.