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

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

Самая обычная ошибка если нарушена последовательность приема периферийным узлом передаваемых данных от центрального узла. Давайте изучим методы диагностики такой ошибки и способ ее устранения.
Первый случай, если такая ошибка возникла на главном узле сразу же после передачи на подчиненный узел сообщения с каким либо обновлением, то до устранения нашей проблемы крайне не желательно исправлять конфигурацию главного узла, как мы можем получить на подчинённом узле ошибку «конфигурация не соответствует ожидаемой»!
Советуем глубже провести анализ самой сути ошибки, и более того, в тексте этой ошибки как правило указывается порядковый номер строки и сама колонка того места, в котором произошла ошибка.
И ещё, перед тем, как приступить к глубокому анализу самого файла сообщения, нужно проверить не откроется ли этот ларчик намного проще: на узле-отправителе нашего проблемного сообщения нужно открыть обработку ВыгрузкаЗагрузкаДанныхXML.epf (в составе конфигурации «Конвертация данных», он находится в программном каталоге встроенных шаблонов конфигурации после установки), нужно начать в самом-самом низу кнопку «Недопустимые символы в плане обмена» и выбрать наш узел-получатель. В том случаи если проверка выдаст нам ошибку или ошибки, то просто достаточно поправить или устранить их в указанных в ошибке объектах и наша проблема будет легко решена.
Если же символов недопустимых не найдено — копаем глубже. Откроем XML файл нашего сообщения (проще всего открыть в самом 1С:Предприятие 8) и посмотреть по вышеуказанному номеру строки, где именно и на каком из объектов остановился прием сообщения.
Смотрим внешне, если визуально с ним все хорошо — есть смыслы сравнить сериализованный объект, на котором останавливается чтение, с любым другим подобным объектом базы данных получателя. Что бы получить сериализованное представление можете воспользоваться обработкой СериализацияОбъектаВXML.epf (для опытного пользователя ПК не составит труда найти).
Само сравнение нужно проводить очень внимательно обращая внимание на каждый элемент в структуре объекта. Другими словами что бы элементы совпадали и последовательность их была соблюдена. При обнаружении различий мы сможем легко исправить то место где возникает «закупорка». Имея перед глазами рабочий объект найти ошибку в разы проще чем наугад метаться между элементами.

Ошибка при установке значения атрибута контекста (iik): Несоответствие типов XDTO

Вопрос: При отправке ЭСФ вышла ошибка «Ошибка при установке значения атрибута контекста (iik): Несоответствие типов XDTO: Ошибка проверки данных XDTO: Значение: ‘КZ57961001195017009’ не соответствует простому типу: Значение не соответствует образцу». С чем это связано?

Ответ: Ошибка возникла из-за неверного номера банковского счета поставщика (графа 13 «ИИК» в ЭСФ), указанным в счете-фактуре.

ИС ЭСФ требует соблюдение следующих правил при заполнении поля:

  • Номер счета должен содержать не менее 20 символов, но не более 34.
  • Могут использоваться только заглавные буквы латинского алфавита и цифры от 0 до 9

Чаще всего причиной ошибки являются:

  • Пропуск цифр, в результате чего длина номера становится менее 20 знаков. В используются 20-значные банковские счета . Меньшая длина номера счета говорит о том, что в нем допущена ошибка.
  • Использование русских букв, вместо латинских (например К (рус.) вместо K (лат.))

В приведенном на скриншоте примере ИИК составляет 17 знаков, вместо 20. Поэтому возникает указанная ошибка.

Несоответствие свойства и элемента данных XDTO

Бывают случаи, когда на данном компьютере пользователя в рабочей базе была старая конфигурация, хотя на любом другом ПК и на сервере она обновилась. Так же может возникать ошибка потока данных. В этих и некоторых других случаях поможет очистка кеша.
В связи с тем, что 1С может быть установлена на различных операционных системах, папка, где хранится кэш, может быть различной.
Для Win XP:
%userprofile%\Local Settings\Application Data\1C\1Cv82
%userprofile%\Application Data\1C\1Cv82
Для Win 7:
%userprofile%\AppData\Roaming\1C\1Cv82
%userprofile%\AppData\Local\1C\1Cv82
А самый простой способ найти папки – это использовать поиск по системе(win + F) по ключевым словам «1сv81» и/или «1cv82». Нужные нам папки находятся в каталоге пользователя.
Напимер:
C:\Documents and Settings\%userprofile%\Local Settings\Application Data\1C\1Cv81
C:\Documents and Settings\%userprofile% \Local Settings\Application Data\1C\1Cv82
C:\Documents and Settings\%userprofile% \Application Data\1C\1Cv81\
C:\Documents and Settings\%userprofile% \Application Data\1C\1Cv82\
Важно:
1) Кэш хранится в двух папках. Чаще всего эти папки называются «LocalSettings» и «ApplicationData». Обе папки находятся в каталоге пользователя.
2) Формат кэш-файлов выглядит вот так: «0df525c2-1c3e-44be-b852-c7059f17c5aa» или «0f2c4d8f-cc84-4033-8744-1acfa6204474». Удалять необходимо только те папки, у которых такой же формат в названии.
3.) Не удаляйте файл ibases.v8i — он содержит список баз

