Ошибка при вызове метода контекста прочитатьxml данные прочитатьxml чтениеxml

Содержание:

1.       Основные сведения про языки XML и HTML

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

3.       Причины появления и решения ошибки преобразования 1С

Здравствуйте, коллеги! В данной статье будет рассмотрена ошибка преобразования данных XML: причины её возникновения и инструкция по ее устранению несколькими вариантами.  

1.    Основные сведения про языки XML и HTML

Для начала разберём, что такое XML. XML (еXtensible Markup Language) – это язык программирования, который необходим, чтобы хранить данные. В XML необходимо самим определять теги, так как изначально оны не определены. Особенность XML заключается в том, что это самоопределяемый язык. Языки XML и HTML довольно похожи. Единственное отличие между ними – назначение: HTML отображает данные и решает, в каком виде будет их отображение, когда XML только хранит и транспортирует данные. 

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

Обычно ошибка преобразования данных возникает, когда вызывается метод из контекста (ПрочитатьXML) в следующем виде: ЗаписатьЗначение = Прочитать XML(Чтение XML).

Это происходит, когда настраивается обмен данными при помощи стандартной обработки. Это может быть обработка загрузки или выгрузки XML.

Выглядит ошибка преобразования в 1С следующим образом:

Рис. 1 Ошибка преобразования 1С 8.3  

3.    Причины появления и решения ошибки преобразования 1С

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

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

1. Когда структура с метаданными в конфигурации не соответствует. Если «действие» происходит в узле, который является главным. В данном случае конфигурация, скорее всего, различается. То есть, когда происходит внешняя обработка с загрузкой или выгрузкой XML, то конфигурации должны быть одинаковыми, иначе будет возникать ошибка преобразования. В случае, когда данные передаются по стандартным обменам в конфигурации, нужно проверить совпадения объекта метаданных в правилах по обмену.

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

Если же все вышеперечисленное правильно, в узле, который отправляет данные, необходимо запустить обработку «ВыгрузкаЗагрузкаДанныхXML.epf», которая находится в каталоге с шаблоном конфигураций, в составе конфигурации «Конвертация данных». Кликаем на «Недопустимые символы в плане обмена» и выбираем узел, который получает данные. В случае, если по окончанию проверки появятся ошибки, для окончательного устранения ошибки преобразования XML нужно будет решить те небольшие неполадки.

В данной статье была рассмотрена ошибка преобразования данных XML, которая возникает при стандартных обменах. Также было выведено две причины её возникновения и описано три возможных способа решения ошибки преобразования данных в 1С 8.3.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Обработка.ЗагрузкаСтруктурыМетаданных.МодульОбъекта(74)}: Ошибка при вызове метода контекста (ПрочитатьXML) ПрочитатьXML(ЧтениеXML);

Описание ошибки:
Ошибка при попытке загрузить описание структуры метаданных в базу конфигурации 1С: Конвертация данных 8, ред. 2.1. Версия платформы 1С: Предприятие 8.3.7.1845

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

Кажется, наверное, что вряд ли бы столкнулся с данной ошибкой, как оказалось не столь редкой. Мне была предоставлена база конфигурации 1С: Конвертация данных 8 ред. 2.0. В которой уже имелись правила обмена, которые нужно было доработать под требуемую задачу. Но для того, чтобы выполнить доработку, необходимо было обновить описание конфигураций посредством загрузки нового описания из файла-описания конфигурации базы-приемника и источника.

Как известо файл-описания конфигурации подготавливается с помощью поставляющегося с 1С: Конвертация данных 8 файла MD82Exp.epf. Традиционно выполнив создание файла-описания структуры конфигурации, перешел к процессу «загрузки метаданных структуры конфигурации» в базе конвертации. И неожиданно по истечении некоторого времени после, казалось бы, удачногостарта процесса загрузки получил ошибку: {Обработка.ЗагрузкаСтруктурыМетаданных.МодульОбъекта(74)}: Ошибка при вызове метода контекста (ПрочитатьXML)
            ПрочитатьXML(ЧтениеXML);
по причине:
Ошибка преобразования данных XML: [sfile://C:/Базы 1С/А__/______.xml][171,22]

1с 8 Обработка.ЗагрузкаСтруктурыМетаданных.МодульОбъекта(74)}: Ошибка при вызове метода контекста (ПрочитатьXML) ПрочитатьXML(ЧтениеXML);

1C 8 конвертация ошибка при загрузке описания конфигурации {Обработка.ЗагрузкаСтруктурыМетаданных.МодульОбъекта(74)}: Ошибка при вызове метода контекста (ПрочитатьXML)

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

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

1С 8 конвертация данных Ошибка разбора xml при загрузке описания структуры конфигурации, конфы

Соответственно, установка обновления 1С: Конвертация данных релиза 2.1.7.1 и использование файла MD82Exp.epf из папки шаблона релиза разрешило проблему. Ошибка больше не проявилась.

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




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

14-12-2016

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

Ошибка преобразования данных XML при работе в 1С является стандартной и распространенной ошибкой. При возникновении этой ошибки блокируется дальнейшая работа с документами.

Напомним, что XML это язык программирования, чем-то похожий на HTML. Разница в том, что HTML регламентирует отображение элементов на странице, то есть браузер «считывает» HTML теги и показывает пользователям веб-страницу, согласно тегам. А XML ничего не регламентирует, он только сохраняет и транспортирует информацию. 

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

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

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

  1. Иногда ошибка преобразования данных XML возникает по достаточно простой причине, например, из-за того, что в передаваемом документе присутствуют недопустимые символы, а второстепенный узел просто не может их прочитать. Так ли это? Можно проверить на отправляющем узле, если открыть проверку «ВыгрузкаЗагрузкаДанныхXML.epf». Если причина в этом, тогда вы получите соответствующее сообщение. Если сообщения нет, тогда можно искать другие причины и устранять их.

  2. Технические неполадки в файловой системе. Ошибка появляется, потому что XML-файл не может быть прочитан. Такая проблема может быть связана с неправильным именем передаваемого файла, то есть узел-получатель не может прочитать имя передаваемого файла. Чтобы устранить эту причину, нужно на узле-отправителе поменять имя у передаваемого файла и отправить его еще раз. Если ошибка преобразования данных XML была из-за имени, тогда после переименования она устранится.

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

Заключение

Ошибка преобразования данных XML возникает в 1С нечасто, но в то же время это самый распространенный вид ошибки. Причин возникновения может быть несколько, и о них мы сегодня написали. Все ли причины возникновения ошибки мы перечислили? Нет, не все, но это самые распространенные, которые наиболее часто встречаются на практике.

При использовании обработки с диска ИТС (ВыгрузкаЗагрузкаДанныхXML), выходит сообщение об ошибке, в момент ЗАГРУЗКИ:

{ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXML.МодульОбъекта(147)}: Ошибка при вызове метода контекста (ПрочитатьXML)

            ЗаписанноеЗначение = ПрочитатьXML(ЧтениеXML);

по причине:

Ошибка преобразования данных XML: [file://C:/TANYA_New/88888888888888/поступление_2.xml][82,4]

Из копии Бухгалтерии1, перегружаем в рабочую Бухгалтерию2 документ «ПоступлениеТоваров и Услуг» (в нем всего одна позиция) и при загрузке (этой же обработкой, выдает ошибку выше.

Платформа 8.2.19.80.

Выгружаем из версии Бухгалтерии 2.0.54.13

Загружаем в версию Бухгалтерии 2.0.53.8

)

Грабли метода ПрочитатьXML() объекта ФабрикаXDTO

Что таит в себе окно редактирования XDTO-пакета

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


ФайлXML = Новый ЧтениеXML;
ФайлXML.УстановитьСтроку(СтрокаXML);

Пока ФайлXML.Прочитать() Цикл

Если ФайлXML.ЛокальноеИмя = "Message" И ФайлXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ФайлXML);
КонецЕсли;

КонецЦикла;

ФайлXML.Закрыть();

Первый параметр метода является обязательным, в который передается объект чтения XML. Второй параметр метода необязательный, в который передается тип элемента данных XDTO. Если тип не указан, то будет сделана попытка определить тип данных по текущему состоянию объекта ЧтениеXML.

Допустим, создадим тип в пакете XDTO  с пространством имен http://lk.1cps.ru, который будет описывать некую структуру XML:

1. Тип «Документы»

Кусок структуры XML:
...
<Документы>
<РасчетФБ>
<Культура>12122</Культура>
<ПосевнаяПлощадь>23</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>276</Сумма>
</РасчетФБ>
<РасчетФБ>
<Культура>232323</Культура>
<ПосевнаяПлощадь>34</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>408</Сумма>
</РасчетФБ>
</Документы>
...

Прочитаем эту структуру:

Пока ФайлXML.Прочитать() Цикл
Если ФайлXML.ЛокальноеИмя = "Документы" И ФайлXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ФайлXML, ФабрикаXDTO.Тип("http://lk.1cps.ru", "ДокументыТип"));
Прервать;
КонецЕсли;
КонецЦикла;

Приведенный код будет завершать ошибкой чтения XML, примерно такой:

