gifts2017

Пример к статье "XDTO это просто"

Опубликовал Александр Перевислый (sashapere) в раздел Программирование - Практика программирования

Простой пример использования XDTO к статьям "XDTO это просто" и "XDTO это просто-2" от Evil Beaver.

            Простой пример использования XDTO к статьям "XDTO это просто-1" и "XDTO это просто-2" от Evil Beaver

В данном примере приведена конфигурация, в которой в пакетеXDTO описана схема символического мини документа. И одна обработка, в коророй описана процедура Записи и Чтения документа .

 

XML схема мини докунмета:  


<xs:schema xmlns:tns="http://www.sample-package.org/zakaz"xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.sample-package.org/zakaz"attributeFormDefault="unqualified"elementFormDefault="qualified">

      <xs:complexType name="ДокЗаказа">

            <xs:sequence>

                  <xs:element name="Дата"type="xs:dateTime"/>

                  <xs:element name="Номер"type="xs:decimal"/>

                  <xs:element name="ТабЧасти"type="tns:ТабЧасти"/>

            </xs:sequence>

      </xs:complexType>

      <xs:complexType name="СтрокаТаблТоваров">

            <xs:sequence>

                  <xs:element name="Наименование"type="xs:string"/>

                  <xs:element name="Цена"type="xs:decimal"/>

            </xs:sequence>

      </xs:complexType>

      <xs:complexType name="ТабЧасти">

            <xs:choice>

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

            </xs:choice>

      </xs:complexType>

</xs:schema>

 





Пример кода Записи и Чтения миниДокумента, используя схему:


     ТипДокЗаказа          = ФабрикаXDTO.Тип("http://www.sample-package.org/zakaz", "ДокЗаказа");

    ТипТабЧасти           = ФабрикаXDTO.Тип("http://www.sample-package.org/zakaz", "ТабЧасти");
   
ТипСтрокаТаблТоваров  = ФабрикаXDTO.Тип("http://www.sample-package.org/zakaz", "СтрокаТаблТоваров");



   
ДокЗаказа = ФабрикаXDTO.Создать(ТипДокЗаказа);
   
ДокЗаказа.Дата = ТекущаяДата();
   
ДокЗаказа.Номер = 1;


   
ТабЧасть = ФабрикаXDTO.Создать(ТипТабЧасти);


   
СтрокаТоваров ФабрикаXDTO.Создать(ТипСтрокаТаблТоваров);
   
СтрокаТоваров.Наименование = "Карандаш";
   
СтрокаТоваров.Цена = 100;
   
ТабЧасть.Товары.Добавить(СтрокаТоваров);



   
СтрокаТоваров ФабрикаXDTO.Создать(ТипСтрокаТаблТоваров);
   
СтрокаТоваров.Наименование = "Стерка";
   
СтрокаТоваров.Цена = 200;
   
ТабЧасть.Товары.Добавить(СтрокаТоваров);



   
СтрокаТоваров ФабрикаXDTO.Создать(ТипСтрокаТаблТоваров);
   
СтрокаТоваров.Наименование = "Линейка";
   
СтрокаТоваров.Цена = 150;
   
ТабЧасть.Товары.Добавить(СтрокаТоваров);



   
ДокЗаказа.ТабЧасти  = ТабЧасть;

   
//-------------------------------------------------------
    // ЗАПИСЫВАЕМ XML ДОКУМЕНТ

   
Запись = Новый ЗаписьXML;
   
Запись.УстановитьСтроку();
   
ФабрикаXDTO.ЗаписатьXML(Запись, ДокЗаказа);
   
СтрокаXML = Запись.Закрыть();


   
Сообщить( СтрокаXML );

   
//-------------------------------------------------------
    // ЧИТАЕМ XML ДОКУМЕНТ


   
Сообщить(Символы.ПС+Символы.ПС);
   
Сообщить("--------------------------------------------------------");
   
Сообщить(Символы.ПС);

   
Чтение = новый ЧтениеXML;
   
Чтение.УстановитьСтрокуСтрокаXML);

   
ДокЗаказа = ФабрикаXDTO.ПрочитатьXML( Чтение, ТипДокЗаказа );
   
Сообщить("--< миниДокумент >--");

   
Сообщить("Номер:"+ДокЗаказа.Номер);
   
Сообщить("Дата:" +ДокЗаказа.Дата);
   
Сообщить("== товары ==");

    для каждого
стр из  ДокЗаказа.ТабЧасти.Товары Цикл
        
Сообщить("    "+стр.Наименование+"    "+стр.Цена+"р.");
    КонецЦикла;

 



Скачать файлы

Наименование Файл Версия Размер
1Cv8_XDTO_МиниДокумент.cf 7
.cf 10,22Kb
20.06.16
7
.cf 10,22Kb Скачать
XSD_ДокЗаказа.xsd 5
.xsd 0,95Kb
20.06.16
5
.xsd 0,95Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей Овсянкин (Evil Beaver) 20.06.16 11:35
Все это очень мило, но в чем смысл данной публикации?
2. Александр Перевислый (sashapere) 20.06.16 15:31
(1) Evil Beaver, c нуля пытался сделать пример, убил день пока всё заработало т.к. толком не получалось составить рабочую схему. Этот пример наверно больше для новичков в этой теме как я ,просто чтобы было немного больше живых примеров.
jerry_maguire; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа