|   |   | 
| 
 | Ошибка преобразования данных 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 не понимает, и скармливаешь полученную строку фабрике. В простых случаях это помогает.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |