Универсальная печать в MS Word

Универсальная печать в шаблон документа в формате MS Word

Понадобилось мне срочно создать несколько форм договоров для ЗУП, пошарил по интырнету ничего похожего не нашел — очень удивился, «наверно плохой из меня искатель», подумал я и решил быстро написать сам. Идея следующая:

Есть документ (договор, например) в формате MS Word

-выделяем в нем «переменные поля»;

-берем консоль запроса пишем запрос по получению данных для заполнения документа;

-добавляем текстовый макет в обработку с именем «ТекстЗапроса+Идентификатор документа» из которого будет печататься форма, вставляем в него текст запроса;

-в файле формата MS Word заменяем переменные поля на «параметры» типа %НазваниеОрганизации% и т.д. 

-запускаем обработку указываем путь где лежит наш шаблон и «Печатаем»… 

 

Таким образом основная работа по созданию печатной формы сводится к двум действиям «написать запрос» и «создать шаблон».

 

Обработка подойдет для любой конфигурации, любого документа. Сейчас она была создана для ЗУП, документов Прием на работу и Кадровое перемещение, для использования в других документах, необходимо изменить тип реквизита «СсылкаНаОбъект»;

 

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

11 Comments

  1. ZOMI

    полно вариантов на инфостарте http://infostart.ru/catalog/?q=Word&sa=%CD%E0%E9%F2%E8

    Reply
  2. Ctrl P

    (1) ну будет еще одна, с заявкой на «универсальность» — пролистав первые 5 страниц, я так и не нашел ничего подобного. идея этой обработки — сродни идеи СКД — создать печатную форму не написав ни одной строчки кода…

    Reply
  3. Xolli

    идея отличная

    Reply
  4. Angeros

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

    Reply
  5. Crush

    Вместо поиска и замены строк вида %параметр78% можно использовать переменные. Скорость не замерял, но интуиция подсказывает, что будет эффективнее.

    Заполнять переменные вот так:

    Для каждого кз Из Параметры Цикл

    ОбъектВорд.Variables.Add(кз.Ключ).Value = кз.Значение;

    КонецЦикла;

    ОбъектВорд.Fields.Update();

    И тут можно почитать: http://support.microsoft.com/kb/306281

    Reply
  6. Ctrl P

    (5)да я рассматривал этот вариант, мне не понравилось то, что один и тот же параметр в разных местах надо называть по разному, т.о. его придется дублировать при заполнении «СтруктурыДанных», т.е. если в договоре встречается 22споловиной раза имя работника, то нужно создать 22споловиной уникальных ключа — мне это показалось излишне геморно… и для создателя «шаблона» и для создателя «набора данных»…

    Reply
  7. Crush

    (6) видать о разных вещах говорим. Сейчас попробовал — вставлять можно сколько угодно.

    Вставка — экспрес блок — поле — docVariable. Задаешь имя, например: НаименованиеОрганизации

    Потом в еще в нескольких местах такое же проделываешь.

    Далее выполняешь макрос:

    Sub УстановитьПерем()

    Dim fName As String

    fName = «прироги и копыта»

    ActiveDocument.Variables.Add Name:=»НаименованиеОрганизации», Value:=fName

    MsgBox ActiveDocument.Variables(«ad»).Value

    End Sub

    Если нужно изменить значение, то:

    Sub Изменить()

    ActiveDocument.Variables(«НаименованиеОрганизации»).Value = «Рюмашка»

    Selection.WholeStory

    Selection.Fields.Update

    End Sub

    Простите за мой VB

    Reply
  8. sevipa

    А зачем выкладывать двумя файлами?

    Reply
  9. Ctrl P

    (8) Один файл обработка, один для пимера как «создавать шаблон»…

    Reply
  10. stas1kbob

    примерчик выходного документа бы

    Reply
  11. search

    Идея отличная. Еще бы в колонтитулах замена работала — было бы совсем хорошо

    Reply

Leave a Comment

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