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

06.06.22

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

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

Скачать файлы

Наименование Файл Версия Размер
Печать нескольких документов в Word:
.epf 36,05Kb
9
.epf 36,05Kb 9 Скачать

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

Общая идея в том, чтобы сформировать файл макета в виде временного файла с соответствующим расширением, получить данные для печати с сервера, запустить 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! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7327    22    6    

39

Программа групповой печати чеков ККМ Атол и Штрих из текстового файла, поддержка 54-ФЗ от 01.07.19

Пакетная печать ККМ Кассовые операции Загрузка и выгрузка в Excel Россия Бухгалтерский учет Платные (руб)

Предназначена для групповой печати чеков. Что печатать в теле чека описано в текстовом файле с разделителем запятая (CSV) Подходит для любого языка программирования который умеет записывать в текстовый файл

2000 руб.

26.07.2019    24961    38    17    

23

Групповая печать чеков из банковской выписки с настройкой (БП 3.0)

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

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

4800 руб.

21.08.2019    19817    69    10    

23

Журнал учета ТТН (исходящих и от поставщика) для Бухгалтерии предприятия, редакция 3.0

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

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

2280 руб.

15.04.2014    52568    50    50    

38

Групповая пакетная печать документов "Реализация товаров и услуг" и связанных с ними "Счетов-фактур"

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

Работаете с сетями, у каждой из которых свои требования к оформлению документов? Клиент попросил перепечатать документы за год? Печатаете по 100-500 документов в день, тогда эта обработка Вам просто необходима. Данная обработка позволит Вам сэкономить время при больших объемах печати документов по отгрузке товаров и не только.

1000 руб.

29.09.2016    35802    20    5    

22

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2077    21    progmaster    7    

3

Пакетная выгрузка стандартных бухгалтерских отчетов

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

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

6000 руб.

30.03.2023    6076    4    0    

6

Печать на стороне сервера при помощи Ghostscript

Инструментарий разработчика Пакетная печать Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример выполнения печати на принтер на сервере 1С используя библиотеку Ghostscript

1 стартмани

17.10.2022    4026    19    prog-1s    1    

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