Как изменить шрифт части текста в ячейке макета 1С?

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

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

Штатная поддержка форматирования фрагментов текста (начиная с 1С 8.3.24)

Долгое время ячейка табличного документа могла принимать только единый стиль оформления для всего своего содержимого. Однако, начиная с версии платформы 8.3.24, разработчики добавили возможность использовать объект ФорматированнаяСтрока непосредственно внутри ячеек табличного документа.

Разберем, как применить эту возможность на практике:

  1. Убедимся, что режим совместимости конфигурации установлен на версию 8.3.24 или отключен.
  2. В свойствах ячейки макета или программно переключим режим отображения содержимого на форматированную строку.
  3. Сформируем объект ФорматированнаяСтрока программно и передадим его в ячейку.

Посмотрим на пример программного заполнения ячейки составным текстом с разным начертанием:


ШрифтЖирный = Новый Шрифт(,, Истина);
ТекстОбычный = "Артикул: ";
ТекстЖирный = "12345-ABC";

МассивФрагментов = Новый Массив;
МассивФрагментов.Добавить(ТекстОбычный);
МассивФрагментов.Добавить(Новый ФорматированнаяСтрока(ТекстЖирный, ШрифтЖирный));

ОбщаяСтрока = Новый ФорматированнаяСтрока(МассивФрагментов);
ОбластьЯчейки.Текст = ОбщаяСтрока;

Решения для версий платформы ниже 8.3.24

Если информационная база работает на более ранних релизах платформы или в режиме совместимости, внутри одной классической ячейки ТабличныйДокумент выделить часть текста невозможно. Проанализируем обходные пути, которые позволяют получить нужный визуальный результат.

Вариант 1. Разбиение текста на отдельные ячейки макета

Самый простой способ — разделить составную строку на несколько колонок или строк таблицы, задав для каждой ячейки свое начертание шрифта.

Разберем особенности этого подхода:

  1. В макете создается несколько смежных ячеек, при этом границы между ними убираются.
  2. В первую ячейку помещается обычный текст, во вторую — выделенный.
  3. Ограничение: если длина выводимого текста заранее неизвестна или текст динамически переносится на новую строку, красиво состыковать слова без лишних пробелов может быть затруднительно.

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

Если требуется вывести сложно структурированный блок текста (например, описание товара в этикетке с маркированными списками и разным начертанием слов), удобнее сформировать HTML-разметку.

Рассмотрим, как это реализуется:

  1. В качестве макета создается текстовый документ с HTML-разметкой или объект ФорматированныйДокумент.
  2. В разметке для выделения фрагментов применяются стандартные теги, такие как <b> или <span style="...">.
  3. Вывод на печать выполняется через встроенное поле HTML-документа или встроенные средства работы с веб-страницами.

Посмотрим на пример формирования HTML-строки:


ТекстHTML = "<html><body><span>Товар: </span><b>Ноутбук Pro</b></body></html>";
ПолеHTMLДокумента.УстановитьТекст(ТекстHTML);

Вариант 3. Использование графических объектов (РисунокТабличногоДокумента)

Поверх сетки ячеек табличного документа можно расположить объект коллекции Рисунки с типом Текст. Накладывая несколько текстовых прямоугольников друг за другом с точным расчетом координат, можно сымитировать сложное форматирование в пределах одной логической зоны макета.

Вариант 4. Прямая отправка команд на языках управления принтером (ZPL, TSPL, ESC/POS)

При формировании макетов для термопринтеров и печати этикеток стандартные макеты 1С часто уступают командам прямого управления принтером.

Выясним преимущества такого подхода:

  1. Каждому печатаемому текстовому блоку в коде команды задаются индивидуальные координаты, масштаб и начертание.
  2. Исключаются погрешности масштабирования табличного документа 1С при выводе на печать.
  3. Скорость формирования и отправки задания на специализированный принтер возрастает.
← На главную