Имя: Пароль:
1C
1С v8
Помогите победить схему 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
Вот так нужно наверно

<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>
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
Вот статья хорошая

https://infostart.ru/public/311011/
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) это просто кусок файла с одной записью и без закрывающего тега. </Данные> там тоже нет
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс