При формировании печатных форм, отчетов или ценников и этикеток часто возникает задача оформить фрагмент текста другим стилем — например, выделить одно ключевое слово полужирным шрифтом или изменить его цвет, оставив остальной текст обычным. Рассмотрим, как устроена работа со шрифтами в ячейках табличного документа, какие существуют ограничения и как решить эту задачу в разных версиях платформы 1С:Предприятие.
Долгое время ячейка табличного документа могла принимать только единый стиль оформления для всего своего содержимого. Однако, начиная с версии платформы 8.3.24, разработчики добавили возможность использовать объект ФорматированнаяСтрока непосредственно внутри ячеек табличного документа.
Разберем, как применить эту возможность на практике:
ФорматированнаяСтрока программно и передадим его в ячейку.Посмотрим на пример программного заполнения ячейки составным текстом с разным начертанием:
ШрифтЖирный = Новый Шрифт(,, Истина);
ТекстОбычный = "Артикул: ";
ТекстЖирный = "12345-ABC";
МассивФрагментов = Новый Массив;
МассивФрагментов.Добавить(ТекстОбычный);
МассивФрагментов.Добавить(Новый ФорматированнаяСтрока(ТекстЖирный, ШрифтЖирный));
ОбщаяСтрока = Новый ФорматированнаяСтрока(МассивФрагментов);
ОбластьЯчейки.Текст = ОбщаяСтрока;
Если информационная база работает на более ранних релизах платформы или в режиме совместимости, внутри одной классической ячейки ТабличныйДокумент выделить часть текста невозможно. Проанализируем обходные пути, которые позволяют получить нужный визуальный результат.
Самый простой способ — разделить составную строку на несколько колонок или строк таблицы, задав для каждой ячейки свое начертание шрифта.
Разберем особенности этого подхода:
Если требуется вывести сложно структурированный блок текста (например, описание товара в этикетке с маркированными списками и разным начертанием слов), удобнее сформировать HTML-разметку.
Рассмотрим, как это реализуется:
ФорматированныйДокумент.<b> или <span style="...">.Посмотрим на пример формирования HTML-строки:
ТекстHTML = "<html><body><span>Товар: </span><b>Ноутбук Pro</b></body></html>";
ПолеHTMLДокумента.УстановитьТекст(ТекстHTML);
Поверх сетки ячеек табличного документа можно расположить объект коллекции Рисунки с типом Текст. Накладывая несколько текстовых прямоугольников друг за другом с точным расчетом координат, можно сымитировать сложное форматирование в пределах одной логической зоны макета.
При формировании макетов для термопринтеров и печати этикеток стандартные макеты 1С часто уступают командам прямого управления принтером.
Выясним преимущества такого подхода: