Ошибка структуры данных xdto загрузка фиас

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

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

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

Существует два способа добавить XDTO-пакет в конфигурацию:

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

    Рис.1 XDTO пакеты

    Рис.1 XDTO пакеты
  • Импорт присланной схемы. Когда нам присылают данные, их схема может оказаться какой угодно, особенно, если раньше мы не работали с источником. Сильно упростит ситуацию, если вместе с XML нам пришлют и файл формата xsd. В нем содержится выгрузка XDTO-пакета, который может разобрать конкретные XML. Нам останется лишь импортировать его.

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

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

Это происходит следующими командами:


ФайлXSD = Новый Массив();
ФайлXSD.Добавить("D:1strust.xsd");
ФабрикаXDTOИзФайла = СоздатьФабрикуXDTO(ФайлXSD);
Номенклатура = ФабрикаXDTOИзФайла.Тип("http://www.1c.ru/products", "Номенклатура");

Экспорт и импорт файла

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

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Рис.2 Параметры пакета

Рис.2 Параметры пакета

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

  1. Определение схемы будущей XML;
    
    ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
    

  2. Заполнение свойств номенклатуры;
    
    Номенклатура = ФабрикаXDTO.Создать(ТипФабрики);
    Номенклатура.Наименование = "Тест XML";
    Номенклатура.Артикул = "2";
    

  3. Создание нового XML файла.
    
    ИмяФайла = "D:1struct1.xml";
    МойXML = Новый ЗаписьXML;
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
    МойXML.ЗаписатьОбъявлениеXML();
    ФабрикаXDTO.ЗаписатьXML(МойXML, номенклатура);
    МойXML.Закрыть();
    

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


ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
 
ИмяФайла = "D:1struct1.xml";
МойXML = Новый ЧтениеXML;
МойXML.ОткрытьФайл(ИмяФайла);
номенклатура = ФабрикаXDTO.ПрочитатьXML(МойXML, ТипФабрики);
МойXML.Закрыть();

Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.

Рис.3 Экспорт XDTO-пакета

Рис.3 Экспорт XDTO-пакета

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

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

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

Чтобы исправить эту ошибку, сначала почистите кэш или удалите, а также заново добавьте информационную базу в список баз. Затем внимательно проверьте файл XML – вдруг случайно сделали ошибку в его тексте, проверьте соответствие структуры пакету XDTO. Если ошибка появилась после обновления, сделайте тестирование и исправление ИБ, сохранив перед этим резервную копию базы. Если проблема не уйдет, вернитесь на предыдущую версию и подождите, пока разработчики 1С не разберутся с этой проблемой.

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

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

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

Рис.5 Ошибка проверки данных

Рис.5 Ошибка проверки данных

Более сложная для анализа проблема, если при обмене информацией 1С выдает ошибку о несоответствии типов XDTO. В этом случае придется проверять все данные, находить ошибки и их причины. В некоторых случаях ошибки могут быть в коде, иногда – в данных информационной базы. Чтобы это понять, необходимо иметь доступ к базам причастным к обмену и четко понимать всю суть происходящего экспорта и импорта.

Рис.6 Несоответствие типов XDTO

Рис.6 Несоответствие типов XDTO

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

Структура объекта не соответствует типу

Я

  

PsyTech

14.09.17 — 11:12

Всем привет!

При вызове метода сервиса получаю сообщение «Структура объекта не соответствует типу».

Структура объекта XDTO соответствует типу входного параметра, а 1с сравнивает структуру этого объекта с типом выходного параметра, естественно они не соответствуют. От чего так может быть?

  

PsyTech

1 — 14.09.17 — 11:17

*с типом возвращаемого значения

  

PsyTech

2 — 14.09.17 — 11:51

Т.е. На вход методу сервиса подаю параметр в соответствии с типом входного по WSСсылке, а туда как будто ожидается параметр с типом возвращаемого значения.

  

catena

3 — 14.09.17 — 12:00

