Шаблон печатной формы для вывода информации в 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.

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

 

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

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

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

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

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

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

 

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

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

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

Наименование Файл Версия Размер
Шаблон обработки для вывода данных в MS Word
.epf 33,72Kb
24.02.13
657
.epf 33,72Kb 657 Скачать

См. также

Комментарии
1. И С (irishen) 21.06.12 16:58 Сейчас в теме
Хотелось бы услышать комментарии от уже использующих шаблоны!
2. bah bah (bahbah) 149 21.06.12 18:09 Сейчас в теме
Лично я уже множество форм сделал по этой технологии. Мои кадровики принципиально не любят что-то делать руками, поэтому появилась масса печатных форм и формочек, различного рода кадровых приказов, печатающихся из кадрового перемещения и прочих документов.
Именно поэтому решил создать эту публикацию - подумал что будет полезно не только мне.
3. Владимир Викторович (winise007) 25.06.12 10:55 Сейчас в теме
Большое человеческое спасибо, ещё на семерочке начал пользоваться такой технологией. Время сэкономило просто море. Респект и уважуха !
4. bah bah (bahbah) 149 25.06.12 18:02 Сейчас в теме
(3) winise007, Всегда рад помочь. Кстати, одна из моих публикация, а именно Печать Извещения об отпуске из документа "График отпусков организации" построена как-раз на основе этого шаблона.
5. bobank (bobank) 122 10.08.12 13:44 Сейчас в теме
Как подобное реализовать на управляемой форме. Нет возможности получить макет на клиенте. При попытке получения его на сервере естественно возникает ошибка преобразования типов.
6. г. Казань Рустем Гумеров (Rustig) 822 24.08.12 22:14 Сейчас в теме
7. Evgeny Sc (JohnySC) 177 27.08.12 13:05 Сейчас в теме
Отлично, очень помогло! Раньше сам делал подобное с екселем, до ворда руки не доходили, а тут раз и готовое решение :-) Спасибо!
8. bah bah (bahbah) 149 27.08.12 15:16 Сейчас в теме
(7) JohnySC, я очень рад, что Вам пригодилось.
9. Владимир Кухар (1malder1) 7 19.09.12 15:45 Сейчас в теме
Только собирался делать что то подобное, спасибо большое :)
10. Евгений Мазай (salus) 17 09.10.12 18:57 Сейчас в теме
Мой опыт говорит о том, что использование закладок вместо меток ускоряет обработку шаблона.
11. muha muhaha (fr.myha) 14.11.12 10:51 Сейчас в теме
Спасибо! Взял на заметку!
12. Сергей Гладышев (SergeyGladyshev) 28.11.12 11:50 Сейчас в теме
Очень полезная обработка, автору респект!
13. Миха (FaKer1980) 10 19.12.12 14:06 Сейчас в теме
14. zavsom1 zavsomovich (zavsom) 47 25.01.13 17:47 Сейчас в теме
{ВнешняяОбработка.ПриказОНачислении.МодульОбъекта(494)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (0x80020005)

постоянно лезет и вопрос - включить макросы?
15. Елена Петрова (revril) 03.03.13 20:26 Сейчас в теме
Очень хорошая обработка, учитывая что у нас куча дпечтных форм при кадровых изменениях! Это облегчило написание печатных форм
16. bah bah (bahbah) 149 04.03.13 09:17 Сейчас в теме
(15) revril, я рад, что Вам пригодилось.
17. Андрей Б (bandru) 14.04.15 18:42 Сейчас в теме
Подскажите пожалуйста, а на компьютере клиента должен быть обязательно MS Office стоять? Или 1С сохраняет в .docx, а затем можно перебросить на рабочее место с Office?
18. bah bah (bahbah) 149 20.04.15 16:41 Сейчас в теме
(17) bandru, на компьютере, где будет выполняться код обработки обязательно должен стоять MS Office, т.к. используется технология OLE. Не встречал способа без ВК и других программ формировать файлы MS Word, хотя они точно есть.
19. Гость 05.08.15 14:39 Сейчас в теме
Добрый день! Скачала вашу обработку немного непонятны эти пункты 2) У меток должно быть форматирование конечных данных и 4) При заполнении печатной формы создаем из макета OLE Automation документ и заполняем его. Заполнение текстового содержания представляет собой замену меток нужным текстом, как если бы Вы воспользовались функцией "Заменить" при ручном редактировании документа. С таблицами несколько сложнее, т.к. заранее не известно число строк, и строки приходится добавлять динамически. Вопрос: что значит метки должны быть форматированными, это как? И Где этот макет OLE Automation?
20. bah bah (bahbah) 149 06.08.15 17:21 Сейчас в теме
2) если нужно, чтобы вставляемый текст был жирным, нужно метку сделать жирной, если курсивом - метка также должна быть курсивом
4)макет - макет Active document, в который сохраняем документ-шаблон. OLE Automation - Созданный программно экземпляр программы Word, в которой открыт документ, который сохранен в макете обработки.
21. Альберт Шакиров (Alik_1c) 04.09.15 14:51 Сейчас в теме
когда в конфигураторе добавляешь новую обработку и в ней макет с типом active document и выбираешь файлик с расширением doc то пишет неизвестный формат
22. bah bah (bahbah) 149 22.09.15 16:07 Сейчас в теме
(21) Alik_1c, предполагаю, что у Вас не установлена программа, которая связана с active document (в вашем случае - Word)
Оставьте свое сообщение