XDTO

XDTO (XML Data Transfer Objects, «XML-объекты переноса данных») — это механизм объектного моделирования данных в системе 1С:Предприятие, позволяющий описывать структуру XML-документов в виде типов данных и работать с ними как с обычными объектами встроенного языка через «точку» вместо манипулирования узлами XML-дерева. XDTO является одним из основных инструментов интеграции 1С:Предприятия с внешними системами и веб-сервисами.

История и назначение

Создание механизма. Механизм XDTO был разработан в компании 1С как решение для удобного и структурированного обмена данными в формате XML между различными системами. Вместо обработки XML как текстовых узлов (что требует сложного кода и подвержено ошибкам), XDTO позволяет работать с данными как с типизированными объектами, знакомыми программистам.

Назначение.:

  • Интеграция 1С:Предприятия с внешними системами и веб-сервисами
  • Обмен структурированными данными в формате XML и JSON
  • Описание параметров и возвращаемых значений веб-сервисов
  • Структурирование и ускорение работы с большими объёмами данных
  • Создание типизированного представления данных по XML-схеме (XSD)

Основные компоненты XDTO

XDTO-пакет.:

Это объект конфигурации в 1С, который представляет собой XML-схему (XSD). Пакет определяет:

  • Типы объектов (complexType) — структурированные типы с набором свойств
  • Типы значений (simpleType) — простые типы данных (строки, числа, даты)
  • Пространство имён (namespace) — уникальный идентификатор пакета в виде URL-подобной строки

XDTO-пакет можно как создавать в конфигураторе вручную, так и импортировать готовые XML-схемы (XSD-файлы).

Фабрика XDTO.:

Объект встроенного языка, отвечающий за:

  • Создание объектов XDTO на основе описанных типов
  • Сериализацию объектов XDTO в XML и JSON
  • Десериализацию (чтение) данных из XML и JSON в объекты XDTO
  • Управление типами данных, определёнными в модели XDTO

Существует глобальная ФабрикаXDTO, содержащая все XDTO-пакеты конфигурации. Разработчики могут также создавать программные фабрики из отдельных XSD-файлов.

Типы данных XDTO.:

XDTO-тип объекта (XDTOObjectType) — структурированный тип с набором свойств:

  • Имеет название и пространство имён
  • Может содержать другие типы объектов или типы значений в качестве свойств
  • Может быть абстрактным, открытым или упорядоченным
  • Поддерживает наследование от других типов объектов

XDTO-тип значения (XDTOValueType) — простой неделимый тип:

  • Примеры: строки, числа, даты
  • Может быть определён через ограничения (restriction) от базового типа
  • Может быть определён через объединение (union) нескольких типов
  • Может быть определён как список (list) значений

Архитектура работы XDTO

Модель данных XDTO.:

Представляет собой набор XML-схем, в которых определены все используемые типы данных. Модель служит основой для создания и валидации XDTO-объектов.

Процесс создания объекта.:

  1. Создание фабрики из XDTO-пакета или XSD-файла
  2. Создание объекта через метод Создать() с указанием типа
  3. Присваивание значений свойствам объекта
  4. Сериализация в XML или JSON через ЗаписатьXML() или ЗаписатьJSON()

Процесс чтения данных.:

  1. Открытие XML/JSON файла через объект ЧтениеXML или ЧтениеJSON
  2. Десериализация через метод ПрочитатьXML() или ПрочитатьJSON()
  3. Получение объекта XDTO с заполненными свойствами
  4. Работа с данными как с обычным объектом через «точку»

Преимущества XDTO

Типизированность данных.:

Данные строго типизированы, что предотвращает ошибки и упрощает отладку. IDE (конфигуратор, EDT) предоставляет автодополнение и подсказки.

Удобство работы.:

Вместо сложной работы с XML-узлами, разработчики работают с объектами через «точку»:

text// Без XDTO (сложно):
XMLNode = ДомXML.ОписаниеЗначения("Элемент");

// С XDTO (удобно):
Объект.Свойство = "Значение";

Структурированность.:

XML-схема (XDTO-пакет) служит документацией структуры данных. Все поля и типы заранее известны.

Интеграция с веб-сервисами.:

XDTO идеально подходит для работы с веб-сервисами, где часто используются XML-схемы WSDL.

Универсальность.:

Поддержка XML и JSON упрощает обмен данными с различными системами. XDTO-объекты легко сериализуются и десериализуются в оба формата.

Фасеты в XDTO

Понятие фасета.:

Фасеты — это ограничения, применяемые к типам значений, определяющие допустимые значения. Примеры фасетов:

  • minLength, maxLength — минимальная и максимальная длина строки
  • minInclusive, maxInclusive — минимальное и максимальное значение числа
  • pattern — регулярное выражение для проверки строки
  • enumeration — список допустимых значений
  • fractionDigits — количество цифр после запятой

Практический пример

text// Создание фабрики из файла
ФайлыXSD = Новый Массив();
ФайлыXSD.Добавить("D:/Schema.xsd");
МояФабрика = СоздатьФабрикуXDTO(ФайлыXSD);

// Создание объекта
Сотрудник = МояФабрика.Создать(
    МояФабрика.Тип("https://example.com", "Сотрудник")
);

// Заполнение свойств
Сотрудник.ТабельныйНомер = "123";
Сотрудник.ФИО = "Иванов И.И.";

// Запись в XML
XMLЗапись = Новый ЗаписьXML();
XMLЗапись.ОткрытьФайл("D:/result.xml");
МояФабрика.ЗаписатьXML(XMLЗапись, Сотрудник);
XMLЗапись.Закрыть();

Применение XDTO

Интеграция с внешними системами.:

Обмен данными с ERP-системами, CRM, банковскими системами и другими внешними приложениями.

Веб-сервисы.:

Работа с SOAP и RESTful веб-сервисами, которые используют XML для передачи данных.

Форматы обмена.:

Расширение стандартных форматов обмена 1С (например, формата обмена между базами).

Мобильные приложения и облачные сервисы.:

Обмен структурированными данными с мобильными приложениями, облачными платформами.

Механизм XDTO остаётся одним из самых мощных и часто используемых инструментов в 1С:Предприятии для интеграции, обеспечивая типизированный, удобный и стандартизированный способ работы со структурированными данными.

Евгения Спелова
Оцените автора
( Пока оценок нет )
Системный аналитик