|
Ошибка преобразования данных XDTO | ☑ | ||
---|---|---|---|---|
0
FReIM
01.09.15
✎
09:51
|
Доброе утро.
При разборе XML файла фабрикой XDTO выпадает ошибка {Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (ПрочитатьXML) Объект=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); по причине: Ошибка преобразования данных XDTO: НачалоСвойства: IsNullValue Форма: Атрибут Тип: {http://www.w3.org/2001/XMLSchem... »» По идее, без указания типа объекта, должен получиться не сериализованный объект XDTO. Даже если описать все типы объектов, все равно выпадает эта ошибка. Падает на строчке <PatientID IsNullValue="true" xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchem... »»" />. Разработчики системы источника говорят, что тег IsNullValue="true" нужен для установки значения в значение Null, если оставить просто xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchem... »»", то значение будет просто проигнорировано. Но именно из-за этого тега у нас не работает загрузка данных в 1с из ESB шины данных. Вопрос, можно ли как-то обработать данный тег (в идеале) или хотя бы проигнорировать? Обработка проверки http://ifolder.su/44151012 Конфигурация пустышка, но с пакетами. http://ifolder.su/44151013 Файл на котором все и падает http://ifolder.su/44151014 |
|||
1
Radkt
01.09.15
✎
14:16
|
(0) Читал как текст, так хмл от пфр тоже не разбиралась 1с кой
|
|||
2
Serginio1
01.09.15
✎
14:21
|
Попробуй загружаться не через глобальную фабрику а через
Фабрика=СоздатьФабрику(ПутьК_XSD) Ну и многого 1С не понимает |
|||
3
Radkt
01.09.15
✎
15:05
|
v8: Чтение xml по схеме xsd
возможно подойдет |
|||
4
Serginio1
01.09.15
✎
15:39
|
(3) Все это заменяет одна строка
Фабрика = СоздатьФабрикуXDTO(ПутьК_XSD); |
|||
5
FReIM
02.09.15
✎
16:34
|
Это уже все делал.
и из набора схем и в конфу пакеты грузил и даже через СоздатьФабрикуXDTO(). Толку ноль. И разбирал. Через создать фабрику тоже. Сейчас распарсил через Документ DOM. Но просто не понимаю. Неужели 1с не понимает сложные типы данных и директивы импорта. Все есть в конфе, а не работает. Ни на 8.2 ни на 8.3. |
|||
6
FReIM
02.09.15
✎
16:48
|
<xs:complexType name="EsbString">
<xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute default="false" name="IsNullValue" type="xs:boolean" /> </xs:extension> </xs:simpleContent> </xs:complexType> Не понимает сию конструкцию 1с. |
|||
7
Serginio1
02.09.15
✎
16:52
|
Попробуй через v8: v8: Использование сборок .NET в 1С 7.x и 8.x
специально для этого и делал |
|||
8
Serginio1
02.09.15
✎
17:30
|
И вот хороший генератор классов
https://wscfblue.codeplex.com/ Как имея XML получить пакет XDTO? есть инструенты, или все руками? |
|||
9
FReIM
03.09.15
✎
14:29
|
Спасибо, но немного не то. Схема есть, предоставлена разработчиком. Взаимодействие с веб сервисом не нужно. Разобрал XML с помощью DOM. DOM не понимает специальные атрибуты.
Но просто не понятно почему XML не разбирается с помощью XDTO. То ли недоработка платформы, то ли не соответствие данной схемы стандартам принятым в 1с. |
|||
10
Serginio1
03.09.15
✎
14:41
|
(9) Так я тебе и показываю как десериализовать из XML в объект Net. 1C много чего не понимает.
|
|||
11
Serginio1
03.09.15
✎
14:44
|
То есть ты с помощью wscfblue описываешь классы Net.
Например public Object ПолучитьЗаказИзФайла(string ИмяФайла) { XmlSerializer serializer = new XmlSerializer(typeof(EdiSoftDocumentOrder.DocumentOrder)); EdiSoftDocumentOrder.DocumentOrder res; using ( FileStream fs = new FileStream(ИмяФайла, FileMode.Open)) { res = (EdiSoftDocumentOrder.DocumentOrder) serializer.Deserialize(fs); } return new AutoWrap(res); } |
|||
12
jk3
06.09.15
✎
23:03
|
(0) Считываешь XML в строку, вырезаешь через СтрЗаменить() тэги, которые стандартная 1С-ная фабрика XDTO не понимает, и скармливаешь полученную строку фабрике. В простых случаях это помогает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |