Долгое время разработчики 1С сталкивались с серьезными ограничениями при оформлении печатных форм. Если возникала необходимость в одной ячейке вывести текст, содержащий фрагменты с разным начертанием, цветом или размером шрифта, приходилось прибегать к сложным обходным путям: верстке HTML, генерации внешних файлов или использованию сторонних компонентов. Начиная с версии платформы 8.3.24, ситуация кардинально меняется благодаря внедрению полноценной поддержки типа ФорматированнаяСтрока непосредственно в ячейках табличного документа.
Ранее форматированный текст был доступен только в определенных элементах управления управляемых форм. Теперь же платформа позволяет использовать его внутри макетов ТабличныйДокумент. Это значит, что мы можем программно конструировать текст, в котором каждый символ или слово могут иметь свои атрибуты форматирования, и выводить этот текст в любую ячейку таблицы без потери качества при печати.
Для создания такой строки в коде используется объект ФорматированнаяСтрока. Рассмотрим основные шаги по формированию подобного контента.
Чтобы создать форматированную строку, мы используем массив фрагментов, где каждый фрагмент обладает своим набором свойств. В программном коде это выглядит примерно так:
// Создаем фрагменты текста с разным оформлением
Фрагмент1 = Новый ФорматированнаяСтрока("Цена: ", , , , );
ШрифтДляЦены = Новый Шрифт(,,Истина,,,,,); // Жирный шрифт
Фрагмент2 = Новый ФорматированнаяСтрока("100 руб.", ШрифтДляЦены, WebЦвета.Красный, , );
// Объединяем фрагменты
Результат = Новый ФорматированнаяСтрока(Фрагмент1, Фрагмент2);
После того как объект Результат сформирован, мы можем присвоить его свойству Значение соответствующей области ячейки табличного документа. Это открывает перед нами широчайшие возможности для создания сложных этикеток и ценников.
Одной из вечных проблем разработчиков остаются размеры макетов. В 1С традиционно используется система координат, которую в сообществе называют «попугаями». Чтобы добиться корректного вывода на печать, особенно когда требуется точность в миллиметрах, мы анализируем текущие настройки макета.
Важно помнить, что при работе с макетами:
ШиринаКолонки и ВысотаСтроки, предварительно вычислив коэффициенты пересчета, если текущая версия платформы требует работы с единицами платформы.ПараметрыСтраницы.При использовании ФорматированнаяСтрока в ячейках, платформа берет на себя рендеринг шрифтов. Это избавляет нас от проблем, возникающих при попытке «скрестить» 1С с HTML-версткой, где перенос строк или отображение глифов на разных принтерах могло вести себя непредсказуемо. Теперь, когда мы работаем с нативными объектами 1С, процесс становится более предсказуемым.
Проанализировав ситуацию, мы можем выделить несколько советов для успешного внедрения:
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент. Обратите внимание, что для реализации сложных шаблонизаторов иногда выгоднее подготовить структуру данных в Структура или Массив, а затем сформировать ФорматированнаяСтрока в цикле при обходе результата запроса.Подводя итог, можно сказать, что появление поддержки форматированной строки в табличных документах — это долгожданный качественный скачок. Теперь нам больше не нужно изобретать сложные костыли для простых задач по оформлению печатных форм. Мы можем сосредоточиться на логике учета, а визуальную часть доверять штатным инструментам платформы, которые стали значительно гибче.