Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Помогите победить схему XDTO - не могу разобраться

Помогите победить схему XDTO  - не могу разобраться
Я
   Джордж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}Данные
   RomaH
 
1 - 06.04.21 - 14:15
Данные - [2,128] что там?
   Джордж1
 
2 - 06.04.21 - 14:17
(1) - как раз между тегами
<Реализации>
-<Реализация
   Джордж1
 
3 - 06.04.21 - 14:19
XML VAlidator сообщает

Content Is Not Allowed In Prolog.
   RomaH
 
4 - 06.04.21 - 14:25
sequence - если не ошибаюсь должна соблюдаться последовательность
ТоварНаименование -  перед Количество

а у тебя задом на перед
   RomaH
 
5 - 06.04.21 - 14:26
choice
   Джордж1
 
6 - 06.04.21 - 14:30
(4)я так понимаю это только для элементов

А задом наперед - это так из IE - перестраивает. В самом файле все ОК
   RomaH
 
7 - 06.04.21 - 14:31
(6) ну так ты тогда дай файлы нормальные
схему и данные посмотреть
   Джордж1
 
8 - 06.04.21 - 14:33
(6)Чет не хватает у меня толку - как из 1с xml с форматированием выгрузить?
   RomaH
 
9 - 06.04.21 - 14:35
ЗаписьXML = Новый ЗаписьXML;
        
    ЗаписьXML.УстановитьСтроку("windows-1251");
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, КорневойРаздел);
        
    ТекстВыгрузки = ЗаписьXML.Закрыть();
   Джордж1
 
10 - 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" />
      </Реализация>
   Джордж1
 
11 - 06.04.21 - 14:43
Вот начало файла xml
   Джордж1
 
12 - 06.04.21 - 14:57
Данных у меня немного.

Подошел бы самый простой вариант - как в 7-ке


    Сотрудники=Данные.ВыбратьУзел("Сотрудники");
    Выборка=Сотрудники.ВыбратьУзлы("Сотрудник");
    НачатьТранзакцию();
    Для к=0 По Выборка.КоличествоУзлов()-1 Цикл
        Сотрудник=Выборка.ПолучитьУзел(к);
   arsik
 
13 - 06.04.21 - 15:09
(0) Мне кажется, минимальное количество должно быть 0
https://i.imgur.com/NQDXkez.png
   arsik
 
14 - 06.04.21 - 15:10
Ну и в данных у тебя нет реализаций.
   arsik
 
15 - 06.04.21 - 15:11
А в "Реализация" нет строк ТЧ
   Джордж1
 
16 - 06.04.21 - 15:13
(13)Я брал пример с инете MinOccur - он не обязательно

(14,15) Так у меня Данные - Реализации - Реализация - СтрокаТЧ
   arsik
 
17 - 06.04.21 - 15:14
Вот так нужно наверно

<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:sequence>
            <xs:element name="Реализации" type="tns:Реализация" minOccurs="0" 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>
    <xs:complexType name="Реализация">
        <xs:sequence>
            <xs:element name="СтрокиТЧ" type="tns:СтрокаТЧ" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <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: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>

   Джордж1
 
18 - 06.04.21 - 15:16
(17)спасибо, но я делаю на базе существующей обработки

<xs:element name=""СтрокаТаблицы"" type=""tns:СтрокаТаблицы"" maxOccurs=""unbounded""/>

minOccurs - Не обязательно
   arsik
 
19 - 06.04.21 - 15:17
Вот так красивее
https://pastebin.com/print/hAyzwbdk
   Джордж1
 
20 - 06.04.21 - 15:21
(10)ДА уж все, решил обойтись без схемы
   arsik
 
21 - 06.04.21 - 15:21
(18) Так у тебя схема кривая, и так видно. В схеме нет соответствий. Как у Данных появились подчиненные реализации?
   Джордж1
 
22 - 06.04.21 - 15:21
Вот статья хорошая

https://infostart.ru/public/311011/
   Джордж1
 
23 - 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по третью строку - это не оно разве?
   arsik
 
24 - 06.04.21 - 15:27
(23) Криво что то. Вот так оно в 1С импортируется
https://i.imgur.com/swLC1fD.png
   Джордж1
 
25 - 06.04.21 - 15:31
(24)А что криво-то ? то что нет иерархии?

Так ее и не должно быть
А типы объектов - ты в свойствах увидишь

А где это такая обработка в 8-ке?
   arsik
 
26 - 06.04.21 - 15:32
(25) Тебе должно быть стыдно за такие слова
https://i.imgur.com/IyHCS8E.png
   Cthulhu
 
27 - 06.04.21 - 15:32
у тебя там </Реализации> дальше есть?
   arsik
 
28 - 06.04.21 - 15:33
(25) как не должно быть иерархии? В (10)  что не иерархия?
   Джордж1
 
29 - 06.04.21 - 15:35
(26)Да я все на 7-ке сижу.

(27)конечно в (0) посте

(26)это сам xml файл, а ты схему XDTO показываешь
   arsik
 
30 - 06.04.21 - 15:36
Ну так XML читается по схеме XDTO и они должны соответствовать
 
 
   Джордж1
 
31 - 06.04.21 - 15:38
(30)Должны, но не в плане иерархии - т.е. все ComplexType можно определить просто в списке. А по факту они друг на друга будет ссылатся
   arsik
 
32 - 06.04.21 - 15:45
(31) Каким образом они будут ссылаться, если нет связи.
   Джордж1
 
33 - 06.04.21 - 15:46
(32)ну как же нет.

<xs:element name="Реализации" type="tns:Реализации"

А это что - type="tns:Реализации"
   arsik
 
34 - 06.04.21 - 15:50
Вот в твоем примере с инфостарта, то же самое дерево
https://i.imgur.com/ichaBeh.png

(33) "tns:Реализации" - это тип, он указывает, что в элементах "Реализации" лежат объекты с типом "Реализации"
   Джордж1
 
35 - 06.04.21 - 15:52
(34)Еще раз у меня вот такое дерево и Реализация <> Реализации

Данные
 Реализации
  Реализация 1
  Реализация 2
  Реализация 3
   arsik
 
36 - 06.04.21 - 15:55
Все, я понял в чем ошибка.
Вот так попробуй, и сравни со своим
https://pastebin.com/raw/j6V4tN5N

Там важен порядок.
   arsik
 
37 - 06.04.21 - 15:56
+ (36) xs:sequence должны располагаться выше атрибутов.
   Джордж1
 
38 - 06.04.21 - 15:58
(36)А вот в примере с инфостарта порядка нет
(37)это уже понял
   Джордж1
 
39 - 06.04.21 - 15:59
(36)ничего не поменялось
   Джордж1
 
40 - 06.04.21 - 16:00
Я вот здесь еще проверяю

https://www.liquid-technologies.com/online-xsd-validator

и там ошибка

cvc-elt.1.a: Cannot find the declaration of element 'Данные'.
   arsik
 
41 - 06.04.21 - 16:04
   Джордж1
 
42 - 06.04.21 - 16:06
(41)ничего не меняется
   arsik
 
43 - 06.04.21 - 16:35
(40) Да фигня этот парсер не работает он, точнее с данными 1С и схемами не работает
   Cthulhu
 
44 - 06.04.21 - 18:08
(29); вы говорите неправду. в (0) посту нету </Реализации> - в (0) посту есть </Реализация>
   Джордж1
 
45 - 06.04.21 - 19:13
(44) это просто кусок файла с одной записью и без закрывающего тега. </Данные> там тоже нет


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.