Как исправить ошибку «Поле объекта не обнаружено (ГосконтрактЕИС)» в 1С:Бухгалтерии 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При обновлении типовых конфигураций «1С:Бухгалтерия» до актуальных версий (например, 3.0.121.25 и выше) разработчики нередко добавляют новые механизмы интеграции с внешними системами, в частности, с Единой информационной системой в сфере закупок (ЕИС). Это приводит к тому, что внешние обработки, написанные для старых версий, перестают работать и выдают ошибку вида: {Общий модуль.РеализацияТоваровУслугФормы.Модуль(442)}: Поле объекта не обнаружено (ГосконтрактЕИС).

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

Причина возникновения ошибки

Ошибка возникает из-за несовпадения структуры данных. Типовой механизм 1С теперь при проведении или изменении документа «Реализация товаров и услуг» обращается к методу ЭлектронноеАктированиеБП.ДополнитьДанныеСтрокиСведениямиПоГосконтракту. Этот метод ожидает, что в передаваемой структуре ДанныеОбъекта будет существовать ключ ГосконтрактЕИС.

Если ваша внешняя обработка формирует эту структуру вручную и «не знает» о новом требовании, система выдает исключение, так как ожидаемое поле отсутствует в объекте данных.

Пошаговое решение проблемы

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

  1. Откройте модуль вашей внешней обработки, где формируется структура ДанныеОбъекта.
  2. Найдите место, где инициализируется ДанныеОбъекта = Новый Структура(...).
  3. Добавьте в перечень полей ключ ГосконтрактЕИС.

Рассмотрим пример правильного формирования структуры в коде:


ДанныеОбъекта = Новый Структура("Ссылка, Дата, ВидОперации, Организация, ДеятельностьНаПатенте, 
|Склад, ТипЦен, ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов, 
|ГосконтрактЕИС, СуммаВключаетНДС, ДоговорКонтрагента, 
|ЭтоКомиссия, Реализация, ДокументБезНДС");

После того как вы добавили этот ключ в определение структуры, убедитесь, что при заполнении объекта вы корректно обрабатываете это поле. Если функционал госконтрактов в вашей базе не активирован, достаточно передать в это поле значение Неопределено или пустую ссылку.

Анализ вызова процедуры «УслугиНоменклатураПриИзмененииНаСервере»

Также важно обратить внимание на то, как происходит передача данных в типовой метод. В современных релизах БП 3.0 процедура вызова выглядит так:


// Внутри вашего модуля обработки
ЭлектронноеАктированиеБП.ДополнитьДанныеСтрокиСведениямиПоГосконтракту(СтрокаТабличнойЧасти, ДанныеОбъекта.ГосконтрактЕИС);

Если ваша обработка переопределяет метод УслугиНоменклатураПриИзмененииНаСервере, убедитесь, что структура ДанныеОбъекта, которую вы передаете в типовой модуль РеализацияТоваровУслугФормы, полностью соответствует ожидаемой сигнатуре.

Рекомендации по поддержке внешних обработок

Чтобы избежать подобных проблем в будущем, примите к сведению следующие советы:

Применение описанного выше метода добавления ключа ГосконтрактЕИС является наиболее надежным и «чистым» способом решения ошибки, так как он не требует внесения изменений в код самой конфигурации 1С, сохраняя ее типовой статус (что крайне важно для дальнейшего беспроблемного обновления).

← На главную