Как в 1С программно или через шаблон указать шрифт для текста в документе Word?

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

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

Способ 1. Задание шрифта непосредственно в шаблоне MS Word

Самый простой, надежный и быстродействующий способ — заранее отформатировать метку-заполнитель (например, [НомерСчета] или [Штрихкод]) прямо в макете Word.

Рассмотрим, как это работает на практике:

  1. Открываем файл макета .doc или .docx в Microsoft Word.
  2. Выделяем фрагмент текста-маркера, вместо которого будут подставляться данные (например, [Штрихкод]).
  3. Устанавливаем для этого текста нужный шрифт (Code128), его размер и стиль оформления.
  4. Сохраняем шаблон в 1С.

При выполнении стандартного метода автозамены Execute() подставляемый текст унаследует все параметры шрифта, которые были заданы для исходного маркера. В этом случае дополнительных манипуляций в коде 1С не требуется.

Способ 2. Программное изменение шрифта через замену (Find.Replacement)

Если параметры шрифта должны меняться динамически в зависимости от условий, настроим свойства шрифта через объект замены COM-соединения Word.Application.

Проанализируем пример кода 1С, в котором для подставляемого значения явно устанавливается шрифт и его размер:


Макет = ПолучитьМакет("ДоговорПоСпецификации_doc");
MSWord = Макет.Получить();

Попытка
    Документ = MSWord.Application.Documents(1);
    Документ.Activate();
    
    // Получаем объект поиска по всему содержимому документа
    Замена = Документ.Content.Find;
    
    // Сбрасываем старые параметры поиска и форматирования
    Замена.ClearFormatting();
    Замена.Replacement.ClearFormatting();
    
    // Указываем нужные параметры шрифта для заменяемого текста
    Замена.Replacement.Font.Name = "Code128";
    Замена.Replacement.Font.Size = 36;
    
    // Выполняем автозамену с передачей параметра использования формата (Format = Истина)
    // ТекстМаркера, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace
    Замена.Execute("[Штрихкод]", Ложь, Истина, Ложь, Ложь, Ложь, Истина, 1, Истина, ПодготовленныйКод, 2);
    
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;

В приведенном примере мы передаем флаг Format = Истина (девятый параметр метода Execute) и заполняем свойство Replacement.Font, что заставляет Word применить указанный шрифт к новому тексту.

Способ 3. Использование закладок (Bookmarks)

Альтернативный метод программного вывода — использование закладок в документе Word. Этот способ удобен тем, что позволяет точно позиционировать данные и менять форматирование конкретной области.

Разберем по шагам заполнение через закладку:

  1. В MS Word вставляем закладку в место вывода (например, с именем ШтрихкодЗакладка).
  2. В коде 1С обращаемся к области закладки и назначаем ей текст и параметры шрифта.

Если Документ.Bookmarks.Exists("ШтрихкодЗакладка") Тогда
    Область = Документ.Bookmarks("ШтрихкодЗакладка").Range;
    Область.Text = ЗначениеШтрихкода;
    Область.Font.Name = "Code128";
    Область.Font.Size = 36;
КонецЕсли;

Как узнать нужные свойства COM-объекта с помощью макроса Word

Если требуется применить более сложное форматирование (цвет, интервалы, подчеркивание), можно записать макрос непосредственно в MS Word:

  1. В MS Word переходим на вкладку Разработчик и нажимаем Запись макроса.
  2. Выполняем вручную все нужные действия по изменению шрифта текста.
  3. Останавливаем запись и открываем редактор Visual Basic (комбинация клавиш Alt + F11).
  4. Изучаем сгенерированный код VBA и переносим аналогичные вызовы свойств и методов в модуль 1С.

Важные особенности при работе со шрифтом Code 128

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

← На главную