Top.Mail.Ru
Заказать консультацию
специалиста 1С
Отправить заявку

Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и соглашаетесь с политикой конфиденциальности.

Механизм XDTO, создание и свойства XDTO-пакетов

Власова Ирина Посмотреть все статьи >> Специалист по внедрению 1С франчайзинговой сети "ИнфоСофт".
16.11.2023
2426
Время прочтения - 7 мин.
Заказать консультацию

Механизм XDTO

В одной из статей мы рассмотрели, что такое HTTP-сервисы, как их создавать и как с ними работать. Теперь же начнем изучение другой технологии взаимодействия приложений в Интернете, а именно WEB-сервисов.

Конкретно данной статьей мы начнем рассмотрение уникального механизма XDTO, разработанного фирмой 1С для упрощения работы с XML и взаимодействия между разными системами данных. Постараемся на простых примерах ознакомиться с основными моментами работы с ним, научиться использовать для решения различных задач, в частности для разработки WEB-сервисов.

Документы XML, как правило, содержат структурированную информацию, описываемую с помощью тегов и атрибутов. Механизм XDTO позволяет удобно обращаться к ним в привычном для программистов 1С виде «через точку», что значительно упрощает работу с ними.

Механизм XDTO позволяет решать следующие задачи:

  1. Обмен данными между конфигурациями системы «1С:Предприятие» с разными схемами данных.

  2. Обмен данными на основе схем XML, не привязанных к той или иной конфигурации.

  3. Организацию работы с Web-сервисами.

  4. Создание собственной системы типов и значений для обработки произвольных данных.


XDTO-пакет

Частью данного механизма является XDTO-пакет – объект, предназначенный для описания структуры данных, их типов и свойств.

Пакет включает в себя описания типов бизнес-объектов, которыми требуется оперировать. Эти типы бывают простыми и составными.

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

Так, например, в пакете http://v8.1c.ru/8.1/data/enterprise/current-config содержатся все метаданные текущей конфигурации. Они попадают в пакет автоматически с помощью встроенных механизмов платформы. Как мы видим, имя типа данных XML объектов соответствует англоязычному имени типа «1С:Предприятия».

1.png

При создании для XDTO-пакета указывается URI пространства имен – строка, позволяющая идентифицировать пакет в конфигурации. Указываемая строка может быть любой, она не является веб-адресом, но ее принято указывать именно в таком формате, что может легко запутать. Единственное требование к строке – внутри конфигурации она должна быть уникальной.

2.png

Теперь рассмотрим описание структуры XDTO-пакета. Она представляет собой дерево, на верхнем уровне которого могут располагаться перечисленные элементы:

3.png

1. Тип значения – используется для описания типов простых неделимых значений, в которых не могут быть выделены отдельные составляющие. Например, разнообразные строки, числа, даты и т. п. Основные типы формата XML описаны в стандартном пакете http://www.w3.org/2001/XMLSchema.

Типы значений необходимо создавать в случаях, когда использования базовых типов недостаточно или требуется наложение на них различных ограничений.

4.png

Рассмотрим основные свойства типов значений.

Базовый тип – базовый тип для данного типа значения XDTO. Базовые типы могут наследоваться от других типов значений XDTO, а самым верхним типом в иерархии наследования должен быть простой тип anySimpleType, например, из http://www.w3.org/2001/XMLSchema.

Вариант – определение простого типа. Существует несколько вариантов.

Атомарный – когда тип значения определяется ограничением. При его указании требуется заполнение базового типа, а также возможно указание фасетов – ограничений на множество значений по отношению к базовому типу, указываемых в оставшихся полях (длина, максимальная длина и т.д.).

Список – представляет собой список значений типа, указанного в поле «Тип элемента».

Объединение – объединение типов значений XDTO, указанных в поле «Типы объединения».

5.png

В дереве пакетов у типов значений можно указать ограничения двух видов:

Перечисление – содержит список возможных значений указанного базового типа.

Образец – регулярное выражение, описывающее пространство значений данного типа.

Проверка фасетов (ограничений) при создании значений типов выполняется автоматически.


2. Тип объекта – используется для описания составных типов данных, таких как структуры и массивы. В них могут содержаться как простые типы, так и типы объектов (определяются в свойствах).

Свойства типов объектов:

6.png

Открытый – признак того, является ли тип объекта XDTO открытым. Данное свойство показывает, может ли экземпляр объекта XDTO содержать дополнительные свойства, не определенные в его типе, то есть реализует модель «open content».

Абстрактный – признак того, является ли тип объекта XDTO абстрактным.

