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

06.06.22

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

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

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Печать нескольких документов в Word:
.epf 36,05Kb
10
10
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 печать двоичный макет

См. также

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

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

18000 руб.

06.10.2023    11762    31    6    

62

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

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

4800 руб.

21.08.2019    20049    71    10    

24

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

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

2280 руб.

15.04.2014    53053    52    51    

40

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

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

2 стартмани

22.08.2023    2893    43    progmaster    8    

4

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

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

6000 руб.

30.03.2023    6242    4    0    

6

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

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

1 стартмани

17.10.2022    4619    27    prog-1s    1    

8

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

Расширение с функционалом "печать по умолчанию" для форм документов и списков документов в режиме управляемого приложения для типовых распространенных конфигураций: Бухгалтерия 3.0 (базовая/проф/корп), Зарплата и управление персоналом 3, Управление торговлей 11, Комплексная автоматизация 2, ERP 2

2 стартмани

26.04.2022    4029    11    zhuravlev_as    12    

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