XDTO (XML Data Transfer Objects, «XML-объекты переноса данных») — это механизм объектного моделирования данных в системе 1С:Предприятие, позволяющий описывать структуру XML-документов в виде типов данных и работать с ними как с обычными объектами встроенного языка через «точку» вместо манипулирования узлами XML-дерева. XDTO является одним из основных инструментов интеграции 1С:Предприятия с внешними системами и веб-сервисами.
История и назначение
Создание механизма. Механизм XDTO был разработан в компании 1С как решение для удобного и структурированного обмена данными в формате XML между различными системами. Вместо обработки XML как текстовых узлов (что требует сложного кода и подвержено ошибкам), XDTO позволяет работать с данными как с типизированными объектами, знакомыми программистам.
- Интеграция 1С:Предприятия с внешними системами и веб-сервисами
- Обмен структурированными данными в формате XML и JSON
- Описание параметров и возвращаемых значений веб-сервисов
- Структурирование и ускорение работы с большими объёмами данных
- Создание типизированного представления данных по XML-схеме (XSD)
Основные компоненты XDTO
Это объект конфигурации в 1С, который представляет собой XML-схему (XSD). Пакет определяет:
- Типы объектов (complexType) — структурированные типы с набором свойств
- Типы значений (simpleType) — простые типы данных (строки, числа, даты)
- Пространство имён (namespace) — уникальный идентификатор пакета в виде URL-подобной строки
XDTO-пакет можно как создавать в конфигураторе вручную, так и импортировать готовые XML-схемы (XSD-файлы).
Объект встроенного языка, отвечающий за:
- Создание объектов XDTO на основе описанных типов
- Сериализацию объектов XDTO в XML и JSON
- Десериализацию (чтение) данных из XML и JSON в объекты XDTO
- Управление типами данных, определёнными в модели XDTO
Существует глобальная ФабрикаXDTO, содержащая все XDTO-пакеты конфигурации. Разработчики могут также создавать программные фабрики из отдельных XSD-файлов.
XDTO-тип объекта (XDTOObjectType) — структурированный тип с набором свойств:
- Имеет название и пространство имён
- Может содержать другие типы объектов или типы значений в качестве свойств
- Может быть абстрактным, открытым или упорядоченным
- Поддерживает наследование от других типов объектов
XDTO-тип значения (XDTOValueType) — простой неделимый тип:
- Примеры: строки, числа, даты
- Может быть определён через ограничения (restriction) от базового типа
- Может быть определён через объединение (union) нескольких типов
- Может быть определён как список (list) значений
Архитектура работы XDTO
Представляет собой набор XML-схем, в которых определены все используемые типы данных. Модель служит основой для создания и валидации XDTO-объектов.
- Создание фабрики из XDTO-пакета или XSD-файла
- Создание объекта через метод
Создать()с указанием типа - Присваивание значений свойствам объекта
- Сериализация в XML или JSON через
ЗаписатьXML()илиЗаписатьJSON()
- Открытие XML/JSON файла через объект ЧтениеXML или ЧтениеJSON
- Десериализация через метод
ПрочитатьXML()илиПрочитатьJSON() - Получение объекта XDTO с заполненными свойствами
- Работа с данными как с обычным объектом через «точку»
Преимущества 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С:Предприятии для интеграции, обеспечивая типизированный, удобный и стандартизированный способ работы со структурированными данными.
