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-сериализации, например, значение типа "ДокументСсылка.ИмяДокумента" относится к простым типам.
- Тип;
- ОписаниеТипов;
- КонстантаМенеджерЗначения;
- объекты базы данных;
- наборы записей регистров, последовательностей, перерасчетов;
- УдалениеОбъекта.
При записи значения с использованием средств XML сериализации в XML документ применяются:
- методы, относящиеся к средствам XML-сериализации и
- объект "ЗаписьXML".
Пример отсюда:
Например, вот такой, привычный в 1С, код:
123456789 структурныйТип = ФабрикаXDTO.Тип(«http://www.1c.ru/demos/products1», «Номенклатура1»);номенклатура = ФабрикаXDTO.Создать(структурныйТип);номенклатура.Наименование = «Ботинки женские»;номенклатура.ЗакупочнаяЦена = 1000;единицаТип = ФабрикаXDTO.Тип(«http://www.1c.ru/demos/products1», «ЕдиницаИзмерения»);единица = ФабрикаXDTO.Создать(единицаТип);единица.Наименование = «шт.»;единица.Коэффициент = 1.5;номенклатура.ЕдИзм = единица;
С помощью описанного пакета XDTO сериализуется в xml-файл такого типа:
12345678910 <Номенклатура1 xmlns=»http://www.1c.ru/demos/products1″xmlns:xs=»http://www.w3.org/2001/XMLSchema»xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»><Наименование>Ботинки женские<Наименование><ЗакупочнаяЦена>1000<ЗакупочнаяЦена><ЕдИзм><Наименование>шт.<Наименование><Коэффициент>1.5<Коэффициент><ЕдИзм><Номенклатура1>
XML
Работа с XML-документами доступна непосредственно из встроенного языка системы 1С:Предприятие 8.
Система 1С предоставляет возможность:
- последовательно читать и записывать xml-документы:
- преобразовывать из строки, полученной из текста элемента или значения атрибута XML, в значение в соответствии с указанным типом;
- получать строковое представление значения для помещения в текст элемента или значение атрибута XML;
- получить тип данных XML, соответствующий переданному в качестве параметра типу;
- производить проверку возможности чтения из XML значения указанного типа;
- производить проверку соответствия схеме XML при чтении XML
- производить запись значения в формате XML;
- возвращать тип, соответствующий типу данных XML.
- использовать модель объектного доступа к данным xml-документов (ДокументDOM), соответствующую следующим стандартам:
- DOM Level 2;
- XPath (DOM Level 3);
- DOM Load and Save (DOM Level 3).
- использовать объектную модель схемы XML (СхемаXML);
- использовать канонический XML стандарт 1.1 (Canonical XML 1.1).
Используя внешнее соединение и механизмы работы с XML можно организовывать интеграцию с прикладными системами по принятым в этих системах форматам. Для этого применяются механизмы XSL-преобразования.
Например, для такой интеграции можно использовать BizTalk сервер компании Microsoft:
Fast Infoset
Платформа предоставляет средства для работы с XML-документами в бинарном формате Fast Infoset. Технология Fast Infoset использует альтернативный синтаксис отображения XML-данных. Это обеспечивает меньший объем файлов и более высокую скорость обработки, чем скорость обработки данных, записанных в обычном XML-формате. Файл, записанный в формате Fast Infoset, имеет расширение .fi или .finf.
Читай также:
- http://master1c8.ru/
- https://infostart.ru/public/167459/
- http://expert.chistov.pro/public/98019/
- Использование объектов XDTO в web-сервисах