Грабли метода Прочитать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</Сумма>
</РасчетФБ>
</Документы>
...
Вот такие пироги.
Skip to content
Ошибка при вызове метода контекста (ПрочитатьXML)
ЗаписанноеЗначение = ПрочитатьXML(ЧтениеXML);
по причине:
Ошибка преобразования данных XML
или
«Ошибка загрузки: Неверный формат файла выгрузки»
Очень часто при настройке обменов данных с помощью универсальной обработки загрузки/выгрузки XML возникает эта ошибка. Рассмотрим ниже основные причины появления данной ошибки, и как можно исправить её.
Не соответствие структуры метаданных конфигурации
Проблема скорее всего в том, что конфигурация просто отличается.
Если Вы передаете через внешнюю обработку Загрузки/выгрузки XML, то Вы можете передавать данные только между идентичными конфигурациями.
Если передача данных идёт через универсальные механизмы обмена, заложенных в конфигурацию, тогда необходимо исследователь правила обмена на предмет соответствия объектов метаданных.
Ошибка файловой системы
Периодически при обмене данными встречается такая ошибка, когда файл просто не может быть прочитан, и выводит ошибку Ошибка преобразования данных XML.
Попробуйте просто переименовать файл при выгрузке и загрузить его с другим именем.
Внимание! Если у вас остались вопросы или что-то не получилось, будем рады оказать Вам персональную техническую помощь. Заполните заявку и наш специалист свяжется с вами.

Обработка.ЗагрузкаСтруктурыМетаданных.МодульОбъекта(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]


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

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


© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
14-12-2016
Журавлев А.С.
(Сайт www.azhur-c.ru)
|
Glin 16 / 16 / 5 Регистрация: 26.05.2014 Сообщений: 122 |
||||
|
1 |
||||
|
13.04.2018, 08:00. Показов 21319. Ответов 8 Метки нет (Все метки)
Здравствуйте, при обмене выдаёт ошибку В XML нашёл на чём стопориться
1С:Предприятие 8.3 (8.3.11.3034)
__________________
0 |
|
Тест
383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
|
13.04.2018, 08:02 |
2 |
|
И все таки думаю проблема в том, что прав не хватает
0 |
|
16 / 16 / 5 Регистрация: 26.05.2014 Сообщений: 122 |
|
|
13.04.2018, 08:30 [ТС] |
3 |
|
Так захожу под Администратором с полными правами Добавлено через 1 минуту
0 |
|
Тест
383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
|
13.04.2018, 08:36 |
4 |
|
При каком действие то ошибка вылетает? При чтении файла, или при создании объекта?
0 |
|
16 / 16 / 5 Регистрация: 26.05.2014 Сообщений: 122 |
|
|
13.04.2018, 08:48 [ТС] |
5 |
|
при чтении Добавлено через 1 минуту
0 |
|
Тест
383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
|
13.04.2018, 08:50 |
6 |
|
У пользователя винды есть права на папкуфайла? Добавлено через 34 секунды
1 |
|
16 / 16 / 5 Регистрация: 26.05.2014 Сообщений: 122 |
|
|
13.04.2018, 08:58 [ТС] |
7 |
|
файл не могу к сожалению скинуть перс. данные в нём . файл лежит на машине где запушена 1с, конфигурации баз совпадают
0 |
|
16 / 16 / 5 Регистрация: 26.05.2014 Сообщений: 122 |
|
|
13.04.2018, 09:00 [ТС] |
8 |
|
можно так, пробовал отдельно подгрузить та же ошибка
0 |
|
16 / 16 / 5 Регистрация: 26.05.2014 Сообщений: 122 |
|
|
13.04.2018, 10:30 [ТС] |
9 |
|
Егор спасибо вам, проблему решил всё дело в правах как вы и говорили, только не туда смотрел, у справочника в правах для роли Администратор не были включены права на изменение, хотя роль ПолныеПрава была выбрана
0 |
| Sergei |
|
||
|---|---|---|---|
|
|
При загрузке данных из файла возникает следующая ошибка: {Форма.Форма.Форма(99)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ПередачаОС = ПрочитатьXML(ЧтениеXML); по причине: Значения данного типа не могут быть представлены в XML Вот код: Код 1C v 8.х
Изменено 26.10.11 15:34:34 по причине: Разукрасил код |
| Yandex |
|
||
|---|---|---|---|
|
|
| E_Migachev |
|
||
|---|---|---|---|
|
|
(0) Sergei, а откуда у тебя файл? каким кодом его выгружал? |
| Sergei |
|
||
|---|---|---|---|
|
|
Делал следующую выгрузку:
Код 1C v 8.х
Изменено 26.10.11 15:34:17 по причине: Разукрасил код |
| E_Migachev |
|
||
|---|---|---|---|
|
|
(2) Sergei, читай кодом, типо:
Код 1C v 8.х
|
| Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или . |

При ведении нескольких рабочих баз 1С порой возникает необходимость обмена данными между ними. Существует 2 способа переноса данных:
- Перенос данных с использованием правил обмена и обработки «Обмен данными XML». Правила обмена создаются с помощью конфигурации 1С:Конвертация данных.
- Перенос данных между похожими информационными базами обработкой «Выгрузка и загрузка данных XML».
Рассмотрим второй вариант, т.е. выгрузку и загрузку данных из/в конфигураций, в которых имеются одни и те же (идентичные), нужные нам объекты. Для этого воспользуемся внешней обработкой «Выгрузка и загрузка данных XML», которую можно скачать здесь.
Условие использования этой обработки следующее: В информационной базе, из которой выгружаются данные, должны присутствовать такие же объекты и с такими же реквизитами (наименование и тип данных), как и в базе, в которую производится загрузка данных.
Рассмотрим пример с переносом данных этой обработкой. Предположим, нужно перенести документы «Платёжное поручение входящее» и «Платёжное поручение исходящее». Решение этой задачи будет следующим.
Открываем внешнюю обработку «Выгрузка и загрузка данных XML» через главное меню: Файл ? Открыть… На вкладке «Выгрузка» указываем файл XML, в который мы будем сохранять данные.

Затем нужно указать период, за который будем выгружать объекты данных из базы 1С и сами объекты. Нужные нам для выгрузки документы помечаем галочкой в поле структуры объектов конфигурации в столбце «Данные для выгрузки». Если в выгружаемых документах есть ссылки на элементы справочников, которых нет в другой конфигурации, то имеет смысл проставить галочки в столбце «При необходимости», чтобы эти элементы тоже выгрузились вместе с документами.

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

Вот и всё, настройка выгрузки закончена, здесь всё просто! Нажимаем кнопку «Выгрузить данные» и ждём пока данные сохраняться в файл XML. Для более сложных выгрузок можно задавать отбор на выгружаемые объекты не только по периоду.
После выгрузки переходим во вторую базу 1С и открываем там эту же обработку. Переходим на вкладку «Загрузка» и указываем здесь тот же файл XML, в который мы выгрузили данные.

На этой вкладке ставим одну единственную галочку напротив «Продолжить загрузку объектов в случае возникновения ошибки» и нажимаем на кнопку «Загрузить данные». Остальные функции, например, использование итогов мы не рассматриваем, хотя эта функция может значительно ускорить загрузку объектов (записей по регистрам).
Обработку «Выгрузка и загрузка данных XML» (версия 2.1.8) для платформы 1С:Предприятие v8.3 (тонкий клиент) можно скачать здесь.
Обработку «Выгрузка и загрузка данных XML» (версия 2.1.6) для платформы 1С:Предприятие v8.2 (толстый клиент) можно скачать здесь.

