Как программно печатать документы Word из 1С:Управление торговлей 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При автоматизации документооборота в 1С часто возникает задача вывода печатных форм в формате Microsoft Word. Рассмотрим, как реализовать этот процесс в Управление торговлей 10.3, используя технологию закладок (Bookmarks) и объектную модель COM.

Подготовка шаблона документа

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

  1. Создайте документ в Microsoft Word и оформите его так, как должна выглядеть ваша печатная форма.
  2. В местах, куда планируется выводить данные из 1С, установите закладки. Для этого выделите нужное место, перейдите на вкладку «Вставка» -> «Закладка», введите уникальное имя закладки и нажмите «Добавить».
  3. Сохраните файл как шаблон (например, в формате .doc или .dot) и загрузите его в макеты конфигурации 1С.

Реализация логики печати через закладки

Для взаимодействия с Word мы будем использовать COM-объект. Основная сложность, с которой сталкиваются разработчики, заключается в правильной последовательности перехода к закладке и вставки текста. Если вы попытаетесь выбрать все закладки сразу, а затем вставить в них значения, данные могут «схлопнуться» в одном месте. Поэтому важно соблюдать принцип: «выбрали закладку — вставили текст».

Рассмотрим пример программного кода, который необходимо разместить в процедуре печати вашей обработки:


// Получаем макет из конфигурации
СсылкаМакет = ПолучитьОбщийМакет("ДоговорПечатиВЗаказе"); 
Word = СсылкаМакет.Получить(); 

// Активируем документ Word
ДокументWord = Word.Application.Documents(1); 
ДокументWord.Activate(); 

// Последовательное заполнение закладок
Word.Bookmarks("ДатаДоговора").Select(); 
Word.Application.Selection.TypeText(Формат(ДатаДоговора, "ДЛФ=Д")); 

Word.Bookmarks("ПолноеНаименование").Select(); 
Word.Application.Selection.TypeText(НаименованиеПолное); 

Word.Bookmarks("Основание").Select(); 
Word.Application.Selection.TypeText(ОснованиеИП); 

Word.Bookmarks("Выданного").Select(); 
Word.Application.Selection.TypeText(Выданного); 

// Делаем документ видимым для пользователя
Word.Application.Visible = Истина;

Важные нюансы работы с Word

При работе с ActiveDocument важно учитывать несколько технических аспектов:

Заключение и рекомендации

Использование метода Selection.TypeText позволяет эффективно заполнять стандартные шаблоны. Если в процессе работы текст накладывается друг на друга, проверьте, не пропущены ли команды Select() для каждой конкретной закладки. Если же структура документа предполагает динамическое добавление строк (например, табличная часть документа), работа с закладками может стать громоздкой — в таких случаях эффективнее использовать встроенный ТабличныйДокумент с настроенными шрифтами, имитирующими стиль Word.

Для более сложных задач в современных конфигурациях рекомендуется использовать механизмы БСП (Библиотека стандартных подсистем), а именно «Управление печатью», что позволяет унифицировать подключение печатных форм и избежать прямого взаимодействия с COM-объектами.

← На главную