Как исправить ошибку «Поле объекта не обнаружено (СтатусОбработки)» в 1С:УТ 11.5 при работе с ЕГАИС?

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

При обновлении конфигурации 1С:Управление торговлей до версии 11.5.8 и выше многие пользователи и разработчики столкнулись с тем, что старые внешние обработки для работы с ЕГАИС перестали функционировать. Самая распространенная ошибка, которая возникает при попытке создания документов (например, «Передача в регистр №2»): Поле объекта не обнаружено (СтатусОбработки). В этой статье мы подробно разберем, почему это происходит и как адаптировать программный код под новые требования системы.

Анализируем причину ошибки: масштабный рефакторинг ГосИС

Для начала выясним причину возникновения проблемы. Начиная с релизов 11.5.7, компания «1С» провела глобальное изменение архитектуры подсистем взаимодействия с государственными информационными системами (ЕГАИС, Маркировка, ВетИС). Основная цель этих изменений — унификация механизмов обработки документов.

В ходе этого рефакторинга многие реквизиты, которые ранее находились непосредственно в документах, были вынесены в отдельные регистры сведений. В частности, это коснулось реквизита СтатусОбработки. Теперь статус документа не хранится в самом объекте (документе), а управляется через специализированную подсистему статусов информирования.

Если мы заглянем в конфигуратор УТ 11.5, то увидим, что у многих объектов ЕГАИС старые реквизиты теперь имеют префикс «Удалить» (например, УдалитьСтатусОбработки). Это означает, что прямое обращение к ним в коде приведет к ошибке, так как платформа больше не «видит» поле с прежним именем.

Решение проблемы со статусом документа

Рассмотрим конкретный пример кода, который вызывает ошибку:


НовыйДок = Документы.ПередачаВРегистр2ЕГАИС.СоздатьДокумент();
// ... заполнение реквизитов ...
НовыйДок.СтатусОбработки = Перечисления.СтатусыОбработкиПередачиВРегистр2ЕГАИС.Новый;

При выполнении этой строки система выдает ошибку, так как в документе ПередачаВРегистр2ЕГАИС больше нет поля СтатусОбработки. Как поступить в этой ситуации?

  1. Удаление прямой записи статуса: В новых версиях статус устанавливается автоматически при записи документа или через вызов специальных процедур общего модуля. Если задача — просто создать документ-черновик, строку с установкой статуса можно закомментировать.
  2. Проверка перечислений: Обратите внимание, что значения перечислений также могли измениться. Вместо значения Новый теперь часто используется Черновик.

Проанализируем ситуацию: если мы просто закомментируем строку, документ создастся, но он может остаться в «подвешенном» состоянии. Правильным подходом в 11.5 является использование механизмов подсистемы ИнтеграцияГосИС, но для простых внешних обработок достаточно убрать прямое обращение к отсутствующему полю.

Исправление ошибки «Поле объекта не обнаружено (Номенклатура)»

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

Раньше связь между Классификатором алкогольной продукции ЕГАИС и справочником Номенклатура была жесткой. Теперь эта связь вынесена в регистр сведений Соответствие номенклатуры ЕГАИС. Чтобы получить номенклатуру, нам нужно обратиться к этому регистру.

Рассмотрим, как изменить запрос или выборку в коде обработки. Вместо прямого обращения:

Номенклатура = Выборка.АлкогольнаяПродукция.Номенклатура;

Нам необходимо получить данные из регистра. Посмотрим на пример корректного получения номенклатуры по алкогольной продукции:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ ТОП 1
    |	СоответствиеНоменклатурыЕГАИС.Номенклатура КАК Номенклатура
    |ИЗ
    |	РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеНоменклатурыЕГАИС
    |ГДЕ
    |	СоответствиеНоменклатурыЕГАИС.АлкогольнаяПродукция = &АлкогольнаяПродукция";

Запрос.УстановитьПараметр("АлкогольнаяПродукция", Выборка.АлкогольнаяПродукция);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    ВыборкаНом = РезультатЗапроса.Выбрать();
    ВыборкаНом.Следующий();
    НоваяСтрока.Номенклатура = ВыборкаНом.Номенклатура;
КонецЕсли;

Важное замечание по «Регистру №2» (Торговый зал)

Разберем еще один критический момент. Почему старые обработки для «Регистра №2» вообще ломаются? Дело в том, что ФСРАР постепенно отказывается от использования второго регистра. Для крепкого алкоголя он уже практически не используется (введен помарочный учет на Регистре №1 и №3), а для пива вводятся новые правила порционного учета.

Фирма «1С» следует этим трендам и помечает объекты, связанные с Регистром №2, как устаревшие. Поэтому при адаптации обработки проверьте, не помечены ли сами документы ПередачаВРегистр2ЕГАИС префиксом «Удалить» в вашей конфигурации. Если это так, значит, методологически использование этого документа в вашей версии УТ больше не предусмотрено, и стоит пересмотреть бизнес-процесс в пользу документов 1-го регистра.

Итоги пошаговой настройки

Давайте подведем итоги наших действий для оживления обработки на УТ 11.5.8:

  1. Откройте внешнюю обработку в конфигураторе.
  2. Найдите процедуру, где создается документ ПередачаВРегистр2ЕГАИС.
  3. Закомментируйте или удалите строки, обращающиеся к СтатусОбработки.
  4. Если используется заполнение номенклатуры из классификатора ЕГАИС, перепишите код так, чтобы данные подтягивались из регистра сведений СоответствиеНоменклатурыЕГАИС.
  5. Проверьте наличие полей с префиксом Удалить и замените их актуальными аналогами, если они есть в новой структуре метаданных.

Следуя этим шагам, мы сможем восстановить работоспособность инструмента и успешно формировать документы для обмена с УТМ в обновленной конфигурации 1С:Управление торговлей. Для регулярного контроля за оборотом алкогольной продукции и автоматической сверки сведений о производителях с государственным реестром применяется модуль обмена 1С и ЕГАИС.

← На главную