В процессе работы с внешними печатными формами (ВПФ) в современных редакциях 1С:ERP 2.5 многие разработчики сталкиваются с неожиданным поведением системы: после обновления конфигурации печать из непроведенных документов блокируется. Система настойчиво требует проведения документа, даже если логика вашей внешней печатной формы не требует данных из регистров накопления. Давайте разберемся, почему это происходит и как вернуть возможность печати для непроведенных документов — есть обработка печати непроведенных документов для ERP.
Основная причина заключается в обновлении механизмов Библиотеки стандартных подсистем (БСП). В последних версиях ERP разработчики усилили контроль целостности данных — для этого подойдёт настройка правил контроля и проверки документов. Раньше внешние обработки могли свободно считывать данные из табличных частей документа, но теперь подсистема Печать может принудительно проверять состояние документа (статус проведения) на уровне общих модулей. Это делается для предотвращения формирования отчетов с неактуальными данными, однако в задачах оперативного учета часто требуется распечатать черновик, который еще не прошел процедуру проведения.
Давайте попробуем реализовать несколько подходов, включая использование расширений, чтобы обойти это ограничение.
Первым делом необходимо проверить, как зарегистрирована ваша команда в функции СведенияОВнешнейОбработке. В структуре параметров команды можно явно указать требование к проведению. Попробуйте установить параметр ТребуетсяПроведение в значение Ложь.
ПараметрыКоманды = ПолучитьСтруктуруКоманды();
ПараметрыКоманды.Вставить("ТребуетсяПроведение", Ложь);
// Дополнительно можно проверить параметр проверки проведения
ПараметрыКоманды.Вставить("ПроверкаПроведенияПередПечатью", Ложь);
Однако, как показывает практика, в последних релизах ERP одного этого параметра может быть недостаточно, так как проверка вшита глубже в логику конфигурации.
Если простая настройка параметров не помогает, необходимо выполнить отладку. Разберем, как найти источник проблемы:
УправлениеПечатью.ДокументОбъект.Проведен (например, при печати приходного ордера).Проанализируем, откуда ваша ВПФ получает данные. Если вы используете методы получения данных, которые обращаются к регистрам накопления (например, СебестоимостьТоваров или ДвиженияТоваров), то печать без проведения невозможна, так как этих записей физически нет в базе. В таком случае выполним следующие действия:
ПолучитьОбъект() с осторожностью. Если вы работаете с непроведенным документом, старайтесь обращаться к нему через Ссылка.ПолучитьОбъект(), но при этом проверяйте доступность данных на уровне запроса.Всегда помните, что изменения в БСП могут быть глобальными. Если вы столкнулись с проблемой даже в штатных печатных формах (как в случае с ТОРГ-12 из вашего вопроса), возможно, в настройках раздела НСИ и администрирование появилась новая опция, ограничивающая печать. Проверьте настройки «Печатные формы, отчеты и обработки» — иногда там включаются жесткие политики безопасности, требующие обязательного отражения документа в учете.
Если после всех манипуляций проблема сохраняется, рекомендуем перенести логику печати из внешнего модуля объекта в отдельную процедуру, которая не вызывает серверные вызовы, проверяющие статус документа. Таким образом, мы сможем добиться печати черновиков без внесения изменений в саму конфигурацию 1С:ERP, сохраняя ее типовой статус для последующих обновлений.