При настройке или восстановлении синхронизации данных между конфигурациями «Управление торговлей», ред. 11.3 и «Бухгалтерия предприятия», ред. 3.0 разработчики и администраторы часто сталкиваются с ошибками валидации XML-структуры XDTO в журнале регистрации. Рассмотрим детально, почему возникает подобное сообщение об ошибке и как правильно устранить проблему.
В журнале регистрации при выгрузке данных фиксируется следующее сообщение об ошибке:
Ошибка при вызове метода контекста (Проверить): ОбъектXDTO.Проверить();
Причина: Ошибка проверки данных XDTO: Структура объекта '/КлючевыеСвойства/Контрагент' не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}КлючевыеСвойстваКонтрагент. Проверка свойства 'Наименование': Отсутствует обязательное свойство
Разберем причину этого сбоя. Метод платформы ОбъектXDTO.Проверить() выполняет строгую валидацию сформированного XML-пакета на соответствие XDTO-схеме выбранной версии формата EnterpriseData. В формате версии 1.2 свойство Наименование в структуре ключевых свойств контрагента является строго обязательным. Если у выгружаемого контрагента не заполнено наименование, ссылочные данные повреждены или в настройках обмена указана рассинхронизированная версия формата, механизм выгрузки завершает работу с ошибкой.
Наиболее частой причиной расхождения схем является использование разных версий формата EnterpriseData в обменивающихся базах (например, версия 1.2 в БП и версия 1.3 в УТ). Проанализируем шаги по согласованию версий формата обмена:
Смена версии формата приводит к тому, что обработка ключевых свойств в общем модуле МенеджерОбменаЧерезУниверсальныйФормат начинает использовать актуальную схему XDTO, в которой правила проверки данных выгружаемых объектов согласованы с обеих сторон.
Если версии формата приведены к единому значению, но ошибка сохраняется, проанализируем данные в самой информационной базе на предмет отсутствующих наименований или недействительных ссылок.
1. Переход по навигационной ссылке из журнала регистрации
В тексте ошибки указывается навигационная ссылка на конкретный объект: e1cib/data/Справочник.ДоговорыКонтрагентов?ref=.... Нажмем сочетание клавиш Ctrl + Shift + L (или выберем в меню «Перейти по ссылке»), вставим навигационную ссылку и откроем карточку договора. Проверим реквизиты Владелец и Контрагент. Если поле ссылается на «Объект не найден» или на контрагента с пустым наименованием, корректно перевыберем или заново заполним данные.
2. Поиск незаполненных наименований с помощью запроса
Для поиска контрагентов с пустым наименованием или битыми ссылками воспользуемся консолью запросов. Выполним следующий запрос:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент,
Контрагенты.Наименование КАК Наименование
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.Наименование = ""
ИЛИ Контрагенты.Наименование ПОДОБНО "% %"
После выявления контрагентов с незаполненными реквизитами откроем их карточки и укажем наименование, ИНН и КПП. После перезаписи объектов повторим процесс синхронизации данных.
Если визуально определить ошибку не удается, выясним причину с помощью конфигуратора:
ОбменДаннымиXDTOСервер.ОбъектXDTO.Проверить(); и установим точку останова.ОбъектXDTO в табло отладчика. В структуре выгружаемого объекта легко определить, для какого именно контрагента не сформировалось обязательное свойство Наименование.После исправления данных и согласования версий формата EnterpriseData выгрузка объектов между УТ 11.3 и БП 3.0 пройдет успешно и без ошибок XDTO.