Как выделить цветом часть текста в макете печатной формы 1С

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

При разработке печатных форм в платформе 1С часто возникает задача визуального акцентирования внимания: выделить цветом сумму, предупреждение, ключевую фразу или отдельное слово в тексте договора или счёта. Однако разработчики сталкиваются с ограничением стандартного табличного документа. Разберем особенности работы с оформлением текста в 1С, выясним причину платформенных ограничений и подробно рассмотрим все рабочие альтернативные способы решения задачи.

Ограничения стандартного объекта ТабличныйДокумент

Проанализируем, как устроен объект ТабличныйДокумент. В табличном документе базовой единицей форматирования выступает ячейка (область ОбластьЯчеекТабличногоДокумента). Свойства оформления, такие как ЦветТекста, ЦветФона, Шрифт, ГоризонтальноеПоложение, всегда применяются ко всей ячейке целиком.

Внутри ячейки табличного документа 1С не поддерживается посимвольное форматирование или теги разметки (HTML, BB-code). Если в ячейку поместить строку с тегами, они будут выведены как обычный сырой текст. Таким образом, раскрасить отдельные слова внутри одной неделимой ячейки табличного документа невозможно. Рассмотрим подробнее доступные обходные пути и альтернативные инструменты платформы.

Вариант 1. Дробление строки на составные ячейки (микро-сетка)

Если структура текста и позиция выделяемого фрагмента заранее известны (например, статичный текст до и после параметра), задачу можно решить стандартным табличным документом без привлечения сторонних объектов. Разберем по шагам, как это реализовать:

  1. Разбиваем область вывода в макете на несколько колонок подряд. Например: ячейка 1 — «Уважаемый клиент, ваш баланс составляет: », ячейка 2 — «[СуммаДолга]», ячейка 3 — « руб.».
  2. Для каждой ячейки настраиваем индивидуальный цвет: для второй ячейки устанавливаем нужный ЦветТекста (например, красный), а для соседних оставляем стандартный авто-цвет.
  3. Убираем внутренние границы между этими ячейками (устанавливаем свойства ГраницаСправа и ГраницаСлева в значение «Нет линии»).
  4. Настраиваем прижатие текста: для левой ячейки выравнивание по правому краю или авто, для центральной — авто, для правой — по левому краю, чтобы исключить визуальные разрывы между словами.

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

Вариант 2. Использование HTML-макета и поля HTML-документа

Если требуется полноценное форматирование произвольного текста, абзацев и списков, лучшим решением является формирование документа в формате HTML. Посмотрим на алгоритм реализации:

  1. Создаем макет с типом Текстовый документ или HTML-документ.
  2. Описываем структуру печатной формы с использованием стандартных тегов HTML и стилей CSS.
  3. Вставляем в нужные фрагменты теги <span style="color: red; font-weight: bold;">выделенный текст</span>.
  4. Выводим сформированный HTML-код в элемент формы Поле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;

Вариант 3. Использование объекта ФорматированныйДокумент

В платформе 1С предусмотрен встроенный объект ФорматированныйДокумент, предназначенный для хранения и визуального редактирования rich-text содержимого. Он поддерживает разнородное оформление текста: цвет символов, начертание, фон, размеры шрифта.

  1. Размещаем на форме элемент ПолеФорматированногоДокумента.
  2. Программно или интерактивно наполняем объект ФорматированныйДокумент данными.
  3. При необходимости отправляем документ на печать средствами платформы или сохраняем в форматы HTML или RTF.

Вариант 4. Офисные шаблоны (DOCX, RTF, ODT)

Для сложных договоров со сложным форматированием и юридическим текстом стандартной практикой является использование офисных шаблонов:

  1. Создается макет Microsoft Word (DOCX) или OpenOffice (ODT).
  2. В тексте шаблона расставляются маркеры автозаполнения, к которым заранее применяется требуемый цвет, размер и начертание шрифта.
  3. С помощью механизмов БСП (Библиотеки Стандартных Подсистем) для печати офисных документов или через прямое заполнение XML-структуры DOCX выполняется подстановка значений без потери форматирования.

Итог: выделить фрагмент строки цветом внутри одной ячейки объекта ТабличныйДокумент невозможно из-за архитектуры платформы. Для решения задачи выбирайте либо разбивку на смежные ячейки без границ, либо альтернативные типы макетов: HTML, ФорматированныйДокумент или шаблоны DOCX/ODT.

← На главную