(2)Где размещен сервис, откуда запрашивается, чем подкреплены такие выводы?

  

PsyTech

4 — 14.09.17 — 12:03

Через SOAP UI сервис нормальные ответы возвращает. Может я не понимаю смысыл этого сообщения? О чем оно? О том, что я на вход что-то не то передаю, или возврат не соответствует схеме?

  

PsyTech

5 — 14.09.17 — 12:06

хотя, ответ соответствует схеме…

  

catena

6 — 14.09.17 — 12:09

(4)У порядочного веб-сервиса возврат не может не соответствовать схеме. Чем запрос формируется? Через wsОпределения или вручную сбор хмл?

  

PsyTech

7 — 14.09.17 — 12:16

(6) Через wsОпределения, т.е. четко по схеме.

Почему 1с сравнивает входной параметр с типом возвращаемого значения?

  

PsyTech

8 — 14.09.17 — 12:20

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

Чтение объекта типа: {http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}OneC_Respose — [1,330]

Проверка дополнительного свойства:

    форма: Элемент

    имя: OPERATIONID

по причине:

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

Структура объекта не соответствует типу: {http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}OneC_Respose

OPERATIONID — это поле из возвращаемого значения. Причем тут оно?

  

PsyTech

9 — 14.09.17 — 13:25

не оставляйте меня тут одного!))

  

catena

10 — 14.09.17 — 13:27

(9)Мало информации. Структуры вс нет, кода нет, обсуждать пока нечего.

  

PsyTech

11 — 14.09.17 — 13:29

почему-то подумал, что этого достаточно

  

PsyTech

12 — 14.09.17 — 13:33

Вот кодик:

    Прокси = WSСсылки.SAP_Product.СоздатьWSПрокси(URI, ИмяСервиса, ИмяПорта);

    Прокси.Пользователь = login;

    Прокси.Пароль = password;

    

    ТипWSПараметра = Прокси.ФабрикаXDTO.Тип(URIПространстваИмен, Имя);

    WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);

    Меркурий.ИнициализироватьОбъектXDTO(WSПараметр, Прокси.ФабрикаXDTO);

    WSПараметр.localTransactionId = localTransactionId;

    WSПараметр.initiator.login = login;

    WSПараметр.enterprise.guid = guidПлощадки;

    WSПараметр.productionOperation.operationId = operationId;

    
    Ответ = Прокси.RegisterProductionOperation(WSПараметр);

  

PsyTech

13 — 14.09.17 — 14:27

