Шаблон печатной формы для вывода информации в MS Word


В публикации представлен шаблон обработки для формирования документов MS Word по данным информационной базы с комментариями и пояснениями

Конфигурация ЗУП была выбрана только из-за того, что была под рукою. Поскольку это шаблон — изменив запрос и слегка переделав обработку заполнения документа, можно получить печатную форму для любой конфигурации на платформе 1С: Предприятие 8.

 

Концепция работы с документом MS Word из 1С: Предприятие 8

 

1С при работе с офисными приложениями MS Office использует технологию OLE Automation. В принципе есть и другие варианты, но для создания полноценного офисного документа данная технология является наиболее удобной.

Технология определяет те COM интерфейсы, через которые интерпретатор языка будет общаться с объектом. Фактически можно обращаться к методам MS Word как будто вы программируете макрос на VBA внутри самого MS Word. 

 

В этом Шаблоне обработки формирования печатных форм затрагиваются наиболее часто используемые возможности MS Word — работа с форматированным текстом и таблицами.

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

К таким ситуациям относятся в первую очередь формирование приказов специфического оформления, трудовых договором, договоров материальной ответственности. В общем, такая обработка призвана автоматизировать «вбивание» в шаблонный документ данных конкретного сотрудника или документа.

Внесение в текст данных ИБ (информационной базы) происходит следующим образом:

1) Подготавливается шаблон (документ MS Word) с соответствующим форматированием. На месте где должны будут стоять данные из ИБ ставим специальные метки. Конкретного соглашения не существует, главное чтобы метки небыли похожи на обычный текст, т.е. чтобы программно нельзя было перепутать текст с меткой. Я использовал следующее соглашение: метка начинается с ш_ и пишется без пробелов.

2) У меток должно быть форматирование конечных данных.

3) Сохраняем этот документ в обработку. Добавляем макет с типом Active document и при создании макета указываем файл .doc подготовленного в п.1 шаблона.

4) При заполнении печатной формы создаем из макета OLE Automation документ и заполняем его. Заполнение текстового содержания представляет собой замену меток нужным тексом, как если бы Вы воспользовались функцией «Заменить» при ручном редактировании документа. С таблицами несколько сложнее, т.к. заранее не известно число строк, и строки приходится добавлять динамически. 

5) Показываем или сохраняем получившийся документ MS Word.

 Документ готов!!!

 

Некоторые замечания:

 Для того чтобы это было действительно внешней печатной формой в модуль объекта нужно добавит процедуру

    —   Функция Печать()    Экспорт

 Она будет вызываться при вызове печатной формы.

 К тому же обязательно наличие реквизита СсылкаНаОбъект. Будьте внимательны с типом реквизита. Он должен включать тип объекта, который вы собираетесь печатать. При вызове внешней печатной формы он инициализируется ссылкой на объект, из которого производится печать.

 Ну и хорошо бы в макете  Параметры_Авторегистрации указать нужные объекты, чтобы регистрация печатной формы в системе не требовала лишних движений.

 

Краткое примечание добавил в обработку в качестве текстового макета.

 В качестве небольшого развлечения добавил возможность выбора из нескольких шаблонов. Возможно кому-нибудь пригодится и такой вариант.

22 Comments

  1. irishen

    Хотелось бы услышать комментарии от уже использующих шаблоны!

    Reply
  2. bahbah

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

    Именно поэтому решил создать эту публикацию — подумал что будет полезно не только мне.

    Reply
  3. winise007

    Большое человеческое спасибо, ещё на семерочке начал пользоваться такой технологией. Время сэкономило просто море. Респект и уважуха !

    Reply
  4. bahbah

    (3) winise007, Всегда рад помочь. Кстати, одна из моих публикация, а именно Печать Извещения об отпуске из документа «График отпусков организации» построена как-раз на основе этого шаблона.

    Reply
  5. bobank

    Как подобное реализовать на управляемой форме. Нет возможности получить макет на клиенте. При попытке получения его на сервере естественно возникает ошибка преобразования типов.

    Reply
  6. Rustig

    Спасибо, попробую

    Reply
  7. JohnySC

    Отлично, очень помогло! Раньше сам делал подобное с екселем, до ворда руки не доходили, а тут раз и готовое решение 🙂 Спасибо!

    Reply
  8. bahbah

    (7) JohnySC, я очень рад, что Вам пригодилось.

    Reply
  9. 1malder1

    Только собирался делать что то подобное, спасибо большое 🙂

    Reply
  10. salus

    Мой опыт говорит о том, что использование закладок вместо меток ускоряет обработку шаблона.

    Reply
  11. fr.myha

    Спасибо! Взял на заметку!

    Reply
  12. SergeyGladyshev

    Очень полезная обработка, автору респект!

    Reply
  13. FaKer1980

    Очень понравилось

    Reply
  14. zavsom

    {ВнешняяОбработка.ПриказОНачислении.МодульОбъекта(494)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (0x80020005)

    постоянно лезет и вопрос — включить макросы?

    Reply
  15. revril

    Очень хорошая обработка, учитывая что у нас куча дпечтных форм при кадровых изменениях! Это облегчило написание печатных форм

    Reply
  16. bahbah

    (15) revril, я рад, что Вам пригодилось.

    Reply
  17. bandru

    Подскажите пожалуйста, а на компьютере клиента должен быть обязательно MS Office стоять? Или 1С сохраняет в .docx, а затем можно перебросить на рабочее место с Office?

    Reply
  18. bahbah

    (17) bandru, на компьютере, где будет выполняться код обработки обязательно должен стоять MS Office, т.к. используется технология OLE. Не встречал способа без ВК и других программ формировать файлы MS Word, хотя они точно есть.

    Reply
  19. Гость

    Добрый день! Скачала вашу обработку немного непонятны эти пункты 2) У меток должно быть форматирование конечных данных и 4) При заполнении печатной формы создаем из макета OLE Automation документ и заполняем его. Заполнение текстового содержания представляет собой замену меток нужным текстом, как если бы Вы воспользовались функцией «Заменить» при ручном редактировании документа. С таблицами несколько сложнее, т.к. заранее не известно число строк, и строки приходится добавлять динамически. Вопрос: что значит метки должны быть форматированными, это как? И Где этот макет OLE Automation?

    Reply
  20. bahbah

    2) если нужно, чтобы вставляемый текст был жирным, нужно метку сделать жирной, если курсивом — метка также должна быть курсивом

    4)макет — макет Active document, в который сохраняем документ-шаблон. OLE Automation — Созданный программно экземпляр программы Word, в которой открыт документ, который сохранен в макете обработки.

    Reply
  21. Alik_1c

    когда в конфигураторе добавляешь новую обработку и в ней макет с типом active document и выбираешь файлик с расширением doc то пишет неизвестный формат

    Reply
  22. bahbah

    (21) Alik_1c, предполагаю, что у Вас не установлена программа, которая связана с active document (в вашем случае — Word)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *