1С 8.3 XDTO - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 XDTO

Реклама:
XML Data Transfer Objects (XDTO) в 1С 8.3 - это механизм обмена данными (с определенной структурой) с различными конфигурациями, сторонними приложениями, веб-сервисами. Создан компанией 1С специально для удобного взаимодействия с файлами XML. Позволяет импортировать XML-файл по установленным заранее правилам (XDTO-пакет) в объект 1С и обращаться к нему через точку (без тегов, атрибутов и скобок). Для трансформации важно наличие в файле атрибута "targetNamespace" с указанием пространства имен в XSD-файле.

XDTO-пакет можно использовать в конфигурации тремя способами:
  1. Создать самостоятельно в блокноте или онлайн сервисе (Общие - XDTO-пакеты - добавить).
  2. Импортировать в конфигурацию XSD (Общие - XDTO-пакеты - импорт XML-схемы).
  3. Использовать из отдельного файла XSD (без импорта в БД).

Схема XML пространства имен: www.w3.org/2001/XMLSchema
Пример структуры файла D:/Example_XDTO/Test.xml:
<?xml version="1.0" encoding="UTF-8"?>
-<Рестораны>
  -<Ресторан Кухня="Азиатская" Счет="3500" Категория="Высшая" Название="Китайская грамота">
     -<Меню>
            <Блюдо Название="Суши из форели"/>
            <Блюдо Название="Лапша фирменная"/>
            <Блюдо Название="Суп из малюсков"/>
     </Меню>
     <Описание>Ресторан азиатской кухни Высшей наценочной категории</Описание>
  </Ресторан>
  -<Ресторан Кухня="Европейская" Счет="5000" Категория="Люкс" Название="Итальянский Экспресс">
     -<Меню>
            <Блюдо Название="Мясная нарезка из мраморной говядины"/>
            <Блюдо Название="Салат де-люкс Комплимент"/>
            <Блюдо Название="Пицца от шеф повара"/>
     </Меню>
     <Описание>Ресторан европейской кухни категории Люкс</Описание>
  </Ресторан>
</Рестораны>
Создание фабрики XDTO в 1С 8.3:
Процедура Создание_фабрики_XDTO() Экспорт

   
// Процедура создает фабрику XDTO (из файла XML) на основе схемы XML

    // Создание объект чтения XML (по умолчанию)
   
XML = Новый ЧтениеXML;
   
// Запуск файла XML
   
XML.ОткрытьФайл("D:\Example_XDTO\SсhemaXML.xsd");

   
// Создание построителя документа DOM (по умолчанию)
   
Построитель_DOM = Новый ПостроительDOM;
   
// Чтение файла XML (в документ DOM)
   
Док_DOM = Построитель_DOM.Прочитать(XML);
   
// Создание построитель схемы XML (по умолчанию)
   
ПостроительСхемыXML = Новый ПостроительСхемXML;
   
// Получение схемы XML (из документа DOM)
   
Схема_XML = ПостроительСхемыXML.СоздатьСхемуXML(Док_DOM);

   
// Создание набора схем XML (по умолчанию)
   
Набор_Схем_XML = Новый НаборСхемXML;
   
// Добавление схемы XML в набор схем
   
Набор_Схем_XML.Добавить(Схема_XML);
   
// Создание фабрики XDTO на основе набора схем XML
   
ФабрикаXDTO = Новый ФабрикаXDTO(Набор_Схем_XML);

КонецПроцедуры
Получение фабрики XDTO из нескольких XSD в 1С 8.3:
Процедура Получение_фабрики_XDTO_из_нескольких_XSD() Экспорт

   
// Процедура получает фабрики XDTO из нескольких XSD

   
Схемы_XSD = Новый Массив;
   
Схемы_XSD.Добавить("D:\Example_XDTO\SсhemaXML_1.xsd");
   
Схемы_XSD.Добавить("D:\Example_XDTO\SсhemaXML_2.xsd");
   
Схемы_XSD.Добавить("D:\Example_XDTO\SсhemaXML_3.xsd");

   
Пакеты_XSD = Новый Массив;
   
Пакеты_XSD.Добавить(ФабрикаXDTO.Пакеты.Получить("URI пакета 1")); //может быть произвольной
   
Пакеты_XSD.Добавить(ФабрикаXDTO.Пакеты.Получить("URI пакета 2")); //может быть произвольной
   
Пакеты_XSD.Добавить(ФабрикаXDTO.Пакеты.Получить("URI пакета 3")); //может быть произвольной

   
Фабрика_XSD = СоздатьФабрикуXDTO(Схемы_XSD, Пакеты_XSD);

КонецПроцедуры
Создание значения XDTO в 1С 8.3:
Процедура Создание_значения_XDTO() Экспорт

   
// Процедура создает новое значение XDTO (немутабельное) с помощью метода Создать()

   
ГлобФабрикаXDTO = ФабрикаXDTO;

   
// Создание значения XDTO из ссылки
   
СправочникСсылка = Справочники.Материалы.НайтиПоНаименованию("Лапша фирменная");
   
ТипЗначения_XDTO = ГлобФабрикаXDTO.Тип("urn:schemas-v8-1c-ru:config-data", "CatalogRef.БлюдоНазвание");
   
Значение_XDTO = ГлобФабрикаXDTO.Создать(ТипЗначения_XDTO, СправочникСсылка);

   
// Создание значения XDTO из лексического представления
   
ТипЗначения_XDTO = ГлобФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "dateTime");
   
Значение_XDTO = ГлобФабрикаXDTO.Создать(ТипЗначения_XDTO, "2021-05-17T11:51:34");

КонецПроцедуры
Создание значения XDTO через файл XML в 1С 8.3:
Процедура Создание_значения_XDTO_файл_XML() Экспорт

   
// Процедура создает новое значение XDTO (немутабельное) путем чтения файла XML

   
ГлобФабрикаXDTO = ФабрикаXDTO;

   
// Чтение данных значения XDTO (из файла XML)
   
XML = Новый ЧтениеXML;
   
XML.ОткрытьФайл("D:/Example_XDTO/Test.xml");// обратный слэш!
   
Значение_XDTO = ГлобФабрикаXDTO. ПрочитатьXML(XML);

   
XML = Новый ЗаписьXML;
   
XML.ОткрытьФайл("D:/Example_XDTO/Test.xml");// обратный слэш!

    // Запись данных XDTO в файл XML
   
ГлобФабрикаXDTO = ФабрикаXDTO;
   
ГлобФабрикаXDTO.ЗаписатьXML(XML, Значение_XDTO);

КонецПроцедуры
Создание объекта XDTO в 1С 8.3:
Процедура Создание_объекта_XDTO(СправочникСсылка) Экспорт

   
// Процедура создает новый объект XDTO (мутабельное) с помощью метода Создать()

   
ГлобФабрикаXDTO = ФабрикаXDTO;

   
// Создание пустого объекта XDTO
   
ТипОбъекта_XDTO = ГлобФабрикаXDTO.Тип("http://www.1cnik.by/demo-material", "Материалы");
   
Объект_ХDTO = ГлобФабрикаXDTO.Создать(ТипОбъекта_XDTO);

   
// Заполнение его свойств
   
ОбъектСправочника = СправочникСсылка.ПолучитьОбъект();
   
Объект_ХDTO.Наименование = ОбъектСправочника.Наименование;
   
Объект_ХDTO.ПолноеНаименование = ОбъектСправочника.ПолноеНаименование;
   
Объект_ХDTO.ЕдиницаИзмерения = ОбъектСправочника.ЕдиницаИзмерения;
   
Объект_ХDTO.СтранаПроисхождения = ОбъектСправочника.СтранаПроисхождения;
   
Объект_ХDTO.КодТНВЭД = ОбъектСправочника.КодТНВЭД;

КонецПроцедуры
Создание объекта XDTO через файл XML в 1С 8.3:
Процедура Создание_объекта_XDTO_файл_XML(Объект_ХDTO) Экспорт

   
// Процедура создает новый объект XDTO (мутабельное) путем чтения файла XML

   
ГлобФабрикаXDTO = ФабрикаXDTO;
   
// Чтение данных объекта XDTO (из файла XML)
   
XML = Новый ЧтениеXML;
   
XML.ОткрытьФайл("D:/Example_XDTO/Test.xml");// обратный слэш!
   
Объект_ХDTO = ГлобФабрикаXDTO.ПрочитатьXML(XML);

   
// Запись данных объекта XDTO (в файл XML)
   
XML = Новый ЗаписьXML;
   
XML.ОткрытьФайл("D:/Example_XDTO/Test.xml");// обратный слэш!
   
ГлобФабрикаXDTO.ЗаписатьXML(XML, Объект_ХDTO);

КонецПроцедуры
XML сериализация XDTO в 1С 8.3:
Процедура XML_сериализация_XDTO() Экспорт

   
// Получение ссылки на элемент справочника Материалы
   
СправочникСсылка = Справочники.Материалы.НайтиПоНаименованию("Лапша фирменная");

   
// Создание сериализатора XDTO (для глобальной фабрики XDTO)
   
Сериализатор_XDTO = Новый СериализаторXDTO(ФабрикаXDTO);

   
// Создание объекта записи XML
   
XML = Новый ЗаписьXML;
   
XML.ОткрытьФайл("D:/Example_XDTO/Test.xml");// обратный слэш!

    // Cериализация ссылки в XML
   
Сериализатор_XDTO.ЗаписатьXML(XML, СправочникСсылка, НазначениеТипаXML.Явное);

КонецПроцедуры
XML сериализация XDTO через файл XML в 1С 8.3:
Процедура XML_сериализация_XDTO_файл_XML() Экспорт

   
// Создание сериализатора XDTO (для глобальной фабрики XDTO)
   
Сериализатор_XDTO = Новый СериализаторXDTO(ФабрикаXDTO);

   
// Чтение данных объекта XDTO из файла XML
   
XML = Новый ЧтениеXML;
   
XML.ОткрытьФайл("D:/Example_XDTO/Test.xml");// обратный слэш!

    // Cериализация ссылки из XML
   
СправочникСсылка = Сериализатор_XDTO.ПрочитатьXML(XML);

КонецПроцедуры
Шаблоны (готовые модели) кода 1С 8.3 с тегом #XDTO:
    Поиск кода
    0
    комментарии
    ____________________
    Copyright by 1Cnik.by©, «Программист 1С в г.Минске», 17.05.2021
    Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
    Защищенное соединение ssl
    visa
    mastercard
    Maestro
    Яндекс деньги
    Назад к содержимому