Печать нескольких документов в Word

06.06.22

Задачи пользователя - Пакетная печать

Методика решения задачи пакетной печати в Word (или другое приложение Office) посредством двоичного макета. Для разработчиков нестандартных конфигураций.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Печать нескольких документов в Word:
.epf 36,05Kb
11
11 Скачать (1 SM) Купить за 1 850 руб.

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

Общая идея в том, чтобы сформировать файл макета в виде временного файла с соответствующим расширением, получить данные для печати с сервера, запустить Word через COM-соединение и вставлять временный файл в документ Word столько раз, сколько документов (или других объектов 1С) имеется в данных для печати, заполняя каждый вставленный макет данными соответствующего документа по следующему алгоритму:

 

 

Далее продолжу для тех, кому небезынтересны детали.

У решаемой задачи есть две особенности. Первая состоит в том, что макет находится на сервере, а печать происходит на клиенте. Это не является проблемой, решение давно известно – передача макета в виде двоичных данных через временное хранилище. В связи с этим макет Word стоит сохранять сразу в виде двоичных данных, а не как Active Document. Во втором случае потребуется дополнительное его преобразование в двоичные данные. После передачи на клиент двоичные данные преобразуются во временный файл с расширением docx. Кстати, тем же способом можно работать и с другим приложением MS Office. Вторая - макет нужно заполнять данными разных объектов.

Чтобы расширить рамки задачи от конкретной печатной формы до методики мне показалось логичным представить содержимое макета в виде набора заполняемых данными объектов Word - параметров. В моём случае – это закладки, замены и таблицы:

 

3 параметра макета

 

Под закладками и заменами понимаются 2 основных метода, используемых для заполнения шаблонов Word – вставка текста в местах закладок и замена предварительно подготовленных шаблонов текстов. Для заполнения таблицы нужно создать их в макете, добавив первые строки с заголовками колонок.

Параметры нужно разместить в теле макета так, чтобы при печати он принимал нужный вид:

 

Размещение параметров в макете

 

Для работы с параметрами Word требуется получить данные объектов 1С в удобном для последующей обработки виде. Этот вид сложился в 3х уровневую модель:

 

 

каждый уровень которой представляет собой набор параметров Word и данных 1С. Набор параметров на любом уровне может быть расширен по сравнению с приведённым в обработке, в зависимости от опыта работы с Word и решаемой задачи. Например, для вставки картинок.

1 уровень – макет. Параметры воздействуют на весь документ целиком. Я добавил «Разделитель» для управления выводом печатных форм объектов 1С, каждый на своей странице или с новой строки. Но задачи могут быть поставлены по-разному. Например, один объект таким шрифтом, другой другим и т.п. В зависимости от задачи набор параметров может быть расширен. У меня также добавлен параметр «Метод», который определяет задействованный для установки текста закладок метод Word. По той причине, что более оптимальный метод “Range” не срабатывает в случае, если закладка занимает первую позицию в документе Word.

2 уровень – объект, данные его шапки. У меня здесь параметров нет, только данные в виде массивов структур вида {«Имя», «Текст»} для закладок, {«Поиск», «Замена»} для замен. Для таблиц структур недостаточно, так как неизвестны ни количество колонок произвольной таблицы макета, ни количество её строк. Данные таблиц представляются в виде двумерных массивов, в первом измерении которых строки таблиц, во втором – значения колонок. Порядок таблиц должен совпадать с порядком их расположения в макете. На уровне объекта используется структура вида {«Таблицы»}, значением которой является массив таблиц. При печати проверяется соответствие количества элементов массива – табличный частей объекта 1С – количеству таблиц макета.

3 уровень – табличные части объекта или произвольно сформированные таблицы, соответствующие таблицам макета. В Word таблица - это отдельный объект со своим форматированием. На этом уровне я добавил параметр «Формат» - массив с числом элементов = числу колонок таблицы, который содержит числовые значения констант Word для выравнивания содержимого ячеек по горизонтали, поскольку числа принято выравнивать по правому краю, текст – по левому или по центру. Значения форматов колонок задаются в коде той же функции - ПолучитьДанныеДокументов() – в которой заполняются и остальные данные.

На последнем этапе переноса данных из сформированной структуры в документ Word особых сложностей нет. Разве что нужно учесть упомянутую выше некорректность метода “Range” при размещении закладки в начале документа. Проверяется корректность полученной структуры, добавляется документ Word, считываются параметры верхнего уровня, запускаются соответствующие методы Word или устанавливаются значения констант, вставляется пустой макет из временного файла, далее цикл по объектам 1С, формирование печатного документа в результате обработки закладок, замен, цикл по таблицам, заполнение ячеек в соответствии с форматами выравнивания.

