Перейти к содержимому

Внешние печатные формы — пакетная печать и один запрос на данные

Директивный

диагностикаCreateQueryInCycle

#печатные-формы#внешние-обработки#запросы

Внешняя печатная форма (ВПФ):

  • Реализует стандартный интерфейс печати БСП: регистрация с видом «ПечатнаяФорма», назначение на конкретные документы, команды с идентификаторами, экспортная процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода).
  • Обрабатывает массив ссылок, а не одну: пользователь выделяет в списке 50 документов и печатает разом. Данные для всех — одним запросом по массиву (см. запросы в цикле).
  • Заполняет ОбъектыПечати (УправлениеПечатью.ЗадатьОбластьПечатиДокумента) — без этого ломаются комплекты и печать по одному документу из пакета.
  • Макет лежит внутри ВПФ. Типовые макеты и модули конфигурации ради печатной формы не изменяются — иначе теряется весь смысл ВПФ как обновляемо-независимой доработки.
  • Форма проверяется на граничных документах: непроведённый, с пустой табличной частью, с табличной частью на несколько страниц.

ВПФ — самый частый заказ «на вчера», и самые частые грабли в ней одинаковые: форму писали и проверяли на одном документе, а пользователь печатает пачку — и получает либо запрос в цикле на каждый документ (минута ожидания на 100 накладных), либо один общий лист без разбиения по документам, потому что ОбъектыПечати никто не заполнил. А доработка типового макета «заодно» снимает конфигурацию с поддержки ради одной печатной формы.

  • Своя конфигурация не на поддержке, и форма нужна всем постоянно — печатную форму можно встроить в конфигурацию штатно; ВПФ ценна там, где типовую конфигурацию нельзя или дорого менять.
  • Форма по замыслу печатается строго по одному документу (например, из собственной обработки с отдельным сценарием) — требование пакетности снимается, но один запрос на данные и макет внутри ВПФ остаются.