Решение задач 1С:Предприятие 8 на примерах

«Ошибка преобразования данных XDTO» в 1С: причины и решение

Ошибки 1СИнтеграция и обменОпубликовано

Платформа не смогла преобразовать значение 1С в XDTO-объект или XDTO-объект в значение 1С, потому что данные не соответствуют типу или схеме. В продолжении сообщения обычно указаны свойство, тип и форма (элемент или атрибут).

Текст ошибки

Ошибка преобразования данных XDTO

Причины

Как прочитать сообщение

Типичный вид ошибки содержит имя свойства и тип, например «Ошибка преобразования данных XDTO: Запись: ... Форма: Элемент Имя: Количество». Найдите в схеме или в структуре обмена это свойство: значение в нём и есть источник проблемы.

Обмен данными

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

Веб-сервисы (SOAP)

Сериализация из кода

Для сериализации прикладных объектов используйте СериализаторXDTO, а не ручное создание XDTO-объектов:

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ДокументОбъект);
ТекстXML = ЗаписьXML.Закрыть();

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ТекстXML);
Объект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

При создании XDTO-объектов по своему пакету приводите значения к нужному типу явно и проверяйте ограничения схемы:

ТипТовар = ФабрикаXDTO.Тип("http://example.org/order", "Item");
Товар = ФабрикаXDTO.Создать(ТипТовар);
Товар.Name = Лев(Строка(Номенклатура), 100); // ограничение длины в схеме
Товар.Quantity = Число(Количество);
Товар.Проверить(); // проверка объекта на соответствие схеме

Метод Проверить() выдаёт понятную ошибку с указанием нарушенного ограничения ещё до отправки данных, что упрощает поиск.

Похожая ошибка

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

Частые вопросы

Обмен работал, а после обновления одной базы появилась ошибка XDTO. Что делать?

Обновите вторую базу до совместимого релиза или проверьте, поддерживают ли обе стороны одну версию формата обмена. Различие форматов — частая причина после обновления только одной стороны.

Как найти, на каком объекте падает обмен?

Откройте протокол обмена или журнал регистрации с событиями обмена данными: там указан объект и текст ошибки. Затем проверьте реквизиты этого объекта.

XML в 1С программно: запись, чтение, DOM и выгрузка данных

Интеграция и веб-сервисы

Готовые примеры работы с XML на встроенном языке 1С: запись и чтение, DOM с XPath, преобразование XML в структуру, выгрузка справочника и разбор ошибок парсинга.

Обмены в 1С: план обмена, регистрация и выгрузка изменений

Интеграция и веб-сервисы

Разбираем, какие бывают обмены в 1С и как построить свой обмен на плане обмена: регистрация изменений, выгрузка, загрузка и подтверждение получения сообщений.

Работа с JSON в 1С: чтение, запись, даты и типичные ошибки

Интеграция и веб-сервисы

Практическое руководство по JSON в 1С: чтение строки и файла, Структура против Соответствия, запись массивов, даты, сериализация через XDTO и разбор частых ошибок.

Похожие ошибки