Смешанный – свойство показывает, определен ли в схеме XML для данного типа «mixed content». Если значение свойства «Смешанный» равно «Истина», то значение «Последовательный» обязательно равно «Истина».

Упорядоченный - признак того, является ли порядок следования элементов, представляющих значения свойств, строго соответствующим порядку следования в типе объекта XDTO. Если указывается «Ложь», то на входе порядок следования элементов не контролируется, а на выходе соответствует порядку следования свойств пакета XDTO.

Последовательный — это свойство показывает, содержит ли экземпляр соответствующего объекта XDTO последовательность XDTO. Данный признак равен значению «Истина» в тех случаях, когда порядок следования вложенных элементов XML не может однозначно определяться порядком следования свойств в типе. Последовательность XDTO позволяет задать в явном виде порядок следования элементов, как они будут представлены в документе XML. Для объектов типов, у которых свойство последовательный установлено в значение «Ложь», порядок следования вложенных элементов соответствует порядку следования свойств.

Подпишитесь на дайджест!
Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.

Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и соглашаетесь с политикой конфиденциальности.

3. Свойство – какое-либо свойство, располагающееся в корне пакета, либо в типах объектов.

Основные свойства:

7.png

Имя – имя свойства в 1С. Оно должно быть уникальным в пределах описания одного типа объекта XDTO.

Тип – тип свойства, может быть как типом значения XDTO, так и типом объекта XDTO.

Форма – форма представления свойства в XML. Это может быть «Атрибут», «Элемент» или «Текст». У одного типа только одно свойство может иметь форму представления «Текст», при этом все остальные свойства должны иметь форму представления «Атрибут».

Если свойство является типом объекта XDTO, то оно обязательно должно иметь форму элемента. На примере свойство «Наименование» имеет тип атрибут, а «Единица измерения» - элемент. При разработке своей структуры можно выбирать любую из форм размещения «Атрибут» или «Элемент», за исключением указанных выше требований.

8.png

Минимальное количество – минимальное количество значений свойства. Минимальное количество значений свойства может принимать значения больше или равно 0.

Максимальное количество – определяет количество значений свойства. Если количество заранее неизвестно, указывается -1, что означает неограниченное количество и может использоваться, например, при выгрузке табличных частей документов. Количество больше одного может быть только у формы представления «Элемент».

Свойство с одним значением при создании и работе с ним будет иметь тип «ОбъектXDTO», а если их несколько (-1), то «СписокXDTO».

Возможно пустое – показывает, может ли свойство принимать неопределенное значение. Может принимать значение «Истина» только у формы представления «Элемент», а также если свойство представляет собой список («Максимальное количество» > 1). В таком случае элемент этого списка сможет принимать неопределенное значение.

Фиксированное – указывает, является ли значение свойства фиксированным. Если указывается «Истина», то значение можно получить через свойство «По умолчанию».

По умолчанию – значение свойства по умолчанию. Тип значения по умолчанию может быть только типом значения XDTO.

Локальное имя – представление, которое попадает в файл XML.


4. Директива импорта – перечень директив импорта. Они необходимы в случае, если в пакете XDTO будут использоваться типы из других пакетов. Без их указания можно использовать только типы текущего пакета и стандартные типы XML (из пространства имен).

Например, нам нужно использовать тип объекта ЕдиницаИзмерения, определенный в другом пакете.

9.png

10.png

Если мы не указываем http://www.imported-package.org как директиву импорта, при проверке пакета XDTO и обновлении конфигурации получаем ошибку:

11.png


Схемы XSD

XSD — это язык описания структуры XML документа, XML Schema Definition Language. Его также называют XML Schema. На нем описывается структура, модель содержания и типы данных.

Созданные пакеты XDTO можно экспортировать в XML-схемы в формате xsd, и наоборот – из xsd-файла можно импортировать пакет XDTO.

Схемы XSD предназначены для решения следующих задач:

  1. Перечисление элементов в документе XML и проверка наличия в документе только объявленных элементов.

  2. Объявление и определение атрибутов, модифицирующих элементы документа.

  3. Определение иерархических отношений между элементами – какой является родительским, а какой – дочерним.

  4. Задание типов данных.

Пример XML-схемы при экспорте из объекта конфигурации созданного XDTO-пакета:

12.png

Мы рассмотрели возможности создания пакетов XDTO, их структуру и свойства элементов. В следующей статье начнем работу с пакетами на практике.


Заказать консультацию специалиста 1С
Оставьте заявку и наши эксперты проконсультируют вас по данной статье.
Отправить заявку

Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и соглашаетесь с политикой конфиденциальности.

Рассказать друзьям
Для разработчиков 1С
Вам может быть интересно: