gifts2017

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

Опубликовал bah bah (bahbah) в раздел Печать - Печатные формы документов

В публикации представлен шаблон обработки для формирования документов 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
641
.epf 33,72Kb 641 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

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

постоянно лезет и вопрос - включить макросы?
15. Елена Петрова (revril) 03.03.13 20:26
Очень хорошая обработка, учитывая что у нас куча дпечтных форм при кадровых изменениях! Это облегчило написание печатных форм
16. bah bah (bahbah) 04.03.13 09:17
(15) revril, я рад, что Вам пригодилось.
17. Андрей Б (bandru) 14.04.15 18:42
Подскажите пожалуйста, а на компьютере клиента должен быть обязательно MS Office стоять? Или 1С сохраняет в .docx, а затем можно перебросить на рабочее место с Office?
18. bah bah (bahbah) 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) 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) 22.09.15 16:07
(21) Alik_1c, предполагаю, что у Вас не установлена программа, которая связана с active document (в вашем случае - Word)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа