Как исправить ошибку «Поле объекта не обнаружено (СтрокиСоСтатусами)» при проверке документов в ГИС МТ в 1С:УНФ?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Торговля и дистрибуция
← На главную

При автоматическом обмене с государственной информационной системой маркировки «Честный ЗНАК» пользователи 1С:Управление нашей фирмой (УНФ) версии 3.0 могут столкнуться с аварийным завершением регламентного задания «Проверка документов В ГИС МТ». В журнале регистрации фиксируется исключительная ситуация:

Поле объекта не обнаружено (СтрокиСоСтатусами) {Обработка.ПроверкаДокументовИСМП.МодульОбъекта(1719)}

Проанализируем техническую причину сбоя, выясним, почему типовой код 1С падает при выполнении функции НаличиеОшибокВКодахМаркировки, и разберем по шагам действенные способы обхода и устранения неполадки.

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

При отладке регламентного задания выясняется, что в момент вызова функции НаличиеОшибокВКодахМаркировки в структуре ПараметрыОбработки.ДанныеШтрихкодов отсутствует ключ СтрокиСоСтатусами. Разработчики типового решения обращаются к этому свойству напрямую через точку, не выполняя предварительную проверку его существования в структуре. В результате любое отклонение от штатного сценария приводит к падению фонового задания.

Рассмотрим, в каких ситуациях свойство СтрокиСоСтатусами отсутствует в возвращаемых данных:

  1. Нештатный ответ со стороны ГИС МТ (ИС МП). Если сервис возвращает ошибку, пустой ответ или нестандартный статус (например, в период технических работ на шлюзе маркировки), структура ответа формируется не полностью.
  2. Истечение срока действия сессионного токена. Если в момент фоновой отправки запроса токен авторизации оказывается недействительным, сервис возвращает ошибку доступа, в которой нет информации о строках и статусах кодов маркировки.
  3. Неподходящее состояние документа. В очередь проверки может попасть входящий или исходящий электронный документ (УПД), который уже был закрыт, аннулирован или утвержден контрагентом. Для таких документов сервер ИС МП не возвращает состав строк с кодами.
  4. Неактуальные дополнительные значения номенклатуры. При отсутствии сопоставления или устаревших данных по видам маркированной продукции сервис не может сопоставить строки документа.

Способ 1. Исправление типового кода с помощью расширения

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

Разберем по шагам реализацию расширения:

  1. Создадим новое расширение конфигурации в режиме «Конфигуратор» (с назначением «Адаптация» или «Исправление»).
  2. Добавим в расширение обработку ПроверкаДокументовИСМП.
  3. Перехватим функцию НаличиеОшибокВКодахМаркировки с аннотацией &Вместо.
  4. Добавим проверку существования свойства СтрокиСоСтатусами через метод Свойство() либо обернем небезопасный участок в блок Попытка ... Исключение.

Посмотрим на пример безопасного перехвата логики обработки:


&Вместо("НаличиеОшибокВКодахМаркировки")
Функция Расш1_НаличиеОшибокВКодахМаркировки(ПараметрыОбработки)

    // Проверяем наличие структуры ДанныеШтрихкодов
    Если Не ЗначениеЗаполнено(ПараметрыОбработки) 
        Или Не ПараметрыОбработки.Свойство("ДанныеШтрихкодов") Тогда
        Возврат Ложь;
    КонецЕсли;

    // Безопасно проверяем существование ключа СтрокиСоСтатусами
    СтрокиСоСтатусами = Неопределено;
    Если Не ПараметрыОбработки.ДанныеШтрихкодов.Свойство("СтрокиСоСтатусами", СтрокиСоСтатусами) Тогда
        // Свойство не пришло от сервиса - предотвращаем аварийное завершение
        Возврат Ложь;
    КонецЕсли;

    // Вызываем оригинальную логику только при корректных данных
    Возврат ПродолжитьВызов(ПараметрыОбработки);

КонецФункции

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

Способ 2. Локализация проблемного документа и очистка очереди

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

Рассмотрим алгоритм локализации:

  1. Откроем Журнал регистрации и найдем событие с ошибкой регламентного задания.
  2. Определим ссылку на документ или идентификатор электронного документа, обработка которого предшествовала возникновению исключения.
  3. Перейдем в регистр сведений «Статусы проверки документов ЭДО в ГИС МТ» (или связанные регистры подбора и проверки ИС МП).
  4. Найдем проблемную запись и проанализируем текущее состояние документа в сервисе ЭДО. Если документ уже обработан контрагентом и в ГИС МТ статус кодов зафиксирован, вручную скорректируем статус проверки на конечное значение (например, «Проверка не требуется» или «Проверен»), чтобы исключить повторные запросы.

Способ 3. Проверка авторизации и сертификатов электронной подписи

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

  1. Убедимся, что сертификат электронной подписи, используемый для авторизации в ИС МП, установлен на сервере 1С:Предприятия (если используется клиент-серверный вариант) и доступен пользователю операционной системы, под которым запущен кластер серверов.
  2. Проверим срок действия сертификата и наличие доступа к закрытому ключу без интерактивного ввода пароля (пароль должен быть сохранен в настройках программы).
  3. Выполним обновление сессионного токена: откроем интерактивно форму обмена с ИС МП и выполним проверку подключения к «Честному ЗНАКу».
  4. Проверим справочник номенклатуры по позициям из проблемных документов: обновим дополнительные реквизиты и категории маркируемой продукции, загрузив актуальные параметры из сервиса.
← На главную