А так получаю ошибку 500

    xmlHttp = Новый COMОбъект(«Microsoft.XMLHTTP»);  

    xmlHttp.OPEN(«POST», URI, 0, login, password);

    xmlHttp.setRequestHeader(«User-Agent», «1C Soap toolkit»);

    xmlHttp.setRequestHeader(«Content-type»,»content-type    text/xml; charset=utf-8″);

    xmlHttp.setRequestHeader(«Content-Length», СтрДлина(MessageExchange));

    xmlHttp.setRequestHeader(«SOAPAction», «http://sap.com/xi/WebService/soap1.1»;);

    xmlHttp.SEND(MessageExchange);

  

PsyTech

14 — 14.09.17 — 14:54

Было у кого такое, чтоб сторонний сервис через SOAP IU работал, а через 1с нет?

  

PsyTech

15 — 14.09.17 — 16:04

Может кто хотя бы может логику сообщения о ошибке пояснить?

Структура какого объекта не соответствует типу? Который передаю на вход? Почему тогда в тексте ошибки поле из возвращаемого значения?

17 янв 2019 13:51 #1

#1
от Константин

При попытке индексации кладр выбранных регионов выходит ошибка:

{Обработка.Адреса.Форма.ОбновлениеКЛАДР.Форма(1368)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ТекущаяЗапись = ФабрикаXDTO.ПрочитатьXML(Чтение, ФайлЗагрузки.ТипXDTOЗаписи);
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {www.v8.1c.ru/ssl/AddressSystem}Object
Проверка дополнительного свойства:
форма: Атрибут
имя: PARENTGUID
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {www.v8.1c.ru/ssl/AddressSystem}Object

Просьба помочь решить проблему.
КАМИН:Расчет заработной платы. Версия 3.0. Базовая версия (3.0.97.3) Платформа 8.3.9.2170

Тема закрыта.

21 янв 2019 11:57 #2

#2
от Виктория

Добрый день!
У меня тоже проблема с обновлением ФИАС.
Скачиваю с сайта fias.nalog.ru/Updates.aspx папку Base.7z, распаковываю, прописываю путь… при закрузке ошибка — В каталоге ФИАС присутствуют файлы не для всех выбранных регионов.Проверьте наличие необходимых файлов или снимите выбор с ненужного региона.
Действия все те же что и раньше…(((

Программа КАМИН 3.0.97.4 (платформа 8.3.12.1714)

Тема закрыта.

22 янв 2019 08:35 #3

#3
от Анна Терентьева

Добрый день. На днях тоже долго возилась с ФИАС, сто раз скачивала во всех форматах, ошибка была как у вас. Если правильно помню, то не надо было распаковывать, а путь указать на архив.

Тема закрыта.


Спасибо сказали: Андрей Ланьшин

22 янв 2019 08:47 #4

#4
от Юлия Невдах

Добрый день! Вы скачали необходимую область, сохранили на жёстком диске (скаченный файл ФИАС не рекомендуется размещать на рабочем столе, а так же попробуйте сохранить его по пути типа: папка в папке), например, C:UsersJuliaФИАС_Калуж.обл. Далее в программе, в обработке «Обновление адресов» прописываем этот путь к каталогу, флажок «индексировать по выбранным регионам» — отмечаем регион, нажимаем Переиндексировать.


Невдах Юлия, Группа компаний КАМИН

Тема закрыта.


Спасибо сказали: Андрей Ланьшин, Виктория

22 янв 2019 12:16 #5

#5
от Виктория

Спасибо! У меня получилось! Сохранила папку в папке и процесс пошел)))

Тема закрыта.


Спасибо сказали: Андрей Ланьшин

14 фев 2019 22:38 #6

#6
от Виктория

Добрый вечер!
Я снова с той же проблемой…Вроде бы в прошлый раз у меня получилось обновить ФИАС при помощи «Сохранила папку в папке и процесс пошел)))», но наверно мне показалось(((
У меня 4 камина, и везде одна и та же ошибка

{Обработка.Адреса.Форма.ОбновлениеКЛАДР.Форма(1368)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ТекущаяЗапись = ФабрикаXDTO.ПрочитатьXML(Чтение, ФайлЗагрузки.ТипXDTOЗаписи);
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {www.v8.1c.ru/ssl/AddressSystem}Object
Проверка дополнительного свойства:
форма: Атрибут
имя: PARENTGUID
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {www.v8.1c.ru/ssl/AddressSystem}Object

Платформа 8.3.12.1714, обновление 3.0.9.75, Windows 10, пробовала на Windows 8, та же ошибка.
Оправляла базы своему сис.админу, который обслуживает 1С. У нее на Windows XP прошло все отлично. Назад присланные базы, с подгруженным ФИАС у меня все равно не работают.
БОЛЬШАЯ просьба, помогите разобраться……..

Тема закрыта.

15 фев 2019 08:05 #7

#7
от Николай Малышевский

Виктория

У нее на Windows XP прошло все отлично.

А у неё какая платформа?
Дело в том, что на платформах 1С 8.3.12.* частенько возникают различные проблемы именно с XDTO. Стоит попробовать обновить платформу на 8.3.13.1690.

И ещё. Почистите локальный кэш метаданных.
Это звучит непонятно, а выполняется просто: нужно открыть папку C:Пользователи<ИмяПользователя>AppDataLocal1C1Cv8, и там удалить все папки с именами вроде «edc638ed-d712-455a-a833-3597b310cb5f». Только прежде чем делать это, надо закрыть все программы на 1С.
Кстати, эта папка — скрытая, но в неё легко попасть, если в Проводнике набрать %LOCALAPPDATA%1C1Cv8

Тема закрыта.


Спасибо сказали: Андрей Ланьшин

15 фев 2019 11:46 #8

#8
от Виктория

Добрый день!
Почистила локальный кеш метаданных – результата нет. Обновила платформу на 8.13.13.1690 – результата нет. Ошибка та же!!!
У сис.админ на Windows XP с платформой 8.3.10…. прошло все отлично, сегодня она попробовала на Windows 7 с платформой 8.3.12…. тоже все отлично.
У меня на 3-х компьютерах с Windows 10 результата нет + на 1-м ком. Windows 8 тоже без результата(((

Тема закрыта.

15 фев 2019 12:41 #9

#9
от Ирина

Поддерживаю! Тоже так и не стыкуется с ФИАС 1С. Беру из ФИАС ФНС (распакованный ОГРОМНЫЙ) и вытаскиваю оттуда необходимый регион. Пока в КАМИН 3-3.5-4 только так…..

Тема закрыта.

15 фев 2019 12:45 #10

#10
от AWG

Поддерживаю! Тоже так и не стыкуется с ФИАС 1С. Беру из ФИАС ФНС (распакованный ОГРОМНЫЙ) и вытаскиваю оттуда необходимый регион. Пока в КАМИН 3-3.5-4 только так…..

В 3.0, 3.5, 4.0 на текущий момент не поддерживается работа с адресным классификатором с сайта 1С с поддержкой адресов по муниципальному делению, скачайте с сайта 1С адресный классификатор без поддержки адресов по муниципальному делению.


Гржегоржевский Андрей, ГК «КАМИН»

Тема закрыта.


Спасибо сказали: Андрей Ланьшин

Chameleon1980

12.12.22 — 09:36

Приветствую Всех.

Вот такая хрень постоянно при отладке вылазит (практически в любом месте):

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.

по причине:

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

Значение: QEGDgoLBgsBVgEONHQQCTkuGumb7YE4YqpXfY5HdPZxoTYSvEptS02+agsGaCDIwLjA0LjIygYGhIK0AKIHhy1WhILWXKw1KpTfjS7mKQ4Q0sSh0gSA=    Тип: {http://www.w3.org/2001/XMLSchema}base64Binary

Отладка HTTP

1С:Предприятие 8.3 (8.3.22.1709)

Управление холдингом, редакция 3.2 (3.2.2.22)

Клиент-сервер

Кто-нибудь сталкивался? и как победить?

asady

1 — 12.12.22 — 09:43

(0) вангую — возникает на форме объекта.

Chameleon1980

2 — 12.12.22 — 09:51

ну, например, в ПриСозданииНаСервере

Chameleon1980

3 — 12.12.22 — 09:51

и потом отдалка просто отваливается
просто ничего нет в предметах отладки

Chameleon1980

4 — 12.12.22 — 09:52

(1) тут же вообще чисто серверная
тоько сервер-сервер

Chameleon1980

5 — 12.12.22 — 10:09

беда… блин

DayDreamer

6 — 12.12.22 — 10:12

переходите на 8.3.20.2184
21 и 22 платформа содержат различные баги, даже в последних релизах

Kassern

7 — 12.12.22 — 10:12

(4) «Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.» — «тоько сервер-сервер» неувязочка получается)

Kassern

8 — 12.12.22 — 10:14

(0) если сервис ваш, то попробуйте строкой передавать, а в base64 уже на приемнике конвертировать

Chameleon1980

9 — 12.12.22 — 10:19

1. нет никакой передачи.

2. еще раз повторю — возникает, например в процедуре ПриСозданииНаСервере, а она где ?? правильно — на сервере.

какие клиенты тут?

более придерживаюсь - (6)

жду еще читателей - может кто знает секрет

Chameleon1980

10 — 12.12.22 — 10:21

https://dropmefiles.com/fPuQ3

вот на этой строке падает

и отладка напрочь отваливается после этого

https://dropmefiles.com/fPuQ3

Chameleon1980

11 — 12.12.22 — 10:22

(10) тут клиентом не пахнет

Kassern

12 — 12.12.22 — 10:54

(11) а без отладки код отрабатывает?

Chameleon1980

13 — 12.12.22 — 11:08

(12) ага. без отладки все гладко.

Kassern

14 — 12.12.22 — 11:09

(13) А если через TCP/IP отладку запустить?

  

Chameleon1980

15 — 12.12.22 — 11:15

(14) пока не пробовали. я предлагал, но пока откатились до

1С:Предприятие 8.3 (8.3.20.2180)

эта ошибка ушла

Спасибо огромное всем, кто оказался рядом в трудную минуту и пытался помочь. :)

С наступающим всем новым годом !!!

1С 8 Ошибка «Ошибка преобразования данных XDTO:» при открытии базы в режиме 1С: Предприятие

Описание ошибки:
База была выгружена из ирхива .dt. База файловая, конфигурация 1С: Бухгалтерия предприятия, редакция 3.0. При работе в конфигураторе и при запуска конфигуратора ошибок не возникает. Ошибка проявляет себя только при попытке запуска в режиме 1С: Предприятие. Даже не выводится форма для авторизации пользователя, как возникает ошибка. Релиз платформы 1С: Предприятие — 8.3.12.89.

Найденные решения:

Нажатие на изображении увеличит его
1С 8, как устранить, убрать, исправить ошибку, при запуске базы, Ошибка преобразования данных XDTO, НачалоСвойства: errorProcessingSettings, messageTemplates, category

Полный текст ошибки:

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

НачалоСвойства: errorProcessingSettings Форма: Элемент Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorProcessingSettings

по причине:

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

НачалоСвойства: messageTemplates Форма: Элемент Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorMessagesTexts

по причине:

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

НачалоСвойства: category Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/core}ErrorCategory

Ошибка в некотором роде редкая, но не настолько, чтобы остаться неизвестной. Короткое обсуждение на форуме dev.mista.ru, содержащее ссылку на описание в каталоге ошибок (потребуется авторизация для сайта ИТС) продукта технологической платформы позволило точно определить проблему — неподходящий релиз платформы. Как указано — использовался релиз платформы 8.3.18.1289.



Нажатие на изображении увеличит его
ошибка при запуске базы 1С 8, Ошибка преобразования данных XDTO, форма, элемент тип: http://v8.1c.ru/8.2/managed-application/core

Таким образом оказалось, что необходимо установить более высокую минорную версию релиза 8.3.18 — 8.3.18.13.63 или позднее. Так же ошибка может возникать для более ранних релизов версий 8.3.17 (до 17.2127), 8.3.19 (до релиза 19.1150), а так же для 8.3.20 (ранее релиза 20.1363).

Обновление релиза платформы 1С:предприятие на релиз 8.3.18.1563 на рабочем месте, где возникла ошибка, исправило ситуацию и база была запущена в ошибок.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

04-10-2021

Журавлев А.С.
(Сайт azhur-c.ru)

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

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

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

Существует два способа добавить XDTO-пакет в конфигурацию:

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

    Рис.1 XDTO пакеты

    Рис.1 XDTO пакеты
  • Импорт присланной схемы. Когда нам присылают данные, их схема может оказаться какой угодно, особенно, если раньше мы не работали с источником. Сильно упростит ситуацию, если вместе с XML нам пришлют и файл формата xsd. В нем содержится выгрузка XDTO-пакета, который может разобрать конкретные XML. Нам останется лишь импортировать его.

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

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

Это происходит следующими командами:


ФайлXSD = Новый Массив();
ФайлXSD.Добавить("D:1strust.xsd");
ФабрикаXDTOИзФайла = СоздатьФабрикуXDTO(ФайлXSD);
Номенклатура = ФабрикаXDTOИзФайла.Тип("http://www.1c.ru/products", "Номенклатура");

Экспорт и импорт файла

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

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Рис.2 Параметры пакета

Рис.2 Параметры пакета

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

  1. Определение схемы будущей XML;
    
    ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
    

  2. Заполнение свойств номенклатуры;
    
    Номенклатура = ФабрикаXDTO.Создать(ТипФабрики);
    Номенклатура.Наименование = "Тест XML";
    Номенклатура.Артикул = "2";
    

  3. Создание нового XML файла.
    
    ИмяФайла = "D:1struct1.xml";
    МойXML = Новый ЗаписьXML;
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
    МойXML.ЗаписатьОбъявлениеXML();
    ФабрикаXDTO.ЗаписатьXML(МойXML, номенклатура);
    МойXML.Закрыть();
    

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


ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
 
ИмяФайла = "D:1struct1.xml";
МойXML = Новый ЧтениеXML;
МойXML.ОткрытьФайл(ИмяФайла);
номенклатура = ФабрикаXDTO.ПрочитатьXML(МойXML, ТипФабрики);
МойXML.Закрыть();

Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.

Рис.3 Экспорт XDTO-пакета

Рис.3 Экспорт XDTO-пакета

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

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

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

Чтобы исправить эту ошибку, сначала почистите кэш или удалите, а также заново добавьте информационную базу в список баз. Затем внимательно проверьте файл XML – вдруг случайно сделали ошибку в его тексте, проверьте соответствие структуры пакету XDTO. Если ошибка появилась после обновления, сделайте тестирование и исправление ИБ, сохранив перед этим резервную копию базы. Если проблема не уйдет, вернитесь на предыдущую версию и подождите, пока разработчики 1С не разберутся с этой проблемой.

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

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

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

Рис.5 Ошибка проверки данных

Рис.5 Ошибка проверки данных

Более сложная для анализа проблема, если при обмене информацией 1С выдает ошибку о несоответствии типов XDTO. В этом случае придется проверять все данные, находить ошибки и их причины. В некоторых случаях ошибки могут быть в коде, иногда – в данных информационной базы. Чтобы это понять, необходимо иметь доступ к базам причастным к обмену и четко понимать всю суть происходящего экспорта и импорта.

Рис.6 Несоответствие типов XDTO

Рис.6 Несоответствие типов XDTO

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

При входе в базу 1с вы можете увидеть “Ошибка преобразования данных XDTO:

Начало Свойства: errorProcessingSettings

Форма: Элемент

Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorProcessingSettings по причине

Чаще всего ошибка возникает при определенном типе запуска: это либо через тонкий клиент, либо через линк42, случаи бывают разные. Через браузер такие базы запускаются без ошибок.

Есть простое решение данной проблемы.

Достаточно запустить базу доступным нам способом (где нет ошибки) включить Функции тех. специалиста (Меню — Настройки — Параметры — Режим технического специалиста)

В Функциях для технического специалиста ищем Управление настройками обработки ошибок (Стандартные)

Запускаем

Готово!

Уже более 10 000 компаний работают
в облачной 1С от 42Clouds

— Консультация по 1С Бесплатно!

— Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте

— Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web

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

Ошибка исправлена в версиях платформы 8.3.22.1672/8.3.21.1607 и выше.

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

Версии платформы 8.3.22.1603 и 8.3.21.1508 больше недоступны для скачивания на сайте releases.1с.ru.

Фирма «1С» приносит извинения, а также просит партнеров донести эту информацию до пользователей, у которых проявилась проблема, и помочь им заменить версию платформы.

  • Ошибка стиральной машины электролюкс eh0
  • Ошибка структуры базы данных
  • Ошибка стиральной машины электролюкс e34
  • Ошибка структуры fb2 myhomelib как исправить
  • Ошибка стиральной машины электролюкс e02