При настройке типового обмена данными между конфигурациями 1С:Розница 2.2 и 1С:Бухгалтерия предприятия 3.0 на этапе загрузки данных в бухгалтерию может возникать критическая ошибка выполнения запроса поиска:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(7385)}: Ошибка при вызове метода контекста (Выполнить) Результат = ЗапросПоиска.Выполнить; по причине: {(1, 59)}: Поле не найдено "Владелец" ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты ГДЕ КПП = &КПП И Владелец = &Владелец И Наименование = &Наименование
Разберем детально, почему возникает данная ситуация и какими способами ее можно устранить.
Проанализируем структуру метаданных обеих конфигураций и логику работы подсистемы обмена «Конвертация данных 2.0» (КД 2):
Владелец имеет составной тип данных). В конфигурации 1С:Бухгалтерия предприятия аналогичный справочник лицензий подчинен исключительно справочнику Контрагенты.Справочник.Контрагенты.Владелец = &Владелец. Так как справочник Контрагенты сам по себе не является подчиненным объектом и не имеет реквизита Владелец, платформа выбрасывает исключение при выполнении запроса СУБД.Если обмен данными уже настроен и требуется быстро завершить синхронизацию без изменения конфигурации и правил обмена, самым простым решением будет удаление регистрации изменений для лицензий собственных организаций.
Выполним следующие шаги в базе 1С:Розница:
Если записей много или требуется автоматизировать очистку очереди отправки, воспользуемся программным методом через объект ПланыОбмена. Выполним удаление регистрации через внешнюю обработку или консоль кода в «1С:Рознице»:
УзелОбмена = ПланыОбмена.ОбменРозницаБухгалтерияПредприятия30.НайтиПоНаименованию("Бухгалтерия предприятия");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Лицензии.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЛицензииПоставщиковАлкогольнойПродукции КАК Лицензии
|ГДЕ
| Лицензии.Владелец ССЫЛКА Справочник.Организации";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Выборка.Ссылка);
КонецЦикла;
КонецЕсли;
Также для выборочного удаления регистрации можно применить специализированные обработки (например, типовую обработку «Регистрация изменений для обмена» или инструменты разработчика).
Для системного устранения проблемы, чтобы ошибка не повторялась при последующих изменениях лицензий организаций, скорректируем правила обмена в конфигурации Конвертация данных 2.1:
ПередВыгрузкой добавим условие отсечения лицензий, принадлежащих собственным организациям:
Если ТипЗнч(Источник.Владелец) = Тип("СправочникСсылка.Организации") Тогда
Отказ = Истина;
КонецЕсли;
Контрагенты: убедимся, что для свойств поиска (ИНН, КПП, Наименование) флаг «Искать объект приемника по свойству» не задействует реквизит Владелец.Данная коллизия являлась зарегистрированной ошибкой типовых правил обмена определенных релизов (Розница 2.2.4 / БП 3.0.44). Фирма «1С» исправила данное поведение в последующих версиях конфигураций. Обновление конфигураций «1С:Розница» и «1С:Бухгалтерия предприятия» до актуальных версий полностью устраняет проблему некорректного формирования запроса поиска владельца контрагента.