Внешняя печатная форма word

Понадобилась однажды срочно внешняя печатная форма на основе word-шаблона для типовой БП 3.0. Я себе примерно представлял как можно сделать такую внешнюю обработку с обычным макетом и встроить её в справочник ‘Дополнительные отчеты и обработки’, но как проделать то же самое с word я не представлял. Но все оказалось довольно-таки просто, правда и пришлось убить на это полдня.

Внимание! После прочтения этой статьи можете ознакомиться с более универсальным вариантом по этой статье ‘Внешняя печатная форма word.Часть2’ !

Итак, для начала создаем наш печатный макет word:

Макет в формате word.
Макет в формате word.

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

Далее создаем новый макет ‘МакетWORD’ с типом ‘Двоичные данные’:

Макет с типом "Двоичные данные".
Макет с типом “Двоичные данные”.

После чего щелкаем по нему два раза и загружаем туда наш файл-шаблон ‘word’:

Наш печатный макет в формате 'word'.
Наш печатный макет в формате ‘word’.

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

Реквизит обработки 'СсылкаНаОбъект'.
Реквизит обработки ‘СсылкаНаОбъект’.

Добавляем реквизит формы ‘ОбъектыНазначения’ – для печати из дополнительных отчетов и обработок. На форму выводим наш реквизит ‘СсылкаНаОбъект’ и созданную нами команду ‘ПечатьСФормы’:

Реквизиты формы.
Реквизиты формы.

Итак, теперь приступаем к 1 этапу – делаем печать из формы обработки:

Результат выполнения данного кода будет следующий:

Внешняя печатная форма WORD.
Внешняя печатная форма WORD.

Супер, но есть проблема, как сделать так что бы это все печаталось через внешние отчеты и обработки? Это то с чем мне пришлось провозиться полдня, и решение на мой взгляд не самое оптимальное, но по крайней мере рабочее!

Для начала в модуле обработки добавляем функцию ‘СведенияОВнешнейОбработке‘:

Затем в модуле формы обработки создаем 2 процедуры и прописываем алгоритм печати из дополнительных отчетов и обработок:

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

Теперь заходим в справочник ‘Дополнительные отчеты и обработки’:

Справочник 'Дополнительные отчеты и обработки'.
Справочник ‘Дополнительные отчеты и обработки’.

И подключаем нашу обработку:

Внешняя печатная обработка 'craft1c_ВнешняяПечатнаяФормаWord'.
Внешняя печатная обработка ‘craft1c_ВнешняяПечатнаяФормаWord’.

Все! Готово! Заходим в сотрудника и тестируем:

Печатная форма из справочника 'Сотрудники'.
Печатная форма из справочника ‘Сотрудники’.

Открывается наш заполненные макет word-файла. Единственный минус что при первой печати программа может запросить разрешение на выполнение не безопасных действий. И придется второй раз выводить на печать. Но это будет только 1 раз в рамках одного сеанса.

Без изменения типовой конфигурации мы сделали внешнюю печатную форму word. Этот механизм работает на БП 3.0 версии ‘3.0.67.63’. Думаю будет работать и на других типовых конфигурациях.

Ну и как всегда готовый бесплатный файл для Вас! Удачи!

Скачать файлы ‘craft1c_ВнешняяПечатнаяФормаWord.epf’

1+

17 комментария

  1. Николай

    Все круто не хвататет работы с табличной частью Все голову сломал не могу найти как добавлять в тч

    1+
    1. Admin (Автор записи)

      Привет! Что ты имеешь ввиду? Расскажи подробнее, может помогу чем…

      1+
      1. Иван

        Через п_СсылкаНаОбъект передается только ФИО сотрудника, а как передавать другие данные? Например название организации?

        2+
        1. Admin (Автор записи)

          Не очень понял, но смотри: п_СсылкаНаОбъект – это ссылка на объект справочника “Сотрудники”, откуда ты уже получаешь все его реквизиты. Имея ссылку на сотрудника, ты можешь любыми доступными способами получить всю связанную информацию (организации, физ. лицо и т.д. – запросами и т.д.). Или ты хочешь еще передавать вообще не связанную информацию с формы? Скинь пример того, что ты хочешь получить, помогу.

          1+
          1. Иван

            Конфигурация ЗУП ПРОФ 3.1.13.76
            Например, мне нужно получить дату и номер трудового договора сотрудника.Я создаю функцию в которую передаю ссылку п_СсылкаНаОбъект,запросом вытягиваю данные отсюда ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.НомерДоговораКонтракта(в этом регистре делаю отбор по п_СсылкаНаОбъект).
            При запуске формы мне выдает Значение не является значением объектного типа

            1+
          2. Admin (Автор записи)

            Написал на почту возможные причины ошибки

            1+
  2. Павел

    Она через открытие формы работает?((

    1+
    1. Admin (Автор записи)

      Согласен, есть небольшой недостаток. Думаю можно сделать и без открытия. Посмотрю, если получится еще один вариант выложу.

      1+
      1. Павел

        считаю это важным аспектом

        1+
        1. Admin (Автор записи)

          Есть Еще один вариант! Напишу статью сегодня. Оказывается столько всего интересного и крутого есть)!

          1+
  3. Admin (Автор записи)
  4. Павел

    Реализовал свой вариант. Если интересно могу скинуть.

    1+
    1. Admin (Автор записи)

      Давай закинь на почту, только если он отличается от второй моей заметки)

      1+
  5. Вера

    Помогите, пожалуйста, новичку. Мне нужно в макете в Word получить из текущего документа Больничный лист (ЗУП КОРП 3.1.13.146) сотрудника, номер и дату листка нетрудоспособности, которые внесены в этот документ (не номер и дату документа Больничный лист).

    1+
    1. Admin (Автор записи)

      Привет. А что не получается конкретно? Вывести эти данные в макет или получить их из конфигурации? Можем состыковаться по teamviewer – я визуально гляну и может быть подскажу. Просто так, бескорыстно.

      1+
      1. Вера

        Привет, комментарий Ивана натолкнул на мысль. Все получилось. Спасибо Вам за обработку – существенная помощь для таких новичков, как я.

        1+
  6. Admin (Автор записи)

    Отлично!

    0

Оставить комментарий

Ваш адрес email не будет опубликован.