Закладки в документе печати, после заполнения макета, не удаляются автоматически. Встречались обратные утверждения, оспаривать не буду, возможно, дело в особенностях версии Word. Чтобы избежать некорректности, после заполнения пустого шаблона данными очередного объекта 1С, закладки из документа печати удаляются с тем, чтобы после добавления очередного файла макета их позиция однозначно определяла местоположение вставки текста.

Форма обработки имитирует данные документа 1С с табличными частями, которые собираются в соответствующие структуры и массивы согласно уровням модели в функции ПолучитьДанныеДокументов, принимающей массив объектов печати в качестве параметра. То есть так, как это и происходит в параметризуемой команде конфигурации. Сами данные обрабатываются в клиентской процедуре ПечатьДокументов(). В форме также задаются параметры верхнего уровня модели – Метод и Разделитель.

Макет расположен в макетах обработки. Он содержит следующие закладки:

 

Закладки макета обработки

 

Другие параметры макета:

 

Замены и таблицы в макете

{Адрес поставщика} и {Адрес организации} - тексты замен, таблицы заданы строкой с наименованиями колонок.

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

 

Результат печати

 

Обработка приложена в виде внешней. Встраиваемой её не делал, потому что  она не предназначена для пользователей. Работа обработки проверена на платформе 8.3.20.1674, в конфигурации БП, но в принципе, конфигурация значения не имеет.

На этом всё. Надеюсь, что изложенное в статье решение пригодится сообществу. Всем удачи!

Пример обработка методика печати с макетом работа Word печать двоичный макет

См. также

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15395    35    7    

70

Пакетная печать Банковские операции Кассовые операции Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Обработка для групповой печати чеков ККМ с настройкой, загруженных из банковской выписки. На основании документа Поступление на расчетный счет!

4800 руб.

21.08.2019    20271    75    10    

24

Пакетная печать Регламентированный учет и отчетность Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Быстрое формирование сразу нескольких видов стандартных бухгалтерских отчетов - .Анализ счета, Карточка счета, Оборотно-сальдовая ведомость по счету, Отчет по проводкам. В периоды проведения проверок со стороны ФНС в деятельности предприятий часто возникает необходимость предоставления сведений из бухгалтерского учета. Обработка сократит время на формирование отчетов бухгалтеру.

6000 руб.

30.03.2023    6420    5    0    

7

Печатные формы Пакетная печать Оптовая торговля Бухгалтер Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Мастер пакетной печати отгрузочных и товаросопроводительных документов. Продукт оптимизирован для алкогольной продукции. Поддерживает печатные формы ТОРГ-12, счет-фактура, разделы А и Б справки к ТТН, копии сертификатов, ТТН (1-Т), а также ТН (Приложение4). Все формы заполняются автоматически, а данные в полях формы (актуально для ТН и ТТН) сохраняются для каждого документа и не требуют заполнения при повторных открытиях. Предназначена для конфигурации "1С:Управление торговлей" , ред. 10.3, ред. 11.1, "1С:Бухгалтерия предприятия, ред. 3.0". Не требует изменений конфигурации. Печать суммы акциза в с/ф, УПД и справке А. Поддержка требований торговых сетей "Метро" и "Ашан".

6000 руб.

04.04.2013    129712    142    188    

112

Пакетная печать Документооборот и делопроизводство (СЭД) Оптовая торговля Печатные формы Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработка содержит новую форму Транспортной накладной с 01.01.2021 г. (в ред. Постановления Правительства РФ от 30.11.2021 № 2116) В отличие от внешних печатных форм, подключаемых к документу реализации, позволяет вести отдельный журнал документов. Дополнительным преимуществом является возможность формирования документов за поставщика.

2280 руб.

15.04.2014    53482    53    51    

41

Пакетная печать Печатные формы Программист Пользователь Руководитель проекта 1С:Управление торговлей 10 Абонемент ($m)

Внешние печатные формы УПД, УКД (Универсальный передаточный/корректировочный документ) в редакции по постановлению №1096 начиная с 2024.10.01, поддерживающая вывод данных прослеживаемости для УТ 10.3

1 стартмани

30.09.2024    5569    505    zhuravlev_as    48    

5

Пакетная печать Печатные формы Системный администратор Программист Бухгалтер Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бухгалтерский учет Налоговый учет Управленческий учет Абонемент ($m)

Внешние печатные формы УПД (Универсальный передаточный документ), Счет-фактура (+ корректировочный) (+ "в валюте") в редакции постановления Правительства РФ №1096 от 01.10.2024 для 1С 8 Управление торговлей 11.5, Комплексная автоматизация, Управление предприятием ERP 2.5 для документов вида "Реализация товаров и услуг", "Счет-фактура (выданный)". С данными прослеживаемости.

1 стартмани

27.09.2024    3160    355    zhuravlev_as    33    

7
Оставьте свое сообщение