Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Разработка Web-сервиса
Дальше: Работа с Web-сервисами сторонних поставщиков

Использование XDTO для описания типов параметров и возвращаемых значений Web-сервисов

Механизм XDTO позволяет определять объекты переноса данных, которые могут образовывать строгую иерархию и сериализоваться в/из XML. Эти свойства позволили использовать объекты XDTO в качестве параметров и возвращаемых значений операций Web-сервисов.

Основным понятием, на котором строится механизм XDTO, является фабрика XDTO. Фабрика XDTO содержит описание всех типов, с которыми оперирует система. В частности, при создании новой информационной базы «1С:Предприятия» автоматически создается глобальная фабрика XDTO, которая описывает все типы, используемые в конфигурации. Эта фабрика доступна через свойство глобального контекста ФабрикаXDTO.

Все типы данных XDTO подразделяются на типы-значения и типы-объекты. Типы-значения позволяют определять простые типы, например: строки, числа, даты, булевы значения и т. д. Типы-объекты позволяют определять сложные типы, такие как структуры и массивы.

Инфраструктура XDTO определяет набор предопределенных типов значений XDTO. Имена типов (string, int, date и т. п.) совпадают с именами типов XML Schema и принадлежат URI пространства имен – http://www.w3.org/2001/XMLSchema. Предопределенные типы являются автоматически зарегистрированными в любой фабрике XDTO.

Перед тем как использовать в Web-сервисе собственную структуру данных, необходимо создать пакет XDTO, описывающий тип-объект структуры. Для этого используются средства визуального конструирования, позволяющие добавлять пакеты XDTO в ветку дерева объектов конфигурации Общие > XDTO-пакеты.

Пакет XDTO содержит описание некоторого множества типов, принадлежащих одному пространству имен – пространству имен пакета.

Структуры моделируются типами-объектами. Тип-объект может содержать свойства, которые соответствуют элементам структуры. Каждое свойство характеризуется уникальным именем и типом. Тип свойства может быть как типом-значением, так и типом-объектом.

Новый объект XDTO может быть создан с помощью метода Создать() фабрики XDTO на основе типа объекта XDTO. После этого следует присвоить соответствующие значения свойствам объекта XDTO. Ниже приведен пример создания объекта XDTO с именем Номенклатура и заполнения его свойств: Наименование, ПолноеНаименование, ЗакупочнаяЦена и ШтрихКод (листинг 1.133).

Листинг 1.133. Пример создания объекта структурного типа

// Создать "пустой" объект XDTO.

СтруктурныйТип = ФабрикаXDTO.Тип("http://www.1c.ru/demos/products", "Номенклатура");

Номенклатура = ФабрикаXDTO.Создать(СтруктурныйТип);

 

// Заполнить значения свойств объекта XDTO.

ОбъектСправочника = СсылкаНаЭлементСправочника.ПолучитьОбъект();

 

Номенклатура.Наименование = ОбъектСправочника.Наименование;

Номенклатура.ПолноеНаименование = ОбъектСправочника.ПолноеНаименование;

Номенклатура.ЗакупочнаяЦена = ОбъектСправочника.ЗакупочнаяЦена;

Номенклатура.ШтрихКод = ОбъектСправочника.ШтрихКод;

Массивы моделируются свойствами типов-объектов. Тип массива нельзя создать напрямую, но для определенного свойства типа-объекта можно указать минимальное и максимальное количество элементов массива. Если оба значения равны 1, то это единичное свойство; если максимальное количество больше 1, то множественное свойство; если же максимальное количество равно -1, то количество элементов массива не ограничено.

Например, для создания массива элементов номенклатуры, определенного в свойстве Элементы структуры НоменклатураГруппа, нужно выполнить следующий фрагмент кода (листинг 1.134).

Листинг 1.134. Пример создания массива объектов структурного типа

СтруктурныйТип = ФабрикаXDTO.Тип("http://www.1c.ru/demos/products", "НоменклатураГруппа");

НоменклатураГруппа = ФабрикаXDTO.Создать(СтруктурныйТип);

НоменклатураГруппа.Элементы.Добавить(Номенклатура);

Назад: Разработка Web-сервиса
Дальше: Работа с Web-сервисами сторонних поставщиков