|   |   | 
| 
 | Помогите победить схему XDTO  - не могу разобраться | ☑ | ||
|---|---|---|---|---|
| 0
    
        Джордж1 06.04.21✎ 14:04 | 
        Есть XML-файл с реализациями
 <?xml version="1.0" encoding="WINDOWS-1251"?> -<Данные ВремяВыгрузки="05.04.21 16:44" Дата2="2021-03-31" Дата1="2021-03-01" ОрганизацияИНН=""> -<Реализации> -<Реализация ОрганизацияИНН="" СуммаВсего="150338.5" ПокупательИНН="" ОрганизацияПлательщикНДС="1" ЧистыйНомер="69" Номер="Ш000000069" Дата="2021-03-01"> <СтрокаТЧ СуммаСНДС="150338.5" СуммаБезНДС="125282.08" ЦенаСНДС="5050" ЦенаБезНДС="4208.33" Количество="29.77" ТоварНаименование="Товар"/> </Реализация> Загружаю в 8-ке через Схему XDTO СтрокаXSD = "<xs:schema xmlns:tns=""http://localhost/testXML"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" targetNamespace=""http://localhost/testXML"" attributeFormDefault=""unqualified"" elementFormDefault=""qualified""> |<xs:complexType name=""Данные""> | <xs:attribute name=""ОрганизацияИНН"" type=""xs:string""/> | <xs:attribute name=""Дата1"" type=""xs:date""/> | <xs:attribute name=""Дата2"" type=""xs:date""/> | <xs:attribute name=""ВремяВыгрузки"" type=""xs:string""/> | <xs:sequence> | <xs:element name=""Реализации"" type=""tns:Реализации"" maxOccurs=""unbounded""/> | </xs:sequence> |</xs:complexType> |<xs:complexType name=""Реализации""> | <xs:sequence> | <xs:element name=""Реализация"" type=""tns:Реализация"" maxOccurs=""unbounded""/> | </xs:sequence> |</xs:complexType> |<xs:complexType name=""Реализация""> | <xs:attribute name=""Дата"" type=""xs:date""/> | <xs:attribute name=""Номер"" type=""xs:string""/> | <xs:attribute name=""ЧистыйНомер"" type=""xs:integer""/> | <xs:attribute name=""ОрганизацияИНН"" type=""xs:string""/> | <xs:attribute name=""ОрганизацияПлательщикНДС"" type=""xs:boolean""/> | <xs:attribute name=""ПокупательИНН"" type=""xs:string""/> | <xs:attribute name=""СуммаВсего"" type=""xs:decimal""/> | <xs:sequence> | <xs:element name=""СтрокаТЧ"" type=""tns:СтрокаТЧ"" maxOccurs=""unbounded""/> | </xs:sequence> |</xs:complexType> |<xs:complexType name=""СтрокаТЧ""> | <xs:attribute name=""ТоварНаименование"" type=""xs:string""/> | <xs:attribute name=""Количество"" type=""xs:decimal""/> | <xs:attribute name=""ЦенаБезНДС"" type=""xs:decimal""/> | <xs:attribute name=""ЦенаСНДС"" type=""xs:decimal""/> | <xs:attribute name=""СуммаБезНДС"" type=""xs:decimal""/> | <xs:attribute name=""СуммаСНДС"" type=""xs:decimal""/> |</xs:complexType> |</xs:schema>" ; Получаю ошибку {ВнешняяОбработка.ЗагрузкаДок2021.Форма.Форма.Форма(96)}: Ошибка при вызове метода контекста (ПрочитатьXML): Ошибка преобразования данных XDTO: Чтение объекта типа: {http://localhost/testXML}Данные - [2,128] Проверка дополнительного свойства: форма: Элемент имя: Реализации: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://localhost/testXML}Данные | |||
| 1
    
        RomaH naïve 06.04.21✎ 14:15 | 
        Данные - [2,128] что там?     | |||
| 2
    
        Джордж1 06.04.21✎ 14:17 | 
        (1) - как раз между тегами
 <Реализации> -<Реализация | |||
| 3
    
        Джордж1 06.04.21✎ 14:19 | 
        XML VAlidator сообщает
 Content Is Not Allowed In Prolog. | |||
| 4
    
        RomaH naïve 06.04.21✎ 14:25 | 
        sequence - если не ошибаюсь должна соблюдаться последовательность
 ТоварНаименование - перед Количество а у тебя задом на перед | |||
| 5
    
        RomaH naïve 06.04.21✎ 14:26 | 
        choice     | |||
| 6
    
        Джордж1 06.04.21✎ 14:30 | 
        (4)я так понимаю это только для элементов
 А задом наперед - это так из IE - перестраивает. В самом файле все ОК | |||
| 7
    
        RomaH naïve 06.04.21✎ 14:31 | 
        (6) ну так ты тогда дай файлы нормальные
 схему и данные посмотреть | |||
| 8
    
        Джордж1 06.04.21✎ 14:33 | 
        (6)Чет не хватает у меня толку - как из 1с xml с форматированием выгрузить?     | |||
| 9
    
        RomaH naïve 06.04.21✎ 14:35 | 
        ЗаписьXML = Новый ЗаписьXML;
 ЗаписьXML.УстановитьСтроку("windows-1251"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, КорневойРаздел); ТекстВыгрузки = ЗаписьXML.Закрыть(); | |||
| 10
    
        Джордж1 06.04.21✎ 14:42 | 
        <?xml version="1.0" encoding="UTF-8"?>
 <Данные xmlns="http://localhost/testXML" ОрганизацияИНН="...." Дата1="2021-03-01" Дата2="2021-03-31" ВремяВыгрузки="05.04.21 16:44"> <Реализации> <Реализация Дата="2021-03-01" Номер="Ш000000069" ЧистыйНомер="69" ОрганизацияИНН="......" ОрганизацияПлательщикНДС="1" ПокупательИНН="" СуммаВсего="150338.5"> <СтрокаТЧ ТоварНаименование="Портландцемент ЦЕМ I 42,5Н ГОСТ 31108-2016" Количество="29.77" ЦенаБезНДС="4208.33" ЦенаСНДС="5050" СуммаБезНДС="125282.08" СуммаСНДС="150338.5" /> </Реализация> | |||
| 11
    
        Джордж1 06.04.21✎ 14:43 | 
        Вот начало файла xml     | |||
| 12
    
        Джордж1 06.04.21✎ 14:57 | 
        Данных у меня немного. 
 Подошел бы самый простой вариант - как в 7-ке Сотрудники=Данные.ВыбратьУзел("Сотрудники"); Выборка=Сотрудники.ВыбратьУзлы("Сотрудник"); НачатьТранзакцию(); Для к=0 По Выборка.КоличествоУзлов()-1 Цикл Сотрудник=Выборка.ПолучитьУзел(к); | |||
| 13
    
        arsik гуру 06.04.21✎ 15:09 | 
        (0) Мне кажется, минимальное количество должно быть 0
 https://i.imgur.com/NQDXkez.png | |||
| 14
    
        arsik гуру 06.04.21✎ 15:10 | 
        Ну и в данных у тебя нет реализаций.     | |||
| 15
    
        arsik гуру 06.04.21✎ 15:11 | 
        А в "Реализация" нет строк ТЧ     | |||
| 16
    
        Джордж1 06.04.21✎ 15:13 | 
        (13)Я брал пример с инете MinOccur - он не обязательно
 (14,15) Так у меня Данные - Реализации - Реализация - СтрокаТЧ | |||
| 17
    
        arsik гуру 06.04.21✎ 15:14 | 
        Вот так нужно наверно
 
 | |||
| 18
    
        Джордж1 06.04.21✎ 15:16 | 
        (17)спасибо, но я делаю на базе существующей обработки
 <xs:element name=""СтрокаТаблицы"" type=""tns:СтрокаТаблицы"" maxOccurs=""unbounded""/> minOccurs - Не обязательно | |||
| 19
    
        arsik гуру 06.04.21✎ 15:17 | 
        Вот так красивее
 https://pastebin.com/print/hAyzwbdk | |||
| 20
    
        Джордж1 06.04.21✎ 15:21 | 
        (10)ДА уж все, решил обойтись без схемы     | |||
| 21
    
        arsik гуру 06.04.21✎ 15:21 | 
        (18) Так у тебя схема кривая, и так видно. В схеме нет соответствий. Как у Данных появились подчиненные реализации?     | |||
| 22
    
        Джордж1 06.04.21✎ 15:21 | ||||
| 23
    
        Джордж1 06.04.21✎ 15:22 | 
        (21)
 <xs:complexType name="Данные"> <xs:sequence> <xs:element name="Реализации" type="tns:Реализации" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="ОрганизацияИНН" type="xs:string"/> <xs:attribute name="Дата1" type="xs:date"/> <xs:attribute name="Дата2" type="xs:date"/> <xs:attribute name="ВремяВыгрузки" type="xs:string"/> </xs:complexType> Со 2-й по третью строку - это не оно разве? | |||
| 24
    
        arsik гуру 06.04.21✎ 15:27 | 
        (23) Криво что то. Вот так оно в 1С импортируется
 https://i.imgur.com/swLC1fD.png | |||
| 25
    
        Джордж1 06.04.21✎ 15:31 | 
        (24)А что криво-то ? то что нет иерархии?
 Так ее и не должно быть А типы объектов - ты в свойствах увидишь А где это такая обработка в 8-ке? | |||
| 26
    
        arsik гуру 06.04.21✎ 15:32 | 
        (25) Тебе должно быть стыдно за такие слова
 https://i.imgur.com/IyHCS8E.png | |||
| 27
    
        Cthulhu 06.04.21✎ 15:32 | 
        у тебя там </Реализации> дальше есть?     | |||
| 28
    
        arsik гуру 06.04.21✎ 15:33 | 
        (25) как не должно быть иерархии? В (10)  что не иерархия?     | |||
| 29
    
        Джордж1 06.04.21✎ 15:35 | 
        (26)Да я все на 7-ке сижу. 
 (27)конечно в (0) посте (26)это сам xml файл, а ты схему XDTO показываешь | |||
| 30
    
        arsik гуру 06.04.21✎ 15:36 | 
        Ну так XML читается по схеме XDTO и они должны соответствовать     | |||
| 31
    
        Джордж1 06.04.21✎ 15:38 | 
        (30)Должны, но не в плане иерархии - т.е. все ComplexType можно определить просто в списке. А по факту они друг на друга будет ссылатся     | |||
| 32
    
        arsik гуру 06.04.21✎ 15:45 | 
        (31) Каким образом они будут ссылаться, если нет связи.     | |||
| 33
    
        Джордж1 06.04.21✎ 15:46 | 
        (32)ну как же нет.
 <xs:element name="Реализации" type="tns:Реализации" А это что - type="tns:Реализации" | |||
| 34
    
        arsik гуру 06.04.21✎ 15:50 | 
        Вот в твоем примере с инфостарта, то же самое дерево
 https://i.imgur.com/ichaBeh.png (33) "tns:Реализации" - это тип, он указывает, что в элементах "Реализации" лежат объекты с типом "Реализации" | |||
| 35
    
        Джордж1 06.04.21✎ 15:52 | 
        (34)Еще раз у меня вот такое дерево и Реализация <> Реализации
 Данные Реализации Реализация 1 Реализация 2 Реализация 3 | |||
| 36
    
        arsik гуру 06.04.21✎ 15:55 | 
        Все, я понял в чем ошибка.
 Вот так попробуй, и сравни со своим https://pastebin.com/raw/j6V4tN5N Там важен порядок. | |||
| 37
    
        arsik гуру 06.04.21✎ 15:56 | 
        + (36) xs:sequence должны располагаться выше атрибутов.     | |||
| 38
    
        Джордж1 06.04.21✎ 15:58 | 
        (36)А вот в примере с инфостарта порядка нет
 (37)это уже понял | |||
| 39
    
        Джордж1 06.04.21✎ 15:59 | 
        (36)ничего не поменялось     | |||
| 40
    
        Джордж1 06.04.21✎ 16:00 | 
        Я вот здесь еще проверяю
 https://www.liquid-technologies.com/online-xsd-validator и там ошибка cvc-elt.1.a: Cannot find the declaration of element 'Данные'. | |||
| 41
    
        arsik гуру 06.04.21✎ 16:04 | 
        (40) А вот так?
 https://pastebin.com/raw/Hc4SpRS7 | |||
| 42
    
        Джордж1 06.04.21✎ 16:06 | 
        (41)ничего не меняется     | |||
| 43
    
        arsik гуру 06.04.21✎ 16:35 | 
        (40) Да фигня этот парсер не работает он, точнее с данными 1С и схемами не работает     | |||
| 44
    
        Cthulhu 06.04.21✎ 18:08 | 
        (29); вы говорите неправду. в (0) посту нету </Реализации> - в (0) посту есть </Реализация>     | |||
| 45
    
        Джордж1 06.04.21✎ 19:13 | 
        (44) это просто кусок файла с одной записью и без закрывающего тега. </Данные> там тоже нет     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |