Как исправить ошибку проверки данных XDTO при обмене между УТ 11.3 и БП 3.0?

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

При настройке или восстановлении синхронизации данных между конфигурациями «Управление торговлей», ред. 11.3 и «Бухгалтерия предприятия», ред. 3.0 разработчики и администраторы часто сталкиваются с ошибками валидации XML-структуры XDTO в журнале регистрации. Рассмотрим детально, почему возникает подобное сообщение об ошибке и как правильно устранить проблему.

Проблема: ошибка валидации структуры XDTO

В журнале регистрации при выгрузке данных фиксируется следующее сообщение об ошибке:

Ошибка при вызове метода контекста (Проверить): ОбъектXDTO.Проверить();

Причина: Ошибка проверки данных XDTO: Структура объекта '/КлючевыеСвойства/Контрагент' не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}КлючевыеСвойстваКонтрагент. Проверка свойства 'Наименование': Отсутствует обязательное свойство

Разберем причину этого сбоя. Метод платформы ОбъектXDTO.Проверить() выполняет строгую валидацию сформированного XML-пакета на соответствие XDTO-схеме выбранной версии формата EnterpriseData. В формате версии 1.2 свойство Наименование в структуре ключевых свойств контрагента является строго обязательным. Если у выгружаемого контрагента не заполнено наименование, ссылочные данные повреждены или в настройках обмена указана рассинхронизированная версия формата, механизм выгрузки завершает работу с ошибкой.

Способ 1. Выравнивание версий формата EnterpriseData в узлах обмена

Наиболее частой причиной расхождения схем является использование разных версий формата EnterpriseData в обменивающихся базах (например, версия 1.2 в БП и версия 1.3 в УТ). Проанализируем шаги по согласованию версий формата обмена:

  1. Откроем информационную базу «Бухгалтерия предприятия» и перейдем к настройкам синхронизации данных (узлу плана обмена).
  2. По умолчанию служебные реквизиты узла могут быть скрыты. Нажмем кнопку «Еще» — «Изменить форму» и включим видимость закладки «Служебная» (или поля настройки версии формата обмена).
  3. В реквизите версии формата укажем актуальное значение 1.3, соответствующее используемой версии в конфигурации «Управление торговлей».
  4. Аналогично проверим узлы обмена в базе «Управление торговлей» и убедимся, что с обеих сторон установлен единый формат 1.3.

Смена версии формата приводит к тому, что обработка ключевых свойств в общем модуле МенеджерОбменаЧерезУниверсальныйФормат начинает использовать актуальную схему XDTO, в которой правила проверки данных выгружаемых объектов согласованы с обеих сторон.

Способ 2. Поиск и исправление проблемных данных

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

1. Переход по навигационной ссылке из журнала регистрации

В тексте ошибки указывается навигационная ссылка на конкретный объект: e1cib/data/Справочник.ДоговорыКонтрагентов?ref=.... Нажмем сочетание клавиш Ctrl + Shift + L (или выберем в меню «Перейти по ссылке»), вставим навигационную ссылку и откроем карточку договора. Проверим реквизиты Владелец и Контрагент. Если поле ссылается на «Объект не найден» или на контрагента с пустым наименованием, корректно перевыберем или заново заполним данные.

2. Поиск незаполненных наименований с помощью запроса

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


ВЫБРАТЬ
	Контрагенты.Ссылка КАК Контрагент,
	Контрагенты.Наименование КАК Наименование
ИЗ
	Справочник.Контрагенты КАК Контрагенты
ГДЕ
	Контрагенты.Наименование = ""
	ИЛИ Контрагенты.Наименование ПОДОБНО "%  %"

После выявления контрагентов с незаполненными реквизитами откроем их карточки и укажем наименование, ИНН и КПП. После перезаписи объектов повторим процесс синхронизации данных.

Способ 3. Отладка процесса выгрузки в конфигураторе

Если визуально определить ошибку не удается, выясним причину с помощью конфигуратора:

  1. Откроем конфигуратор информационной базы в режиме отладки.
  2. Найдем общий модуль ОбменДаннымиXDTOСервер.
  3. Перейдем к строке с вызовом метода ОбъектXDTO.Проверить(); и установим точку останова.
  4. Запустим выгрузку данных и при остановке выполнения платформы развернем переменную ОбъектXDTO в табло отладчика. В структуре выгружаемого объекта легко определить, для какого именно контрагента не сформировалось обязательное свойство Наименование.

После исправления данных и согласования версий формата EnterpriseData выгрузка объектов между УТ 11.3 и БП 3.0 пройдет успешно и без ошибок XDTO.

← На главную