Синхронизация данных между конфигурациями 1С:Розница и 1С:Бухгалтерия предприятия (БП) — один из важнейших бизнес-процессов в автоматизации розничной торговли. Однако после очередного обновления пользователи часто сталкиваются с неприятной ситуацией: обмен прерывается критической ошибкой. Особенно остро эта проблема встает при выгрузке документов ОтчетОРозничныхПродажах.
В этой статье мы подробно разберем, почему возникает ошибка метаданных, связанная с поиском поля договора контрагента, и проанализируем работающие способы устранения этой проблемы как для базовых, так и для ПРОФ-версий программных продуктов 1С.
Давайте вместе проанализируем текст ошибки, который выводится в журнал регистрации:
Ошибка в обработчике события ПередВыгрузкойОбъекта
ПКО = ОтчетОРозничныхПродажах (Документ: Отчет о розничных продажах)
Обработчик = ПередВыгрузкойОбъекта
ОписаниеОшибки = Ошибка при вызове метода контекста (ВыполнитьПакет): {(181, 4)}: Поле не найдено "ДоговорКонтрагента.Ссылка"
И ДоговорКонтрагента.Ссылка <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
Эта ошибка возникает на этапе выгрузки данных из базы-источника (1С:Розница). Причина кроется в масштабном изменении архитектуры метаданных, которое разработчики фирмы 1С провели при переходе на новые релизы ветки 2.3:
ДоговорыПлатежныхАгентов. В актуальных релизах «1С:Розница 2.3» разработчики перевели механизмы эквайринга на стандартный справочник ДоговорыКонтрагентов.ОтчетОРозничныхПродажах (в частности, в табличной части оплаты платежными картами) реквизит, отвечавший за договор эквайринга, был переименован в УдалитьДоговорЭквайринга и помечен на удаление. Вместо него была внедрена новая аналитика.ПередВыгрузкойОбъекта в правилах обмена (ПКО) обращается к реквизиту по старому пути метаданных. Запрос пытается найти несуществующее поле ДоговорКонтрагента, что приводит к аварийной остановке процесса выгрузки.Ниже рассмотрим по шагам четыре практических способа решения этой проблемы в зависимости от версии вашей конфигурации (Базовая или ПРОФ).
Поскольку проблема носит массовый характер и связана с недоработками релизов от самой фирмы 1С, разработчики оперативно выпускают мини-обновления — патчи (файлы с расширением .efd). Если у вас установлена базовая версия, в которой запрещено изменять конфигурацию, этот способ является самым простым и приоритетным.
Проверим наличие и установим исправления:
ОтчетОРозничныхПродажах.Бывают ситуации, когда базы данных были успешно обновлены до последних релизов, но правила синхронизации внутри самих баз остались закэшированными или не перезаписались. Мы можем обновить их вручную, используя XML-файлы из дистрибутива обновления.
Выполним процедуру ручного обновления правил:
C:\Users\<ИмяПользователя>\AppData\Local\1C\1cv8\tmplts\1c\retail\<НомерТекущегоРелиза>\Обмен данными\Обмен с конфигурацией Бухгалтерия предприятия, ред. 3...ПравилаОбмена...xml).Обратите внимание на детали вашей ошибки. В ней фигурирует конкретный документ: Отчет о розничных продажах 00РТ-000064 от 08.12.2019. Это старый документ, созданный в предыдущих редакциях (вероятно, в Рознице 2.2), который по какой-то причине повторно попал в регистрацию изменений для обмена данными.
Старые документы физически хранят в своих реквизитах ссылки на уже удаленные справочники договоров эквайринга, что и провоцирует падение выгрузки при попытке их обработать. Решением будет исключение этих документов из очереди отправки.
Проанализируем состав отправляемых данных:
Отчет о розничных продажах и дважды кликнем на нее, чтобы открыть список зарегистрированных объектов.Если предыдущие методы не принесли результата, это свидетельствует о глубоком конфликте кэша метаданных платформы и планов обмена. В таких случаях наиболее надежным решением является полная перенастройка интеграционного моста.
Выполним следующие шаги:
%userprofile%\AppData\Local\1C\1cv8 и %userprofile%\AppData\Roaming\1C\1cv8.Если вы являетесь разработчиком или используете версию ПРОФ, вы можете оперативно исправить ошибку в коде правил обмена без ожидания официальных обновлений от вендора. Для этого воспользуемся специализированной конфигурацией «1С:Конвертация данных 2.1».
Разберем алгоритм исправления:
ОтчетОРозничныхПродажах.ПередВыгрузкойОбъекта.ДоговорКонтрагента. Нам необходимо скорректировать текст запроса так, чтобы он ссылался на актуальные реквизиты метаданных.Пример корректного обращения к реквизиту договора платежного агента в коде обработчика ПКО:
// Корректируем запрос в правиле конвертации
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОРПОплаты.ДоговорКонтрагента КАК ДоговорКонтрагента
|ИЗ
| Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОРПОплаты
|ГДЕ
| ОРПОплаты.Ссылка = &Ссылка
| И ОРПОплаты.ДоговорКонтрагента <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
После корректировки кода сохраняем правила, выгружаем их обратно в XML-файл и загружаем в настройки синхронизации в режиме «1С:Предприятие».
Мы подробно разобрали причины возникновения ошибки интеграции при обновлении на редакцию 1С:Розница 2.3 и изучили все возможные варианты ее локализации. Рекомендуем начать исправление с анализа состава отправляемых данных и удаления старых зависших документов (Способ 3), так как именно они чаще всего являются источником проблем при обновлении метаданных.