Ошибка при вызове метода контекста (ПрочитатьXML)
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ФайлXML, ФабрикаXDTO.Тип("http://lk.1cps.ru", "ДокументыТип"));
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://lk.1cps.ru}ДокументыТип - [126,19]
Проверка дополнительного свойства:
форма: Элемент
имя: {http://lk.1cps.ru}Культура
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://lk.1cps.ru}ДокументыТип

ПРОШЛО 4 ЧАСА :(

Так как выше приведенный кусок структуры XML не относится к пространству имен http://lk.1cps.ru, то и метод ПрочитатьXML() выкидывал ошибку, несмотря на то, что тип правильно описывает структуру XML! Поэтому XML должен выглядеть так:
...
<Документы xmlns="http://lk.1cps.ru">
<РасчетФБ>
<Культура>12122</Культура>
<ПосевнаяПлощадь>23</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>276</Сумма>
</РасчетФБ>
<РасчетФБ>
<Культура>232323</Культура>
<ПосевнаяПлощадь>34</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>408</Сумма>
</РасчетФБ>
</Документы>
...

Вот такие пироги.

Sergei
26.10.2011 13:13 Прочитано: 9774

При загрузке данных из файла возникает следующая ошибка: {Форма.Форма.Форма(99)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ПередачаОС = ПрочитатьXML(ЧтениеXML);
по причине:
Значения данного типа не могут быть представлены в XML

Вот код:

Код 1C v 8.х

 ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлам+"ПередачаОС.xml");
ПередачаОС = ПрочитатьXML(ЧтениеXML);
ДокументОбъект = Документы.ПередачаОС.СоздатьДокумент();
Документ = Документы.ПередачаОС.ПолучитьФормуНовогоДокумента();
Документ.Открыть();
ЧтениеXML.Закрыть()

Изменено 26.10.11 15:34:34 по причине: Разукрасил код

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
26.10.2011 14:50 Ответ № 1

(0) Sergei, а откуда у тебя файл? каким кодом его выгружал?

Sergei
26.10.2011 14:59 Ответ № 2

Делал следующую выгрузку:
Код 1C v 8.х

 Файл = Новый ЗаписьXML;
Файл.ОткрытьФайл(ПутьКФайлам+"ПередачаОС.xml");
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента("Корневой");
Файл.ЗаписатьАтрибут("Документ", "ПередачаОС");
Файл.ЗаписатьКомментарий("Формирование списка документов");
Выборка = Документы.ПередачаОС.Выбрать();
Пока Выборка.Следующий() Цикл
Файл.ЗаписатьНачалоЭлемента("Документ");
Файл.ЗаписатьАтрибут("Номер", Строка(Выборка.Номер));
Файл.ЗаписатьАтрибут("Дата", Строка(Выборка.Дата));
Файл.ЗаписатьАтрибут("Организация", Строка(Выборка.Организация));
Файл.ЗаписатьАтрибут("Контрагент", Строка(Выборка.Контрагент));
Файл.ЗаписатьАтрибут("ДоговорКонтрагента", Строка(Выборка.ДоговорКонтрагента));
Для Каждого НовСтрока Из Выборка.ОС Цикл
Файл.ЗаписатьНачалоЭлемента("Строка");
Файл.ЗаписатьАтрибут("ОсновноеСредство", Строка(НовСтрока.ОсновноеСредство));
Файл.ЗаписатьАтрибут("Сумма", Строка(НовСтрока.Сумма));
Файл.ЗаписатьАтрибут("СтавкаНДС", Строка(НовСтрока.СтавкаНДС));
Файл.ЗаписатьАтрибут("СуммаНДС", Строка(НовСтрока.СуммаНДС));
Файл.ЗаписатьТекст(НовСтрока.ОсновноеСредство.Наименование);
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();

Изменено 26.10.11 15:34:17 по причине: Разукрасил код

E_Migachev
26.10.2011 15:36 Ответ № 3

(2) Sergei, читай кодом, типо:
Код 1C v 8.х

 ЧтениеXML = Новый ЧтениеXML();

ЧтениеXML.ОткрытьФайл("c:doc.xml");
// Текущим становится элемент Root.
ЧтениеXML.Прочитать();

// Текущим становится элемент с документом.
ЧтениеXML.Прочитать();

// Проверить, сможет ли с данным значением "справиться" система сериализации в данной базе.
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
// Получить ДокументОбъект.РеализацияТоваровУслуг.
ЗагружаемыйОбъект = ПрочитатьXML(ЧтениеXML);
ЗагружаемыйОбъект.Записать();
КонецЕсли;

ЧтениеXML.Закрыть()

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
description

2.4.4.40

Ошибка при вызове метода контекста (ПрочитатьXML): Ошибка разбораXML

Ошибка при вызове метода контекста (ПрочитатьXML): Ошибка разбораXML

Если при обмене возникает ошибка такого вида (чаще всего, это случается со статистикой запросов по артикулам), то нужно выполнить обмен с дополнительным экранированием служебных символов XML.

Настройка доступна в справочнике «Настройки обмена →Служебные параметры →»Удалять некорректные символы:
— эту настройку нужно включить, если при обмене не удается прочитать файл обмена
— затем выключить, после того, как обмен пройдет без ошибок (включенная настройка замедляет чтение файлов обмена).

{% hint style=»info» %}
Самым правильным будет остановить регламентное задание текущего обмена, включить флаг «Удалять некорректные символы» и через контекстное меню сделать полный обмен проблемной таблицей (в 99% случаев это таблица «Статистика поиска по строке»).
{% endhint %}

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста получитьобъект элемент не выбран
  • Ошибка при вызове метода контекста прочитатьxdto
  • Ошибка при вызове метода контекста получитьобщуюформу
  • Ошибка при вызове метода контекста прочитатьjson недопустимое имя свойства
  • Ошибка при вызове метода контекста получитьмакет нарушение прав доступа