При автозаполнении печатных форм и договоров в формате MS Word часто возникает необходимость изменить шрифт выводимого фрагмента. Типичный пример — вывод штрихкода в документе, когда текстовое представление кода должно отображаться специальным шрифтом (например, Code128). Разберем доступные варианты решения этой задачи: от оформления шаблона до программного управления свойствами шрифта через COM-объект.
Самый простой, надежный и быстродействующий способ — заранее отформатировать метку-заполнитель (например, [НомерСчета] или [Штрихкод]) прямо в макете Word.
Рассмотрим, как это работает на практике:
.doc или .docx в Microsoft Word.[Штрихкод]).Code128), его размер и стиль оформления.При выполнении стандартного метода автозамены Execute() подставляемый текст унаследует все параметры шрифта, которые были заданы для исходного маркера. В этом случае дополнительных манипуляций в коде 1С не требуется.
Если параметры шрифта должны меняться динамически в зависимости от условий, настроим свойства шрифта через объект замены 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 применить указанный шрифт к новому тексту.
Альтернативный метод программного вывода — использование закладок в документе Word. Этот способ удобен тем, что позволяет точно позиционировать данные и менять форматирование конкретной области.
Разберем по шагам заполнение через закладку:
ШтрихкодЗакладка).
Если Документ.Bookmarks.Exists("ШтрихкодЗакладка") Тогда
Область = Документ.Bookmarks("ШтрихкодЗакладка").Range;
Область.Text = ЗначениеШтрихкода;
Область.Font.Name = "Code128";
Область.Font.Size = 36;
КонецЕсли;
Если требуется применить более сложное форматирование (цвет, интервалы, подчеркивание), можно записать макрос непосредственно в MS Word:
Alt + F11).Выясним причины, по которым штрихкод может не отображаться или не считываться сканером, даже если шрифт указан верно:
code128.ttf должен быть физически установлен в операционной системе Windows на том компьютере, где происходит формирование или просмотр файла Word. Если шрифта нет в системе, MS Word автоматически заменит его на стандартный (например, Arial или Times New Roman).12345678) в шрифт Code128. Для правильного считывания сканером исходную строку необходимо предварительно кодировать: вычислять стартовые/стоповые символы и контрольную сумму.InlineShapes.AddPicture().