Чтение XML с помощью DXTO. Как программно, не создавая в конфигурации пакетов XDTO, обойти проблему наличия в XML типов данных?
Здравствуйте.
Пытаюсь прочитать XML файл:
Читаю так:
Получаю ошибку.
1с ругается на тип. Конечно, из текста XML можно удалить все вхождения " xsi:type=...". И все тогда прекрасно работает. Но это относительно долго по времени выполнения при большой куче подобных файлов.
И потому вопрос, а можно ли прочесть такой файл с помощью XDTO не изменяя текст файла и не создавая в конфигурации пакетов XDTO, так как конфа типовая, не создавая xsd,так как структура файлов разная?
Например, добавив тип "anyType", у меня получилось "проскочить" узел DocumentObject.РеализацияТоваровУслуг: с первым xsi:type=
Добавлял так:
Но вот уже на узле <Сделка xsi:type="DocumentRef.ЗаказПокупателя">957baa9b-87fc-11ed-8492-ac1f6bc59127</Сделка> все равно выпадает в ошибку....
Как программно, не создавая в конфигурации пакетов XDTO, обойти проблему наличия в XML типов данных?
Пытаюсь прочитать XML файл:
XML |
---|
[CODE<?xml version="1.0" encoding="UTF-8"?>
<DocumentObject.РеализацияТоваровУслуг xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="DocumentObject.РеализацияТоваровУслуг"> <Ref>f369d62b-8d74-11ed-8492-ac1f6bc59127</Ref> <DeletionMark>false</DeletionMark> <Date>2023-01-09T00:00:00</Date> <Number>НПФ00001346</Number> <Posted>false</Posted> <АдресДоставки>,644031, Омская обл, , Омск г, , 10 лет Октября ул, 209, В, , дом, литера, кв.</АдресДоставки> <БанковскийСчетОрганизации>02fbf00c-4c12-11ec-848f-ac1f6bc59127</БанковскийСчетОрганизации> <ВалютаДокумента>1a9d78c2-1f73-11e1-b1b4-eebcc7b9ee80</ВалютаДокумента> <ВидОперации>ПродажаКомиссия</ВидОперации> <ВидПередачи>ПоОрдеру</ВидПередачи> <Грузоотправитель>00000000-0000-0000-0000-000000000000</Грузоотправитель> <Грузополучатель>c291db67-45a1-11eb-8163-005056909363</Грузополучатель> <ДисконтнаяКарта>00000000-0000-0000-0000-000000000000</ДисконтнаяКарта> <ДоговорКонтрагента>c291db68-45a1-11eb-8163-005056909363</ДоговорКонтрагента> <Комментарий/> <Контрагент>c291db67-45a1-11eb-8163-005056909363</Контрагент> <КратностьВзаиморасчетов>1</КратностьВзаиморасчетов> <КурсВзаиморасчетов>1</КурсВзаиморасчетов> <Организация>38bad1e1-1f73-11e1-b1b4-eebcc7b9ee80</Организация> <Ответственный>c15f5b37-da10-11e2-b113-001517ea9c39</Ответственный> <ОтражатьВБухгалтерскомУчете>true</ОтражатьВБухгалтерскомУче <ОтражатьВНалоговомУчете>true</ОтражатьВНалоговомУчете> <ОтражатьВУправленческомУчете>true</ОтражатьВУправленческомУ <Подразделение>00000000-0000-0000-0000-000000000000</Подразделение> <Проект xsi:nil="true"/> <Сделка xsi:type="DocumentRef.ЗаказПокупателя">957baa9b-87fc-11ed-8492-ac1f6bc59127</Сделка> <Склад>d60e0717-0367-11e0-a497-001517ea9c39</Склад> <СуммаВключаетНДС>true</СуммаВключаетНДС> <СуммаДокумента>43758.1</СуммаДокумента> <СчетУчетаДоходовПоТареБУ>00000000-0000-0000-0000-000000000000</СчетУчетаДоходовПоТареБУ> <СчетУчетаДоходовПоТареНУ>00000000-0000-0000-0000-000000000000</СчетУчетаДоходовПоТареНУ> <СчетУчетаРасходовПоТареБУ>00000000-0000-0000-0000-000000000000</СчетУчетаРасходовПоТареБУ> <СчетУчетаРасходовПоТареНУ>00000000-0000-0000-0000-000000000000</СчетУчетаРасходовПоТареНУ> <СчетУчетаРасчетовПоАвансам>00000000-0000-0000-0000-000000000000</СчетУчетаРасчетовПоАвансам> <СтатьяПрочихДоходовРасходовПоТаре>00000000-0000-0000-0000-000000000000</СтатьяПрочихДоходовРасходовПоТаре> <СчетУчетаРасчетовПоТаре>00000000-0000-0000-0000-000000000000</СчетУчетаРасчетовПоТаре> <СчетУчетаРасчетовСКонтрагентом>00000000-0000-0000-0000-000000000000</СчетУчетаРасчетовСКонтрагентом> <ТипЦен>0b25910f-9a50-11e6-80ec-00505690a6ed</ТипЦен> <УчитыватьНДС>true</УчитыватьНДС> <ОтпускРазрешил>9e3d71e3-2e19-11e1-a5b8-b597f8b26c5f</ОтпускРазрешил> <ОтпускПроизвел>00000000-0000-0000-0000-000000000000</ОтпускПроизвел> <ДоверенностьНомер/> <ДоверенностьДата>0001-01-01T00:00:00</ДоверенностьДата> <ДоверенностьВыдана/> <ДоверенностьЧерезКого/> <ОтключитьКонтрольВзаиморасчетов>false</ОтключитьКонтрольВза <УсловиеПродаж>00000000-0000-0000-0000-000000000000</УсловиеПродаж> <ДополнениеКАдресуДоставки/> <ГлавныйБухгалтер>1bda282d-2e19-11e1-a5b8-b597f8b26c5f</ГлавныйБухгалтер> <ЗаГлавногоБухгалтераПоПриказу/> <ЗаРуководителяПоПриказу/> <НомерЧекаККМ>0</НомерЧекаККМ> <ККМ>00000000-0000-0000-0000-000000000000</ККМ> <АдресЭП/> <ТекстЭлектронногоЧека/> <РеализацияТоваровОблагаемыхНДСУПокупателя>false</Реализация <ОперацияВыбытияМаркированныхТоваров>0</ОперацияВыбытияМарки <ВидНоменклатурыЛогистика>00000000-0000-0000-0000-000000000000</ВидНоменклатурыЛогистика> <ВидНоменклатуры>e8c5ebc7-392d-11e2-ade2-001517ea9c39</ВидНоменклатуры> <Территория>80776c37-32c1-11e2-ade2-001517ea9c39</Территория> <ПричиныПередачиПродукции>00000000-0000-0000-0000-000000000000</ПричиныПередачиПродукции> <НомерЗаказаПокупателяСторонний/> <НомерПриемкиМЕТРО/> <Статус/> <Водитель/> <Исправлен>false</Исправлен> <Товары> <Row> <ЕдиницаИзмерения>0e4e04db-37ed-11ed-8491-ac1f6bc59127</ЕдиницаИзмерения> <ЕдиницаИзмеренияМест>2e2cfd63-37ed-11ed-8491-ac1f6bc59127</ЕдиницаИзмеренияМест> <ЗначениеУсловияАвтоматическойСкидки xsi:nil="true"/> <Качество>d05404a0-6bce-449b-a798-41ebe5e5b977</Качество> <Количество>105</Количество> <КоличествоМест>15</КоличествоМест> <Коэффициент>0.3</Коэффициент> <Номенклатура>0e4e04da-37ed-11ed-8491-ac1f6bc59127</Номенклатура> <ПереданныеПринятыеБУ>6351b0ad-ef11-4d48-b28b-e072df397bf3</ПереданныеПринятыеБУ> <ПереданныеПринятыеНУ>c2583358-c928-4094-8406-aa1bd4a28461</ПереданныеПринятыеНУ> <ПереданныеСобственныеБУ>9c8f100b-99a2-4eef-a2a7-5fdeddfed60b</ПереданныеСобственныеБУ> <ПереданныеСобственныеНУ>6c704450-4a89-4ff3-8a24-b6883bd2d67b</ПереданныеСобственныеНУ> <ПринятыеСчетУчетаБУ>61fb3f84-f673-43f9-9982-fed172f72b0d</ПринятыеСчетУчетаБУ> <ПринятыеСчетУчетаНУ>29ac5f9a-dc3e-455e-aeb4-5c6647f36b45</ПринятыеСчетУчетаНУ> <ПроцентАвтоматическихСкидок>0</ПроцентАвтоматическихСкидок> <ПроцентСкидкиНаценки>0</ПроцентСкидкиНаценки> <СерияНоменклатуры>00000000-0000-0000-0000-000000000000</СерияНоменклатуры> <Склад>d60e0717-0367-11e0-a497-001517ea9c39</Склад> <СпособСписанияОстаткаТоваров>СоСклада</СпособСписанияОстатк <Цена>110</Цена> <Сумма>11550</Сумма> <СтавкаНДС>НДС10</СтавкаНДС> <СуммаНДС>1050</СуммаНДС> <СчетУчетаБУ>786c877d-4c7f-4296-8066-9393ef352fcb</СчетУчетаБУ> <СчетУчетаНУ>f2d59ee1-b9ff-445a-a643-0742c14b9fe6</СчетУчетаНУ> <СчетДоходовБУ>59d969ed-9573-4f2a-88fc-88870a414267</СчетДоходовБУ> <СчетРасходовБУ>a3a91a81-b0aa-4cf1-ba9a-9c1b9be70dcb</СчетРасходовБУ> <СубконтоБУ xsi:type="CatalogRef.НоменклатурныеГруппы">e8c5ebc7-392d-11e2-ade2-001517ea9c39</СубконтоБУ> <СчетДоходовНУ>2fee72c4-fabd-45a1-9dd8-290668da9e71</СчетДоходовНУ> <СчетРасходовНУ>b6ed5ba3-9b98-470a-992e-dec872e108be</СчетРасходовНУ> <УсловиеАвтоматическойСкидки/> <ХарактеристикаНоменклатуры>00000000-0000-0000-0000-000000000000</ХарактеристикаНоменклатуры> <СубконтоНУ xsi:type="CatalogRef.НоменклатурныеГруппы">e8c5ebc7-392d-11e2-ade2-001517ea9c39</СубконтоНУ> <ЗаказПокупателя>957baa9b-87fc-11ed-8492-ac1f6bc59127</ЗаказПокупателя> <КлючСвязи>0</КлючСвязи> <КлючСтроки>5</КлючСтроки> <ПринадлежностьНоменклатуры/> <КодТНВЭД>00000000-0000-0000-0000-000000000000</КодТНВЭД> <ИдентификаторСтроки/> <ПрослеживаемыйТовар>false</ПрослеживаемыйТовар> <СтранаПроисхождения>00000000-0000-0000-0000-000000000000</СтранаПроисхождения> <АвтоподборРНПТ>false</АвтоподборРНПТ> <КоличествоГолов>0</КоличествоГолов> <ЦенаЗаГолову>0</ЦенаЗаГолову> </Row> <Row> <ЕдиницаИзмерения>66343c13-37f2-11ed-8491-ac1f6bc59127</ЕдиницаИзмерения> <ЕдиницаИзмеренияМест>803f1dbc-37f2-11ed-8491-ac1f6bc59127</ЕдиницаИзмеренияМест> <ЗначениеУсловияАвтоматическойСкидки xsi:nil="true"/> <Качество>d05404a0-6bce-449b-a798-41ebe5e5b977</Качество> <Количество>14</Количество> <КоличествоМест>2</КоличествоМест> <Коэффициент>0.3</Коэффициент> <Номенклатура>66343c12-37f2-11ed-8491-ac1f6bc59127</Номенклатура> <ПереданныеПринятыеБУ>6351b0ad-ef11-4d48-b28b-e072df397bf3</ПереданныеПринятыеБУ> <ПереданныеПринятыеНУ>c2583358-c928-4094-8406-aa1bd4a28461</ПереданныеПринятыеНУ> <ПереданныеСобственныеБУ>9c8f100b-99a2-4eef-a2a7-5fdeddfed60b</ПереданныеСобственныеБУ> <ПереданныеСобственныеНУ>6c704450-4a89-4ff3-8a24-b6883bd2d67b</ПереданныеСобственныеНУ> <ПринятыеСчетУчетаБУ>61fb3f84-f673-43f9-9982-fed172f72b0d</ПринятыеСчетУчетаБУ> <ПринятыеСчетУчетаНУ>29ac5f9a-dc3e-455e-aeb4-5c6647f36b45</ПринятыеСчетУчетаНУ> <ПроцентАвтоматическихСкидок>0</ПроцентАвтоматическихСкидок> <ПроцентСкидкиНаценки>0</ПроцентСкидкиНаценки> <СерияНоменклатуры>00000000-0000-0000-0000-000000000000</СерияНоменклатуры> <Склад>d60e0717-0367-11e0-a497-001517ea9c39</Склад> <СпособСписанияОстаткаТоваров>СоСклада</СпособСписанияОстатк <Цена>63</Цена> <Сумма>882</Сумма> <СтавкаНДС>НДС10</СтавкаНДС> <СуммаНДС>80.18</СуммаНДС> <СчетУчетаБУ>786c877d-4c7f-4296-8066-9393ef352fcb</СчетУчетаБУ> <СчетУчетаНУ>f2d59ee1-b9ff-445a-a643-0742c14b9fe6</СчетУчетаНУ> <СчетДоходовБУ>59d969ed-9573-4f2a-88fc-88870a414267</СчетДоходовБУ> <СчетРасходовБУ>a3a91a81-b0aa-4cf1-ba9a-9c1b9be70dcb</СчетРасходовБУ> <СубконтоБУ xsi:type="CatalogRef.НоменклатурныеГруппы">e8c5ebc7-392d-11e2-ade2-001517ea9c39</СубконтоБУ> <СчетДоходовНУ>2fee72c4-fabd-45a1-9dd8-290668da9e71</СчетДоходовНУ> <СчетРасходовНУ>b6ed5ba3-9b98-470a-992e-dec872e108be</СчетРасходовНУ> <УсловиеАвтоматическойСкидки/> <ХарактеристикаНоменклатуры>00000000-0000-0000-0000-000000000000</ХарактеристикаНоменклатуры> <СубконтоНУ xsi:type="CatalogRef.НоменклатурныеГруппы">e8c5ebc7-392d-11e2-ade2-001517ea9c39</СубконтоНУ> <ЗаказПокупателя>957baa9b-87fc-11ed-8492-ac1f6bc59127</ЗаказПокупателя> <КлючСвязи>0</КлючСвязи> <КлючСтроки>6</КлючСтроки> <ПринадлежностьНоменклатуры/> <КодТНВЭД>00000000-0000-0000-0000-000000000000</КодТНВЭД> <ИдентификаторСтроки/> <ПрослеживаемыйТовар>false</ПрослеживаемыйТовар> <СтранаПроисхождения>00000000-0000-0000-0000-000000000000</СтранаПроисхождения> <АвтоподборРНПТ>false</АвтоподборРНПТ> <КоличествоГолов>0</КоличествоГолов> <ЦенаЗаГолову>0</ЦенаЗаГолову> </Row> </Товары> <ВозвратнаяТара/> <Услуги/> <СерийныеНомера/> <СоставНабора/> <ДокументыРасчетовСКонтрагентом/> <СерийныеНомераСоставНабора/> <ШтрихкодыУпаковок/> <СведенияПрослеживаемости/> <АдресноеХранение/> </DocumentObject.РеализацияТоваровУслуг> |
Читаю так:
Фабрика=Новый ФабрикаXDTO;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораФайла.Заголовок = "Выберите:";
Если ДиалогВыбораФайла.Выбрать() Тогда
ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
Иначе
Возврат
КонецЕсли;
Чтение = Новый ЧтениеXML;
Текст = Новый ЧтениеТекста(ИмяФайла,"UTF-8");
Строка = Текст.Прочитать();
Чтение.УстановитьСтроку(Строка);
ОбXDTO=Фабрика.ПрочитатьXML(Чтение,ТипФабрики);
ПоказатьПолучаю ошибку.
1с ругается на тип. Конечно, из текста XML можно удалить все вхождения " xsi:type=...". И все тогда прекрасно работает. Но это относительно долго по времени выполнения при большой куче подобных файлов.
И потому вопрос, а можно ли прочесть такой файл с помощью XDTO не изменяя текст файла и не создавая в конфигурации пакетов XDTO, так как конфа типовая, не создавая xsd,так как структура файлов разная?
Например, добавив тип "anyType", у меня получилось "проскочить" узел DocumentObject.РеализацияТоваровУслуг: с первым xsi:type=
Добавлял так:
ТипФабрики = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","anyType");
ОбXDTO=Фабрика.ПрочитатьXML(Чтение,ТипФабрики);
Но вот уже на узле <Сделка xsi:type="DocumentRef.ЗаказПокупателя">957baa9b-87fc-11ed-8492-ac1f6bc59127</Сделка> все равно выпадает в ошибку....
Как программно, не создавая в конфигурации пакетов XDTO, обойти проблему наличия в XML типов данных?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Z Я писал, что файлы разные, заранее схема неизвестна. Кроме того, возникнет другой вопрос, а как эту схему создавать, а как подключать, а как не убить файловую систему миллионом *.xsd и прочее...
То есть вместо одного вопроса появится несколько других....
Хотелось бы все же получить ответ, на тот вопрос который задавался изначально.
Как добавить тип фабрике или настроить фабрику, чтобы XML проглатывался фабрикой без ошибок? При этом меня устроит, что фактически типы при этом у узлов пропадут и они станут строкой, то есть anyType
То есть вместо одного вопроса появится несколько других....
Хотелось бы все же получить ответ, на тот вопрос который задавался изначально.
Как добавить тип фабрике или настроить фабрику, чтобы XML проглатывался фабрикой без ошибок? При этом меня устроит, что фактически типы при этом у узлов пропадут и они станут строкой, то есть anyType
(8)Да и без XPath все довольно просто:
И с ним тоже...
Только вот для XDTO это будет элементарно:
Что намного приятнее.
В общем есть желание разобрать в этом страшном звере XDTO...
Вопрос лишь уперся в наличие типов XML файла. Без них - все радужно и легко...
СуммаДокумента = ЧтениеDOM.ПолучитьЭлементыПоИмени("СуммаДокумента")[0].ТекстовоеСодержимое;
И с ним тоже...
Только вот для XDTO это будет элементарно:
СуммаДокумента = ОбXDTO.СуммаДокумента
Что намного приятнее.
В общем есть желание разобрать в этом страшном звере XDTO...
Вопрос лишь уперся в наличие типов XML файла. Без них - все радужно и легко...
(5)Вот как мне получить ОбъектXDTО не выпав в ошибку:
У меня просто не получается получить ОбъектXDTО
{ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма.Форма(32)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ОбXDTO=Фабрика.ПрочитатьXML(Чтение,ТипФабрики);
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://www.w3.org/2001/XMLSchema }anyType - [30,24]
Проверка дополнительного свойства:
форма: Элемент
имя: Сделка
по причине:
Тип свойства неопределен
Квалифицированное имя типа: 'DocumentRef.ЗаказПокупателя'
по причине:
Ошибка отображения пространства имен
Отсутствует отображение для префикса: ''
ПоказатьОбXDTO=Фабрика.ПрочитатьXML(Чтение,ТипФабрики);
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {
Проверка дополнительного свойства:
форма: Элемент
имя: Сделка
по причине:
Тип свойства неопределен
Квалифицированное имя типа: 'DocumentRef.ЗаказПокупателя'
по причине:
Ошибка отображения пространства имен
Отсутствует отображение для префикса: ''
У меня просто не получается получить ОбъектXDTО
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот