Фабрикаxdto прочитатьxml ошибка чтения файла

Грабли метода Прочитать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</Сумма>
</РасчетФБ>
</Документы>
...

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

   Nyarlathotep

03.07.20 — 16:15

Добрый день!

Читаю файл xml вот так

чтение = новый чтениеXML;

чтение.открытьФайл(путьКФайлу);

результат = сериализаторXDTO.прочитатьXML(чтение);

в результате получаю такую ошибку:

{ОбщийМодуль.WS_Привилегированный.Модуль(293)}: Ошибка при вызове метода контекста (ПрочитатьXML): Ошибка преобразования данных XDTO:

НачалоСвойства: {http://v8.1c.ru/8.1/data/core}Structure    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}Structure: Ошибка преобразования данных XDTO:

НачалоСвойства: Value    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType: Ошибка преобразования данных XDTO:

НачалоСвойства: ValueType    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}TypeDescription: Ошибка преобразования данных XDTO:

Значение: xs:string    Тип: {http://www.w3.org/2001/XMLSchema}QName: Ошибка отображения типов:

Отображение типа ‘{http://www.w3.org/2001/XMLSchema}QName’ в тип ‘РасширенноеИмяXML’

как я понимаю, объект сериализаторXDTO не может прочитать файл, что-то ему не нравится. Вопрос — как понять, что именно не нравится? Файл довольно большой. Указаний на конкретное место в файле в описании ошибки нет. Как найти, что именно не нравится сериализатору в файле?

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С адресный классификатор без поддержки адресов по муниципальному делению.


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

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


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

OverDozero, тут не создается фабрика
Этим кодом создается объектXDTO

Добавлено через 1 минуту
И для этого используется глобальная фабрика

Глобальный контекст (Global context)
ФабрикаXDTO (XDTOFactory)
Использование:
Только чтение.
Описание:
Тип: ФабрикаXDTO.
Фабрика XDTO, содержащая все пакеты XDTO, имеющиеся в конфигурации, а также предопределенные пакеты (например, пакет типов XML схемы).

Добавлено через 2 минуты
OverDozero, Т.е. в глобальной фабрике есть описание типов которое считывается вот отсюда

Цитата
Сообщение от OverDozero
Посмотреть сообщение

ПолучитьМакет(«СхемаXML»).ПолучитьТекст()

Добавлено через 1 минуту
OverDozero, еще раз медленно! Глобальная фабрика для каждой конфигурации СВОЯ!

Добавлено через 7 минут
Yulunga, да тут все просто.

1. Есть модель (xsd) в нем описано как должен выглядеть xml (входящий или исходящий это не важно)

2. Есть фабрика которая знает(или может знать) много много таких xsd моделей, при помощи фабрики мы можем объектно создать нужный нам тип из любой его xsd модели и записать в xml (который будет соответствовать этой модели)

или прочитать xml по определенной схеме:
1. Убедится в момент чтения что xml соответствует схеме
2. Объектно читать xml

Добавлено через 4 минуты
Yulunga, если простыми словами и для 1С-ника
в xsd ты можешь описать структуру какого-нибудь справочника (например банки) описать типы реквизитов и т.д. и выгрузить в xml этот справочник

в другой базе 1С (где нет справочника банки) смогут прочитать твой xml и создать абстрактный справочник банки и работать с ним объектно (как будто он есть в конфигурации)

Добавлено через 6 минут
в обычном XML можно передать только примитивные типы
с помощью xsd можно передавать сложные типы


  1. 1с-ник 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</Сумма>
    </РасчетФБ>
    </Документы>
    ...

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

Источник
   Nyarlathotep

03.07.20 — 16:15

Добрый день!

Читаю файл xml вот так

чтение = новый чтениеXML;

чтение.открытьФайл(путьКФайлу);

результат = сериализаторXDTO.прочитатьXML(чтение);

в результате получаю такую ошибку:

{ОбщийМодуль.WS_Привилегированный.Модуль(293)}: Ошибка при вызове метода контекста (ПрочитатьXML): Ошибка преобразования данных XDTO:

НачалоСвойства: {http://v8.1c.ru/8.1/data/core}Structure    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}Structure: Ошибка преобразования данных XDTO:

НачалоСвойства: Value    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType: Ошибка преобразования данных XDTO:

НачалоСвойства: ValueType    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}TypeDescription: Ошибка преобразования данных XDTO:

Значение: xs:string    Тип: {http://www.w3.org/2001/XMLSchema}QName: Ошибка отображения типов:

Отображение типа ‘{http://www.w3.org/2001/XMLSchema}QName’ в тип ‘РасширенноеИмяXML’

как я понимаю, объект сериализаторXDTO не может прочитать файл, что-то ему не нравится. Вопрос — как понять, что именно не нравится? Файл довольно большой. Указаний на конкретное место в файле в описании ошибки нет. Как найти, что именно не нравится сериализатору в файле?

Источник

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С адресный классификатор без поддержки адресов по муниципальному делению.


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

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


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

Источник

OverDozero, тут не создается фабрика
Этим кодом создается объектXDTO

Добавлено через 1 минуту
И для этого используется глобальная фабрика

Глобальный контекст (Global context)
ФабрикаXDTO (XDTOFactory)
Использование:
Только чтение.
Описание:
Тип: ФабрикаXDTO.
Фабрика XDTO, содержащая все пакеты XDTO, имеющиеся в конфигурации, а также предопределенные пакеты (например, пакет типов XML схемы).

Добавлено через 2 минуты
OverDozero, Т.е. в глобальной фабрике есть описание типов которое считывается вот отсюда

Цитата
Сообщение от OverDozero
Посмотреть сообщение

ПолучитьМакет(«СхемаXML»).ПолучитьТекст()

Добавлено через 1 минуту
OverDozero, еще раз медленно! Глобальная фабрика для каждой конфигурации СВОЯ!

Добавлено через 7 минут
Yulunga, да тут все просто.

1. Есть модель (xsd) в нем описано как должен выглядеть xml (входящий или исходящий это не важно)

2. Есть фабрика которая знает(или может знать) много много таких xsd моделей, при помощи фабрики мы можем объектно создать нужный нам тип из любой его xsd модели и записать в xml (который будет соответствовать этой модели)

или прочитать xml по определенной схеме:
1. Убедится в момент чтения что xml соответствует схеме
2. Объектно читать xml

Добавлено через 4 минуты
Yulunga, если простыми словами и для 1С-ника
в xsd ты можешь описать структуру какого-нибудь справочника (например банки) описать типы реквизитов и т.д. и выгрузить в xml этот справочник

в другой базе 1С (где нет справочника банки) смогут прочитать твой xml и создать абстрактный справочник банки и работать с ним объектно (как будто он есть в конфигурации)

Добавлено через 6 минут
в обычном XML можно передать только примитивные типы
с помощью xsd можно передавать сложные типы

Источник

  1. Offline

    1с-ник
    Профессионал в 1С
    Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104

    <КоммерческаяИнформация xmlns="http://www.commerceml.org">
    ...
    </КоммерческаяИнформация>
  2. Слишком тонкий намек. Я не понял где косяк.


  3. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.891
    Симпатии:
    1.032
    Баллы:
    204

    Володя, у тебя явно не хватает описания пространства имен и типов в твоем рукодельном *.XML

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

  4. Ну у меня там один тип «Документ». Остальные — простые типы «string».
    Попробую после обеда сделать то, что ты написал. Если я конечно правильно тебя понял )


  5. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.891
    Симпатии:
    1.032
    Баллы:
    204

    По твоей логике, 1С должна каким-то образом догадаться о том, что у тебя в файле значения типа STRING, а одно типа — Документ? :)

  6. Нет, это я прописывал. Все равно не понимает )

  7. Шляпа какая-то
    Этот xml я выгрузил с помощью xdto и обртано 1с его проглатывает.

    <?xml version="1.0" encoding="UTF-8"?><КоммерческаяИнформация xmlns="http://www.commerceml.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Документ><Ид xsi:type="xs:string">eryw234-rwer34ywr-45werer-44</Ид><Номер xsi:type="xs:string">5555</Номер><Дата xsi:type="xs:string">01-01-2015</Дата><ХозОперация xsi:type="xs:string">Закупка</ХозОперация></Документ></КоммерческаяИнформация>

    А этот, оригинальный — ни в какую. Структура вроде одинакова?

    <?xml version="1.0" encoding="UTF-8"?>
    <КоммерческаяИнформация>
        <Документ>
            <Ид>d9679a46-7041-11e7-89cf-50e549e0b489</Ид>
            <Номер>MS-0000947б</Номер>
            <Дата>2017-07-24</Дата>
            <ХозОперация>Отпуск товара</ХозОперация>
        </Документ>
    </КоммерческаяИнформация>

    — Объединение сообщений, 26 июл 2017

    Если допелить в исходный xml эту надпись «xmlns=»http://www.commerceml.org»» (по тончайшему намеку 1с-инка), то проглатывает. но не буду же я в каждый документ, котрый высылает мне КА руками допиливать эту строчку. Можно как-то заставить xdto глотать все? )


  8. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.891
    Симпатии:
    1.032
    Баллы:
    204

  9. Вадим, что значит доведи? Этот xml без xmnls мне приходит из КА, читай от поставщика. Как я могу его довести? )
    Причем, на платформе 8.2 у нас ходят в обе стороны обмены с сайтом через xml. И никаких xmnls в этих файлах нет.

    Я же когда читаю файл — я даю понять какой объект xdto надо использовать:
    тОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип(«http://www.commerceml.org», «КоммерческаяИнформация»));
    Считаю, что обязательное требование наличия xmnls в файле — избыточно!


  10. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.891
    Симпатии:
    1.032
    Баллы:
    204

    Ты можешь считать что угодно, однако, формат XDTO(в остальном мире SOAP) стандартизирован.

    Файл отправителем каким образом формируется? Так понимаю, не с помощью XDTO, ну так и обрабатывай его так же без применения XDTO, либо преобразовывай на месте в формат, понятный для применения XDTO и будет все работать.

  11. В остальном мире похожих проблем нет, а 1сники мучаются. Я вчера почитал форум.
    Зачем было делать инструмент xdto — если он работает только в 10% случаев. Причем, повторюсь, в 8.2 работает без xmnls.


  12. AsadRoman

    Offline

    AsadRoman

    Регистрация:
    22 авг 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1

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

  13. Так и сделал. Но это костылек


  14. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.891
    Симпатии:
    1.032
    Баллы:
    204

    Дык у тебя костыльки изначально пошли, когда ты решил любой XML обработать фабрикой XDTO :)


  15. AsadRoman

    Offline

    AsadRoman

    Регистрация:
    22 авг 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Источник

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

  • Ф75 ошибка вайлант как устранить
  • Ф63 ошибка стиральной машины bosch
  • Ф34 ошибка стиральной машины бош
  • Ф28 ошибка вайлант не сбрасывается
  • Ф26 вайлант ошибка на котле

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии