При использовании внешних печатных форм в конфигурации 1С:Бухгалтерия предприятия 2.0 после очередного обновления релиза (в частности, начиная с релиза 2.0.66.32) пользователи часто сталкиваются с критической ошибкой:
Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (ИдентификаторГосКонтракта)
Рассмотрим подробно причины возникновения этой неисправности и разберем по шагам, как отредактировать внешнюю печатную форму для восстановления ее работоспособности.
Данная проблема вызвана изменениями в законодательстве Российской Федерации (Постановления Правительства РФ № 625 и № 981 к Постановлению № 1137). Согласно этим нормативным актам, в форму счета-фактуры была добавлена обязательная строка 8 — «Идентификатор государственного контракта, договора (соглашения)».
В типовых конфигурациях 1С разработчики обновили механизмы и общие модули формирования печатных форм (в частности, модуль учета НДС). При вызове функции печати система ожидает, что в структуре заголовочных данных счета-фактуры будет присутствовать ключ ИдентификаторГосКонтракта.
Так как внешние печатные формы (файлы .epf) содержат собственные вынесенные алгоритмы формирования структуры данных или тексты запросов, скопированные из старых релизов, в них отсутствует данный реквизит. При попытке обращения типового кода к отсутствующему полю структуры платформа выбрасывает исключение «Поле объекта не обнаружено».
Проанализируем программный код внешней печатной формы. В месте, где формируется структура заголовочных данных документа (обычно это переменная с именем ДанныеСчетаФактуры или аналогичная), необходимо принудительно добавить требуемый ключ.
Разберем по шагам порядок действий в конфигураторе:
.epf) в режиме конфигуратора.
ДанныеСчетаФактуры.Вставить("ИдентификаторГосКонтракта", СсылкаНаОбъект.ИдентификаторГосКонтракта);
Если в вашей организации государственные контракты не используются и данный параметр не имеет значения для выгрузки, в качестве временного решения можно передать пустую строку:
ДанныеСчетаФактуры.Вставить("ИдентификаторГосКонтракта", "");
Если внешняя форма формирует данные с помощью объекта Запрос, правильнее всего доработать сам текст запроса, чтобы реквизит считывался напрямую из базы данных.
В секцию ВЫБРАТЬ запроса выборки данных счета-фактуры необходимо добавить поле реквизита:
ВЫБРАТЬ
СчетФактураВыданный.Ссылка КАК Ссылка,
СчетФактураВыданный.Номер КАК Номер,
СчетФактураВыданный.Дата КАК Дата,
СчетФактураВыданный.ИдентификаторГосКонтракта КАК ИдентификаторГосКонтракта
ИЗ
Документ.СчетФактураВыданный КАК СчетФактураВыданный
Если документ-источник в базе не содержит этого реквизита или форма универсальна, можно выбрать пустую строку с заданным псевдонимом:
"" КАК ИдентификаторГосКонтракта
Помимо кода обработки, обратите внимание на табличный документ (макет) внешней печатной формы. Посмотрим на структуру печатного бланка: для корректной выгрузки и отображения строки 8 в макете также должен присутствовать параметр с именем ИдентификаторГосКонтракта.
ИдентификаторГосКонтракта.Подстановка пустой строки "" решает техническую проблему формирования печатной формы. Однако помните: если ваша организация работает по государственным контрактам или гособоронзаказу (в рамках 44-ФЗ, 223-ФЗ или 275-ФЗ), незаполнение строки 8 в выставленной счет-фактуре является нарушением требований статьи 169 Налогового кодекса РФ. Это может повлечь отказ налоговых органов в принятии НДС к вычету у покупателя. В таких случаях реквизит должен обязательно заполняться реальными данными из документа.