Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 08:23

XDTO

Автор Ромашев Алексей, 19 янв 2016, 15:03

0 Пользователей и 1 гость просматривают эту тему.

Ромашев Алексей

Добрый день. Есть код на сервере:
Функция Заказ()
// Вставить содержимое обработчика.
// Подготовить Контрагентов
//ТипЗаказы= ФабрикаXDTO.Тип("http://www.livtorg.org","Заказы");
//ТипКонтрагент = ФабрикаXDTO.Тип("http://www.livtorg.org","Контрагент");
////ТипСписокДоговоров = ФабрикаXDTO.Тип("http://www.livtorg.org","СписокДоговоров");
//ТипДоговор = ФабрикаXDTO.Тип("http://www.livtorg.org","Договор");
НаборСхемXML = ФабрикаXDTO.ЭкспортСхемыXML("http://www.livtorg.org");
Для Счетчик = 0 по НаборСхемXML.Количество() - 1 Цикл
   Схема = НаборСхемXML.Получить(Счетчик);
   Схема.ОбновитьЭлементDOM();
   ЗаписьDOM = Новый ЗаписьDOM;
   ЗаписьXMLСтрока = Новый ЗаписьXML;
   ЗаписьXMLСтрока.УстановитьСтроку();
   ЗаписьXMLФайл = Новый ЗаписьXML;
   ЗаписьDOM.Записать(Схема.ДокументDOM, ЗаписьXMLСтрока);
   ЗаписьXMLФайл.УстановитьСтроку();
   ЗаписьXMLФайл.ЗаписатьБезОбработки(ЗаписьXMLСтрока.Закрыть());
   
    КонецЦикла;
    ЧТ= ЗаписьXMLФайл.Закрыть() ;
ЧТХЗ= Новый ХранилищеЗначения(ЧТ, Новый СжатиеДанных(9));
Возврат ЧТХЗ;

Который возвращает Хранилище значений, в котором находится XML, если я не ошибаюсь, который описывает структура XDTO пакета.

Вот код клиента:
&НаКлиенте
Процедура ОбменНажатие(Элемент)
  Строка = ПолучитьСхемуЗаказа();
КонецПроцедуры
Функция ПолучитьСхемуЗаказа()
//Соединение с сервисом!
Менеджер = Константы.Менеджер.Получить();
АдресСервера = "http://192.168.0.250:8080/LT/ws/exchange?wsdl";
Определения = Новый WSОпределения(АдресСервера,Менеджер);
Прокси = Новый WSПрокси(Определения,"http://www.livtorg.org","exchange","exchangeSoap");
Прокси.Пользователь = Менеджер;
//Получение списка номенклатуры в виде XDTO пакета
Хранилище = Прокси.Заказ();
Схема = Хранилище.Получить();
Возврат Схема;
КонецФункции

В переменной строка находится вот что:
<?xml version="1.0"?>
<xs:schema xmlns:tns="http://www.livtorg.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.livtorg.org" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:complexType name="Договор">
<xs:sequence>
<xs:element name="УИд" type="xs:string"/>
<xs:element name="Код" type="xs:string"/>
<xs:element name="Наименование" type="xs:string" nillable="true"/>
<xs:element name="Родитель" type="xs:string"/>
<xs:element name="СуммаЗадолженности" type="xs:decimal" nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Заказ">
<xs:sequence>
<xs:element name="НомерДок" type="xs:string"/>
<xs:element name="ДатаДок" type="xs:dateTime"/>
<xs:element name="КодКонтрагента" type="xs:string"/>
<xs:element name="КодДоговора" type="xs:string"/>
<xs:element name="ТабТовары" type="tns:ЗаказТовары" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ЗаказТовары">
<xs:sequence>
<xs:element name="КодНоменклатуры" type="xs:string"/>
<xs:element name="Количество" type="xs:decimal"/>
<xs:element name="Цена" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Заказы">
<xs:sequence>
<xs:element name="СписокЗаказов" type="tns:Заказ" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Контрагент">
<xs:sequence>
<xs:element name="УИд" type="xs:string"/>
<xs:element name="Код" type="xs:string"/>
<xs:element name="Наименование" type="xs:string" nillable="true"/>
<xs:element name="СписокДоговоров" type="tns:Договор" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Номенклатура">
<xs:sequence>
<xs:element name="УИд" type="xs:string"/>
<xs:element name="Код" type="xs:string"/>
<xs:element name="Наименование" type="xs:string" nillable="true"/>
<xs:element name="Родитель" type="xs:string" nillable="true"/>
<xs:element name="ЭтоГруппа" type="xs:boolean"/>
<xs:element name="ЕдиницаДляОтчетов" type="xs:string" nillable="true"/>
<xs:element name="КоэффициентЕДО" type="xs:decimal" nillable="true"/>
<xs:element name="ЕдиницаХраненияОстатков" type="xs:string" nillable="true"/>
<xs:element name="КоэффициентЕХО" type="xs:decimal" nillable="true"/>
<xs:element name="Цена" type="xs:decimal" nillable="true"/>
<xs:element name="Остатки" type="xs:decimal" nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="СписокКонтрагентов">
<xs:sequence>
<xs:element name="Контрагенты" type="tns:Контрагент" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="СписокТоваров">
<xs:sequence>
<xs:element name="Номенклатура" type="tns:Номенклатура" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>


Собственно вопрос. Как мне из этого всего создать XDTO пакет и заполнить его свойства данными?

Теги: XDTO 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск