Работа с файлами MS WORD из 1C

Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.

 Первым делом надо в файле Word создать текстовые поля, которые будут заполняться из 1С. Это делается на закладке «Разработчик». Там в группе «Инструменты управления» есть кнопка «Инструменты предыдущих версий». Нажав на неё надо выбрать вставку реквизита типа текстовое поле и на месте курсора появится серый прямоугольник. Далее придумываем ему имя, под которым мы будем обращаться к этому полю из 1С и задаем значение по умолчанию, если это нужно.

И таким образом нужно обозначить все места, которые мы будем менять в файле Word. В моем случае это были поля с наименованием клиента, доверенностью клиента, лицом подписывающим договор со стороны клиента, отсрочкой платежа, реквизитами клиента, может еще что забыл… 

Сохраняем исправленный файл в каталоге и далее будем работать с этим файлом.

Из 1С создаем объект типа Word.Application и далее через реквизит Bookmarks работаем с нашими полями

MsWord = СоздатьОбъект(«Word.Application»);
MsWord.Application.Visible = 1;
Word = MsWord.Application;
Word.Documents.Open(ВыбФайл,,1);
Док=Word.Documents(1);
Док.Activate();

// Теперь пишем значение в текстовое поле
Док.Bookmarks(СокрЛП(«Покупатель»)).Select();
Док.Application.Selection.TypeText(СокрЛП(ВыбДоговор.Владелец.ПолнНаименование));

// И так далее для каждого поля
// Полный текст обработки для печати договора я привел в файле.
:

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

10 Comments

  1. Доня

    <<Это делается на закладке «Разработчик». Там в группе «Инструменты управления» есть кнопка «Инструменты предыдущих версий». >>

    Где это все ???

    Открываю файл .ert

    а там ничего это нет.

    Или поподробнее распишите.

    И где файл: Word»

    <<Первым делом надо в файле Word создать текстовые поля, которые будут заполняться из 1С>>

    Прикрепляю что открывается

    Reply
  2. ltfriend

    Зачем что-то вставлять? Можно просто наделать в нужных местах закладок, дать им имена и работать с ними через bookmarks. Идея не нова и уже давно используется.

    Reply
  3. ltfriend

    P.s. Я еще и табличные части в ворд выводил

    Reply
  4. adamx

    (1) Доня, Я прикрепил архив. В нем два файла. Один из них формата Word. В нем примеры полей-закладок. Второй — вы уже открыли — это обработка. Она открывает указанный файл и заполняет поля закладки нужными значениями из справочника договоров. Извиняюсь, если недостаточно подробно расписал :).

    Reply
  5. drogs

    хороший простой пример

    Reply
  6. Lik2707

    У меня сделано также, как в (2). В нужных местах закладки, именованные, с ними и работаем в 1С — присваиваем нужные значения и выводим на печать. Пока никто не жалуется!!! 🙂

    Reply
  7. adamx

    А чем ваш вариант отличается от предложенного?

    Reply
  8. Silenser

    Содержательной части, как бы маловато 😉

    ИМХО, лучше вместо полей использовать переменные Word, т.к. в юридических документах одно и то же значение часто повторяется. В вашем примере придется для каждого такого значения использовать отдельное поле, а в случае с переменными — только одну, т.к. ее можно вставлять в документ произвольное число раз. Так же можно использовать более простой для самостоятельного редактирования пользователями способ — внесение в текст документа меток (редко используемых символов), которые потом заменяются на нужные вам значения.

    Reply
  9. Михаська

    Хороший пример, возьму на заметку, может пригодится

    Reply
  10. CagoBHuK

    Еще один «Hello World!»?

    Reply

Leave a Comment

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