При настройке и выполнении синхронизации данных между конфигурациями 1С:Управление торговлей (редакция 11) и 1С:Бухгалтерия предприятия (редакция 3.0) через универсальный формат EnterpriseData нередко возникает ошибка валидации пакета XDTO. В журнале регистрации процесс аварийно завершается с сообщением:
Ошибка при вызове метода контекста (Проверить): Структура объекта '/ДанныеВзаиморасчетов/Договор' не соответствует типу... Не установлено значение одного из следующих свойств: Контрагент
Разберем природу этой ошибки, выясним, почему она вводит в заблуждение пользователей, и рассмотрим пошаговые методы устранения проблемы.
В тексте сообщения журнала регистрации часто фигурируют строки вида:
Проверка свойства 'ВалютаВзаиморасчетов'
Не установлено значение одного из следующих свойств: Контрагент
Из-за подобного вывода многие ошибочно полагают, что проблема связана с отключенным валютным учетом или незаполненной валютой в договорах и документах. Однако платформа 1С при валидации XDTO-дерева обходит структуру последовательно. Строка о валюте указывает лишь на текущий узел схемы, а сама критическая ошибка заключается в итоговой фразе: не передано обязательное ключевое свойство Контрагент.
Схема формата EnterpriseData для типа КлючевыеСвойстваДоговор строго требует передачи реквизитов идентификации: организации, контрагента, номера, даты и валюты. Если хотя бы одно из этих полей не сформировано при выгрузке, метод ОбъектXDTO.Проверить() вызывает исключение.
Проанализируем ключевые факторы, приводящие к данной ошибке в УТ 11:
Контрагенты, данные взаиморасчетов не могут сформировать корректную ссылку.Разберем по шагам, как локализовать и исправить ошибку в информационной базе.
Проверка проблемного документа
Выясним точный документ, на котором произошел сбой (он указан в журнале регистрации в поле Объект). Откроем этот документ в базе УТ 11 (например, Поступление товаров и услуг) и проверим заполнение всех реквизитов взаиморасчетов. Через меню «Еще» > «Изменить форму» убедимся, что на форме отображаются поля Партнер, Контрагент, Договор и Соглашение. Проверим, что у выбранного партнера действительно создан и выбран контрагент.
Проверка карточки договора и соглашения
Откроем договор или индивидуальное соглашение, привязанное к документу. Проверим, заполнены ли поля Организация и Контрагент. Если в базе включено ведение договоров, перевыберем договор в шапке документа и заново проведем документ.
Диагностика через конфигуратор
Если визуально реквизиты заполнены, но выгрузка завершается ошибкой, воспользуемся отладчиком в конфигураторе. Установим точку останова в общем модуле ОбменДаннымиXDTOСервер на строке:
ОбъектXDTO.Проверить();
В табло отладчика вычислим выражение ОбъектXDTO и раскроем структуру /ДанныеВзаиморасчетов/Договор/КлючевыеСвойства. Это позволит точно увидеть, какое именно поле не заполнено и из какого источника формируются свойства.
Временное исключение объекта для завершения синхронизации
Если требуется срочно завершить первоначальный обмен остальными данными, исключим проблемный документ из состава выгрузки. Для этого откроем обработку Регистрация изменений для обмена данными, найдем узел обмена с БП 3.0, найдем документ в дереве метаданных и снимем регистрацию изменений для конкретного объекта.
Обновление конфигурации или правил
Если проблема вызвана некорректным алгоритмом модуля МенеджерОбменаЧерезУниверсальныйФормат, рекомендуется обновить конфигурацию 1С:Управление торговлей до актуального стабильного релиза. В качестве временного решения можно подключить расширение конфигурации, переопределяющее заполнение структуры КлючевыеСвойстваДоговор с принудительной подстановкой контрагента из шапки документа.