При разработке печатных форм в платформе 1С часто возникает задача визуального акцентирования внимания: выделить цветом сумму, предупреждение, ключевую фразу или отдельное слово в тексте договора или счёта. Однако разработчики сталкиваются с ограничением стандартного табличного документа. Разберем особенности работы с оформлением текста в 1С, выясним причину платформенных ограничений и подробно рассмотрим все рабочие альтернативные способы решения задачи.
Проанализируем, как устроен объект ТабличныйДокумент. В табличном документе базовой единицей форматирования выступает ячейка (область ОбластьЯчеекТабличногоДокумента). Свойства оформления, такие как ЦветТекста, ЦветФона, Шрифт, ГоризонтальноеПоложение, всегда применяются ко всей ячейке целиком.
Внутри ячейки табличного документа 1С не поддерживается посимвольное форматирование или теги разметки (HTML, BB-code). Если в ячейку поместить строку с тегами, они будут выведены как обычный сырой текст. Таким образом, раскрасить отдельные слова внутри одной неделимой ячейки табличного документа невозможно. Рассмотрим подробнее доступные обходные пути и альтернативные инструменты платформы.
Если структура текста и позиция выделяемого фрагмента заранее известны (например, статичный текст до и после параметра), задачу можно решить стандартным табличным документом без привлечения сторонних объектов. Разберем по шагам, как это реализовать:
ЦветТекста (например, красный), а для соседних оставляем стандартный авто-цвет.ГраницаСправа и ГраницаСлева в значение «Нет линии»).Этот метод отлично подходит для фиксированных фраз и шаблонов, но не применим, если выделяемые слова находятся в произвольных местах длинного неструктурированного текста с переносами строк.
Если требуется полноценное форматирование произвольного текста, абзацев и списков, лучшим решением является формирование документа в формате HTML. Посмотрим на алгоритм реализации:
<span style="color: red; font-weight: bold;">выделенный текст</span>.ПолеHTMLДокумента или отправляем напрямую на печать.Посмотрим на пример формирования HTML-текста в коде:
ТекстHTML = "<html><body style='font-family: Arial; font-size: 10pt;'>"
+ "<p>Договор считается заключенным с момента оплаты счета. "
+ "<span style='color: #FF0000; font-weight: bold;'>Внимание!</span> "
+ "Срок действия предложения составляет <span style='color: #0000FF;'>3 рабочих дня</span>.</p>"
+ "</body></html>";
Элементы.ПолеДокумента.Документ.body.innerHTML = ТекстHTML;
В платформе 1С предусмотрен встроенный объект ФорматированныйДокумент, предназначенный для хранения и визуального редактирования rich-text содержимого. Он поддерживает разнородное оформление текста: цвет символов, начертание, фон, размеры шрифта.
ПолеФорматированногоДокумента.ФорматированныйДокумент данными.Для сложных договоров со сложным форматированием и юридическим текстом стандартной практикой является использование офисных шаблонов:
Итог: выделить фрагмент строки цветом внутри одной ячейки объекта ТабличныйДокумент невозможно из-за архитектуры платформы. Для решения задачи выбирайте либо разбивку на смежные ячейки без границ, либо альтернативные типы макетов: HTML, ФорматированныйДокумент или шаблоны DOCX/ODT.