Исходя из личного практического опыта поиска решения этой проблемы в Интернет, я выяснил, что у пользователей 1С:Предприятие 8.3 такая проблема случается не редко.

Общая причина ошибки

На самом деле ошибка преобразования XDTO является не какой-то определенной ошибкой, а является большим семейством ошибок возникающих при работе одного из базовых механизмов платформы 1С. Этот механизм обеспечивает передачу данных между различными подсистемами платформы, при этом данные из внутреннего представления одной подсистемы преобразуются в текстовый формат XML, передаются в другую подсистему, и там проходят обратное преобразование во внутреннее представление. Ошибка преобразования XDTO говорит, что прямом или обратном преобразовании обнаружено какое-то несоответствие, из-за которого оно не может быть выполнено.

Работа XDTO более подробно описана в серии статей «XDTO — это просто» на /infostart.ru

Частные причины ошибки

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

Прежде чем приступить к диагностике причины ошибки XDTO, следует выполнить стандартные профилактические операции над ИБ: очистить кэш, проверить состояния файла, выполнить тестирование ИБ.

Взаимодействие Клиента и Сервера

При запуске 1С в режиме Тонкий клиент взаимодействие клиента с ИБ происходит с использование преобразования XDTO, и если оно приводит к ошибке, то в тех случаях, когда это возможно, следует воспользоваться режим Толстый клиент.

Сырые и Неоригинальные решения

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

В этом случае необходимо отказаться от использования неоригинального или сырого решения и вернуться к предыдущему состоянию кода из архива.

Ошибка преобразования XDTO при загрузке данных из файлов

Если ошибка XDTO возникает при загрузке данных из файла, то причину ошибки можно обнаружить в самом файле. В моем случае, я выполнял загрузку данных данных из файла XML в новую ИБ, версия которой была несколько новее, чем версия ИБ источника. Во время загрузки возникала ошибка:

Посмотрев содержание файла XML я обнаружил тэг вида:

1 2 3 … <v8:АналитикаПрочихДоходовИРасходов/> …

Поскольку этот тэг одиночный и не содержит данных, я смело удалил все эти тэги из файла, что решило первую проблему, но создало другую. Загрузка стала сообщать о новой схожей ошибке:

Во втором случае я поступил аналогично, т.е. обнаружил и удалил уже парный тэг содержащий данные:

1 2 3 … <v8:Валютный>true</v8:Валютный> …

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

В целом можно подытожить, что причиной ошибки «Ошибка преобразования данных XDTO» является нарушение согласованности данных XML между модулем синтезирующим данные при выгрузке и модулем анализирующим их при загрузке. Проблемный тэг указывается в тексте ошибки как НачалоСвойства. Тэг следует найти в файле данных и понять причину. Возможно данные в тэге необходимо модифицировать или полностью удалить тэг, тут однозначный ответ я дать не могу.

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

Ошибка преобразования данных XDTO: Текст XML содержит недопустимый символ.

На самом деле ошибка преобразования XDTO является не какой-то определенной ошибкой, а является большим семейством ошибок возникающих при работе одного из базовых механизмов платформы 1С. Этот механизм обеспечивает передачу данных между различными подсистемами платформы, при этом данные из внутреннего представления одной подсистемы преобразуются в текстовый формат XML, передаются в другую подсистему, и там опять преобразуются во внутреннее представление. Ошибка преобразования XDTO говорит, что прямом или обратном преобразовании обнаружено какое-то несоответствие, из-за которого оно не может быть выполнено.

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

Прежде чем приступить к диагностике причины ошибки XDTO, следует выполнить стандартные профилактические операции над ИБ: очистить кэш, проверить состояния файла, выполнить тестирование ИБ.

Взаимодействие Клиента и Сервера

При запуске 1С в режиме Тонкий клиент взаимодействие клиента с ИБ происходит с использование преобразования XDTO, и если оно приводит к ошибке, то в тех случаях, когда это возможно, следует воспользоваться режим Толстый клиент.

Сырые и Неоригинальные решения

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

В этом случае необходимо отказаться от использования неоригинального или сырого решения и вернуться к предыдущему состоянию кода из архива.