Как исправить ошибку «Поле объекта не обнаружено (Экспорт)» при синхронизации УТ 11 и Розницы 2.2?

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

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

Разберем подробнее, почему возникает эта неполадка, и рассмотрим практические способы ее устранения без риска повреждения структуры типовой конфигурации.

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

Проанализируем механизм синхронизации на базе правил конвертации данных (КД 2.0). Ошибка возникает в следующих случаях:

  1. Рассинхронизация версий метаданных маркировки (ГИСМ/ЕГАИС): В одном из релизов конфигурации разработчики добавляют новые значения системных перечислений. В частности, в перечислении ВидОборотаТовараГИСМ появляется значение Экспорт. Если в сопряженной базе или в используемых правилах обмена данное значение отсутствует, прямое обращение к свойству объекта через точку вызывает исключение платформы.
  2. Изменение структуры справочников ЕГАИС: При переименовании справочников (например, переход от названий СправкиАЕГАИС/СправкиБЕГАИС к формату Справки1ЕГАИС/Справки2ЕГАИС) зашитые в обработку правила могут ссылаться на устаревшие имена типов.
  3. Кэширование правил в информационной базе: При обновлении конфигурации актуальные правила конвертации не всегда автоматически перезаписывают правила, сохраненные ранее в служебных регистрах сведений.

Способ 1. Обновление правил обмена из типового макета

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

Выполним следующие действия по шагам:

  1. В конфигурации 1С:Управление торговлей 11 перейдем в меню Главное меню — Все функции (или Функции для технического специалиста).
  2. Откроем регистр сведений Правила для обмена данными.
  3. Найдем в списке строку с настройкой обмена ОбменУправлениеТорговлейРозница.
  4. Нажмем кнопку Ещё и выберем пункт Обновить все типовые правила (или перезагрузим правила из макета конфигурации).
  5. Повторим аналогичную процедуру в информационной базе 1С:Розница 2.2.
  6. Запустим сеанс синхронизации повторно.

Способ 2. Корректировка правил через «Конвертацию данных 2.1»

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

Разберем процесс корректировки по шагам:

  1. С помощью внешней обработки MDEnterprise.epf выгрузим описания структуры метаданных из обеих баз (УТ 11 и Розница 2.2) в файлы формата XML.
  2. Выгрузим используемые правила обмена из базы УТ 11 на диск.
  3. Запустим конфигурацию Конвертация данных, редакция 2.1 и загрузим полученные структуры метаданных и правила обмена.
  4. Перейдем в раздел Правила конвертации значений (ПКЗ) и найдем перечисление ВидОборотаТовараГИСМ.
  5. Добавим отсутствующее значение Экспорт в список значений источника и настроим для него сопоставление (приемник может быть сопоставлен с аналогичным значением либо со значением по умолчанию, если в базе-приемнике маркировка данного типа еще не поддерживается).
  6. В разделе Правила конвертации объектов (ПКО) проверим сопоставление типов справочников ЕГАИС (СправкиАЕГАИС / Справки1ЕГАИС и СправкиБЕГАИС / Справки2ЕГАИС).
  7. Сохраним измененные правила в XML-файл.
  8. В базе 1С:Управление торговлей откроем настройку синхронизации данных, выберем режим Загрузить правила из файла и укажем полученный файл.

Безопасная проверка метаданных в обработчиках обмена

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


Если Метаданные.Перечисления.Найти("ВидОборотаТовараГИСМ") <> Неопределено Тогда
    Если Метаданные.Перечисления.ВидОборотаТовараГИСМ.ЗначенияПеречисления.Найти("Экспорт") <> Неопределено Тогда
        ЗначениеОборота = Перечисления.ВидОборотаТовараГИСМ.Экспорт;
    Иначе
        ЗначениеОборота = Перечисления.ВидОборотаТовараГИСМ.ПустаяСсылка();
    КонецЕсли;
Иначе
    ЗначениеОборота = Неопределено;
КонецЕсли;

Временное решение: снятие объектов с регистрации изменений

Если синхронизацию необходимо восстановить срочно для передачи основных торговых документов (продажи, перемещения, цены), а времени на редактирование правил нет, временно исключим проблемные объекты из очереди обмена:

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

Важно: Не рекомендуется переименовывать справочники и реквизиты непосредственно в дереве метаданных конфигурации со снятием с поддержки (например, переименовывать Справки2ЕГАИС обратно в СправкиБЕГАИС). Такое вмешательство нарушает работу типовых процедур обновления информационной базы и приведет к конфликтам при установке последующих официальных релизов конфигурации.

← На главную