Имя: Пароль:
1C
 
Как имея XML получить пакет XDTO? есть инструенты, или все руками?
0 RomaH
 
naïve
25.02.15
11:27
Вот есть схема типа:

<package>
    <body version="НСИ 1.38" protocol="full" begin_date="01.02.2015" telcreator="4852321087" creation_date="17.02.2015">
        <LPUs name="1.Справочник поставщиков (МО)">
            <LPU ordr="" code="VY" kpp="784101001" inn="7825052242" ogrn="1027809228072" name="Общество с ограниченной ответственностью &quot;АВА-ПЕТЕР&quot;" single_financing_begin="0:00:00" single_financing_end="0:00:00" group="1" short_name="ООО &quot;АВА-ПЕТЕР&quot;" post_id="7" fio="Короткова Инна Викторовна" fio_dat="Коротковой Инне Викторовне"/>

ссылка на весь файл:
http://tfoms.yar.ru/active/doc/2015/nsi_138.rar

задача сделать по нему XSD чтобы импортировать в XDTO-пакеты в 1С

Altova XMLSpy2015 - что-то совсем не то выгружает. и сама же потом ругается. что файл не соотвествует схеме

VS - получше, и даже тип определяется в 1С

Тип = ФабрикаXDTO.Тип("http://tfoms.yar.ru/NSI","package";)

но, все-равно, при чтении
ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,Тип);

получаю ошибку разбора
1 RomaH
 
naïve
25.02.15
11:29
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://tfoms.yar.ru/NSI}package - [5,3]
Проверка дополнительного свойства:
    форма: Элемент
    имя: body
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://tfoms.yar.ru/NSI}package
2 Лодырь
 
25.02.15
11:30
Не проще найти поставщиков этой фигни и пытать их до получения результата?
3 qwerty
 
25.02.15
11:30
4 DS
 
25.02.15
11:36
Получить схему можно. Но на чуть меньше чем 100% это будет не та схема, какой ее задумал разработчик. Т. е. один и тот же XML может соответствовать нескольким разным схемам.
5 RomaH
 
naïve
25.02.15
11:41
1. Maximum request length exceeded
2. Создает только "свойства"
а нужны вроде как типы объектов
http://www.dropmocks.com/mIK4HP
такой XSD я и в алтове получил
6 RomaH
 
naïve
25.02.15
11:43
(4) ну не знаю - по другому файлу из той же оперы получили нормальную схему с описаниями типов (правда руками - с помощью регулярных и макросов)

и тут получим, но хотелось бы все это дело автоматизировать
7 RomaH
 
naïve
25.02.15
11:46
т.е. схема получаенная в (3) пункт 2 потом требует обработки. что бы свойства преобразовать в типы объектов

в итоге должно быть что-то типа:
только без ограничений (эта схема построена на основе другой схемы)


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:tns="http://tfoms.yar.ru/BILL"; targetNamespace="http://tfoms.yar.ru/BILL">;
  <xs:complexType name="T_account_elem_tt">
    <xs:attribute name="type_acc" type="xs:integer" use="required">
    </xs:attribute>
    <xs:attribute name="amountl" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:totalDigits value="12"/>
          <xs:fractionDigits value="2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="amount">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:totalDigits value="12"/>
          <xs:fractionDigits value="2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="T_account_elem_t">
    <xs:sequence>
      <xs:element type="tns:T_account_elem_tt" name="account_elem"  maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="T_account_elem_ff">
    <xs:attribute name="type_acc" type="xs:integer" use="required">
    </xs:attribute>
    <xs:attribute name="amountl" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:totalDigits value="12"/>
          <xs:fractionDigits value="2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="amount">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:totalDigits value="12"/>
          <xs:fractionDigits value="2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="invnumber">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="100"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="invdate">
      <xs:simpleType>
        <xs:restriction base="xs:date">
          <xs:minInclusive value="2010-01-01"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
8 qwerty
 
25.02.15
11:50
(7) Да, типы потом вручную нужно проставить.
9 RomaH
 
naïve
25.02.15
11:59
получается - сначала создаем схему типа (3)
где свойства в виде дерева

загружаем это в 1С
потом получаем пакет и обходим дерево создавая текст XSD уже с типами

а XDTO-пакет вроде можно из файла загрузить?
10 Serginio1
 
25.02.15
12:05
v8: Сформировать XML схему.

Правда все типы будут строковыми
11 Serginio1
 
25.02.15
12:15
12 Serginio1
 
25.02.15
12:22
Есть еще один вариант, это работа с классами .Net.
v8: v8: Использование сборок .NET в 1С 7.x и 8.x

Можешь создать по схеме классы и их использовать для Сериализации десериализации.

использовал
http://wscfblue.codeplex.com/

http://msdn.microsoft.com/en-us/magazine/ee335699.aspx

Я в свое время использовал её для генерации классов из XSD, так как родной не справлялся со сложными типами
Вот инструкция как подключить её к Visual Studio 2013
http://wscfblue.codeplex.com/discussions/544680

и
v8: v8: Использование сборок .NET в 1С 7.x и 8.x
13 RomaH
 
naïve
25.02.15
14:32
в общем (3) достаточно
просто в корневом узле должно быть определение пространства имен

<package xmlns="http://tfoms.yar.ru/BILL1"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший