Как исправить ошибку XDTO «Структура объекта /Руководитель не соответствует типу» при обмене между 1С:БП и 1С:УТ?

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

При настройке или использовании стандартного обмена данными между конфигурациями 1С:Бухгалтерия предприятия (БП) и 1С:Управление торговлей (УТ) пользователи часто сталкиваются с техническими сбоями. Одной из наиболее специфичных и труднодиагностируемых ошибок является ошибка проверки данных XDTO, возникающая при выгрузке документов, в частности СчетФактураВыданный. Система выдает сообщение о том, что структура объекта /Руководитель не соответствует типу, и указывает на отсутствие значения одного из свойств, например, ФИО или ДатаРождения.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем внутренние механизмы работы платформы с форматом EnterpriseData и предложим пошаговый алгоритм решения ситуации.

Разбор технической сути ошибки

Ошибка ОбъектXDTO.Проверить в общем модуле ОбменДаннымиXDTOСервер означает, что сформированный XML-пакет не прошел валидацию на соответствие схеме (XSD), которая заложена в конфигурации. В нашем случае валидатор сообщает: Не установлено значение одного из следующих свойств: ФИО внутри узла Руководитель.

Важно понимать, что тип Руководитель в схеме EnterpriseData — это сложный объект. Даже если вам кажется, что в карточке руководителя всё заполнено, для системы «заполнено» означает наличие записей в конкретных полях базы данных, которые сопоставляются со свойствами XDTO. Рассмотрим основные причины, по которым эти данные могут «потеряться» при выгрузке.

Решение 1: Проверка регистра сведений «Фамилия, имя, отчество физических лиц»

Это самая распространенная причина. В программах 1С данные о ФИО физического лица хранятся в двух местах: строковое представление в самой карточке справочника Физические лица и детализированная информация в периодическом регистре сведений ФамилияИмяОтчествоФизЛиц.

Проанализируем ситуацию: при выгрузке через XDTO система не просто берет строку из карточки, она пытается разобрать ФИО на составляющие (Фамилия, Имя, Отчество) через запрос к регистру. Если запись в регистре отсутствует или дата записи позже даты документа, валидатор выдает ошибку структуры.

Что нужно сделать:

  1. Перейдем в справочник Физические лица.
  2. Найдем карточку руководителя, который указан в проблемном документе.
  3. Нажмем на гиперссылку «История ФИО» или «Склонения».
  4. Если список пуст или данные некорректны, необходимо заново перезаписать ФИО. Даже если визуально поле заполнено, сотрите последнюю букву фамилии, впишите её обратно и нажмите «Записать». Это принудительно создаст запись в регистре сведений.
  5. Убедитесь, что дата в истории ФИО (дата, с которой действуют данные) меньше или равна дате самого документа Счет-фактура выданный.

Решение 2: Проверка регистра «Ответственные лица организаций»

Иногда ошибка в блоке /Руководитель возникает не из-за того, что в карточке физлица пусто, а из-за того, что система «подтягивает» не того человека или вообще не находит ответственного на нужную дату.

Выясним причину через проверку настроек организации:

  1. Откроем карточку Организации.
  2. Перейдем в раздел «Лица с правом подписи» (в разных версиях может называться «Ответственные лица»).
  3. Проверим, кто назначен руководителем на дату документа (в примере из лога это 22.01.2020).
  4. Часто бывает, что на текущую дату руководитель назначен, а на дату старого документа (который пытаемся перепровести или выгрузить) записи в регистре нет.
  5. Если в регистре на эту дату назначен человек, у которого в карточке не заполнены компоненты ФИО (например, только фамилия без имени), XDTO-пакет будет считаться невалидным.

Решение 3: Проверка целостности данных (составляющие ФИО)

В старых базах или после некорректного импорта данных ФИО может быть записано в карточку одной строкой, без разбиения на отдельные поля Фамилия, Имя, Отчество. Для печатных форм это может быть не критично, но для обмена в формате EnterpriseData — это фатальная ошибка.

Рассмотрим подробнее: схема XDTO требует, чтобы объект содержал обязательные элементы. Если алгоритм разбора строки не смог выделить «Имя», свойство остается неопределенным, и мы получаем ошибку Не установлено значение одного из следующих свойств: ФИО.

Рекомендация: Откройте карточку физлица и нажмите на кнопку редактирования ФИО (обычно это поле с лупой или отдельное окно). Убедитесь, что фамилия и имя находятся в своих соответствующих полях.

Решение 4: Несоответствие версий формата EnterpriseData

Если вы недавно обновляли 1С:Бухгалтерию, но не обновляли 1С:Управление торговлей (или наоборот), версии формата обмена могут конфликтовать. В новых версиях формата (например, 1.13) требования к обязательности полей могут быть жестче, чем в старых (например, 1.5).

Проанализируем настройки синхронизации:

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

Решение 5: Очистка кэша и перерегистрация изменений

Как отмечалось в сообщениях на форуме, иногда ошибка исчезает, если удалить объект из регистрации и добавить его снова. Это свидетельствует о возможной проблеме в кэше метаданных или «залипших» правилах конвертации.

Выполним следующие шаги:

  1. Используйте обработку «Регистрация изменений для обмена данными».
  2. Найдите документ Счет-фактура выданный, который выдает ошибку.
  3. Снимите его с регистрации.
  4. Попробуйте выполнить обмен без него. Если обмен прошел успешно, значит проблема локализована в конкретном объекте.
  5. Снова зарегистрируйте этот документ (или просто перепроведите его). Система заново сформирует XML-структуру для выгрузки.

Использование отладчика для продвинутых пользователей

Если вышеперечисленные методы не помогли, необходимо прибегнуть к отладке на стороне сервера. Проанализируем код в месте возникновения ошибки.

Найдите в конфигураторе общий модуль ОбменДаннымиXDTOСервер, процедуру ПроверитьОбъектXDTOПоСхеме. Поставьте точку останова на строке:

ОбъектXDTO.Проверить();

Когда программа остановится, в окне «Вычислить выражение» посмотрите содержимое переменной ОбъектXDTO. Вы сможете увидеть, какой именно узел (например, Руководитель или ГлавныйБухгалтер) заполнен не полностью. В свойстве ФИО вы увидите пустые значения Имя или Фамилия, что и является причиной остановки обмена.

Резюме

Ошибка «Структура объекта /Руководитель не соответствует типу» — это всегда следствие отсутствия детальных данных о физическом лице в регистрах сведений или несоответствия этих данных дате документа. Систематическая проверка истории ФИО и записей об ответственных лицах организации решает эту проблему в 99% случаев.

← На главную