Аббревиатура XDTO расшифровывается как XML Data Transfer Objects. XDTO является механизмом объектного моделирования данных, описываемых с помощью схемы XML.
Основные возможности использования XDTO
- описание типов параметров и возвращаемых значений Web-сервисов;
- обмен данными между конфигурациями 1С:Предприятия 8 с существенно разными структурами данных;
- обмен данными на основе схем XML, не привязанных к той или иной конфигурации (например, обмен с информационными системами, построенными не на основе 1С:Предприятия 8);
- создание собственной системы типов и значений для обработки произвольных данных.
XDTO пакет
Механизм XDTO реализован с помощью набора объектов встроенного языка и объекта конфигурации XDTO пакет.
Возможно выполнение следующих действий:
- создание XDTO пакета с помощью импорта схемы XML;
- добавление нового XDTO пакета в дерево конфигурации и последующее его редактирование;
- экспорт существующего XDTO пакета в схему XML.
Также система 1С:Предприятие 8 поддерживает возможность экспорта набора XML схем данных конфигурации.
Редактирование XDTO пакета осуществляется в специальном окне, отображающем иерархическую структуру XDTO пакета:
XDTO- сериализация
В системе 1С:Предприятие 8 реализована сериализация данных на основе механизма XDTO, которая позволяет сериализовать в/из XML:
- все типы данных хранящиеся в базе данных
- некоторые другие типы
XDTO-сериализация предназначена для сохранения данных объекта в файл XML и создания объекта на основе данных, хранящихся в файле XML:
В этой статье попробую рассказать о механизме XDTO, рассказать постараюсь только суть — без воды.
XDTO (XML Data Transfer Objects) — это разработка фирмы 1С и ни в каком другом языке программирования эту аббревиатуру не встретишь.
Основное назначение этого механизма — обмен данными, как с другой конфигурацией 1С, так и со сторонними приложениями. Кроме этого XDTO используется для описания параметров и возвращаемых значений web-сервисов, а также для произвольной обработки данных.
Основная «полезность» механизма XDTO заключается в том, что он позволяет работать (чтение и запись) с XML-файлом как с объектом 1С — «через точку» и не думать при этом о тегах и атрибутах XML.
Реализован механизм XDTO при помощи объекта конфигурации «Пакет XDTO». Этот объект в действительности является обычной XML-схемой (XSD) т.е. описывает структуру какого-либо XML-документа.
Средствами 1С мы можем:
- превратить XSD-файл в объект «пакет XDTO»;
- добавить новый «пакет XDTO» и редактировать его так, как нам нужно;
- превратить «пакет XDTO» в XSD-файл.
Действия с XDTO пакетом
Для успешного импорта XML-схемы (XSD) в XDTO пакет, необходимо наличие в XSD-файле атрибута «targetNamespace» с указанием пространства имен, иначе импортировать схему не удастся.
Не хватает атрибута «targetNamespace»
Пространство имен обычно указывается URL-подобной строкой (хотя на самом деле это может быть любая строка) и служит для того, чтобы избежать путаницы в том случае, если в разных XDTO пакетах у нас имеются объекты с одинаковым названием.
Таким образом понятно, что названия объектов должны быть уникальны в пределах одного пространства имен (по сути в пределах одного XDTO пакета)
Пространство имен в XSD-файле
XSD-файл можно сделать самому — написать руками в блокноте или сделать XDTO пакет прямо в конфигураторе, кроме этого можно воспользоваться какой-нибудь специализированной программой (например Liquid XML Studio) или онлайн сервисом (Google в помощь) которые умеют создавать XSD-файлы из XML. При использовании программ и сервисов нужно быть осторожным, так как по моему опыту результат их работы (XSD-файл) очень часто не подходит для использования в 1С — неправильно указываются типы данных и, как следствие, записать XML-файл при помощи такого XDTO пакета не удастся. В качестве примера приведу два XDTO пакета для одного и того же XML-файла.
Сравнение XDTO пакетов
Слева тот, что создан руками, справа — программой.
Работа с XDTO в 1С неразрывно связана с объектом «ФабрикаXDTO». Именно этот объект читает и записывает данные из/в XML-файл(а), а также создает все нужные объекты с которыми можно привычно работать «через точку».
Перейдем к практике.
Допустим у нас есть файл заказ вот такого вида:
XDTO (XML Data Transfer Objects) – механизм, обеспечивающий объектное моделирование данных схемы XML. XDTO позволяет оперировать не узлами XML, а прикладными типами данных и встроенными типами платформы. Механизм XDTO реализован при помощи общего объекта конфигурации XDTO-пакет.
ВАЖНО! Схема обязательно должна содержать описание пространства имен в виде URL-подобной строки. Если пространство имен не задано, то стороннюю XML-схему импортировать не удастся.
XDTO-пакеты – это общие объекты конфигурации, которые являются частью механизма XDTO и позволяют описать в конфигурации систему типов и значений для взаимодействия с различными внешними источниками данных, например с Web-сервисами.
XDTO-пакет является своеобразным переводчиком между разными информационными системами, с помощью которого можно описать, например, структуру (схему) будущего xml-файла.
В конфигурацию может быть добавлено произвольное количество XDTO-пакетов.
Типы данных в 1С чаще всего соответствуют типам данных в других языках, но бывают и исключения, которые проще всего описывать в этом объекте конфигурации.
Механизм XDTO
Механизм XDTO (XML Data Transfer Objects) – один из механизмов интеграции 1C с другими системами, который является механизмом объектного моделирования данных, описываемых с помощью схемы XML.
Механизм XDTO позволяет на уровне языка 1С оперировать не узлами XML, а прикладными понятиями "Накладная", "Сотрудник", "Счет" и т.д., а также встроенными типами 1С (“ТаблицаЗначений”, “СправочникСсылка” и т.п.).
Основные возможности XDTO:
- описание типов параметров и возвращаемых значений Web-сервисов;
- обмен данными между конфигурациями 1С:Предприятия 8 с существенно разными структурами данных;
- обмен данными на основе схем XML, не привязанных к той или иной конфигурации (например, обмен с информационными системами, построенными не на основе 1С:Предприятия 8);
- создание собственной системы типов и значений для обработки произвольных данных.
ФабрикаXDTO
Работу механизма XDTO обеспечивает объект встроенного языка ФабрикаXDTO: именно она отвечает за сериализацию XDTO-объектов в XML и обратно. Причем, за преобразование объектов XDTO в прикладные объекты и встроенные типы отвечает механизм XDTO-сериализации. То есть, процедура приведения объектов 1С к объектам XML схемы двухэтапная.
Особенности ФабрикиXDTO:
- При программном создании фабрики XDTO, типы в ней определенные, не могут расширяться, определяются в полном объеме при создании.
- Типы, определенные в глобальной фабрике XDTO, могут расширяться за счет:
- создания пакетов XDTO;
- изменения состава объектов конфигурации.
Свойства XDTO-пакета 1С:
Система 1С позволяет выполнить следующие действия:
- создать XDTO-пакет с помощью импорта схемы XML;
- добавить XDTO-пакет в дерево конфигурации и редактировать его в дальнейшем;
- экспортировать существующий XDTO-пакет в схему XML.
Редактирование XDTO-пакета 1С
Редактирование XDTO-пакета 1С осуществляется в специальном окне, отображающем его иерархическую структуру:
Особенности использования XDTO-пакетов в 1С:
- В рамках создаваемого пакета XDTO (без использования директивы импорта) можно использовать:
- типы, определенные только в данном пакете и
- типы, стандартные для XML.
- При определении типа свойства объекта XDTO информация о типе включает:
- имя типа и
- имя пространства имен (необходимо во избежание их пересечения).
- Понятию " Пакет XDTO " больше всего соответствует такое понятие XML как схема XML документа .
- Понятию " Фабрика XDTO " больше всего соответствует такое понятие XML как набор схем XML .
- В рамках модели XDTO понятие "Фасет" относится к типу значения XDTO.
- При программном создании фабрики XDTO, типы, в ней определенные, не могут расширяться, определяются в полном объеме при создании.
- Типы, определенные в глобальной фабрике XDTO, могут расширяться за счет создания пакетов XDTO, изменения состава объектов конфигурации.
Сериализация в 1С с помощью XDTO-пакета
XDTO-сериализация предназначена для сохранения данных объекта в файл XML и создания объекта на основе данных, хранящихся в файле XML. Это процесс приведения данных 1С:Предприятия в строку формата .xml (обратный процесс – десериализация).
Сериализованы могут быть не все объекты, а те, которые имеют соответствующую запись в Синтакс-помощнике: "Данный объект может быть сериализован в/из XML".
В системе 1С:Предприятие 8 реализована сериализация данных на основе механизма XDTO, которая позволяет сериализовать в/из XML:
- все типы данных, хранящиеся в базе данных;
- некоторые другие типы данных.
Простые типы с точки зрения XML-сериализации – это типы, значение которых может быть представлено в XML в виде строки:
- Число;
- Строка;
- Дата;
- Булево;
- ДвоичныеДанные;
- NULL;
- УникальныйИдентификатор;
- ХранилищеЗначения;
- ссылки на объекты базы данных;
- ссылки на перечисления метаданных.
Таким образом, с точки зрения XML-сериализации, например, значение типа "ДокументСсылка.ИмяДокумента" относится к простым типам.