Разработка и Конфигурация · 12 мин
XDTO в 1С: что это и как использовать механизм
XDTO в 1С — механизм сериализации данных в XML. Разбираем, что это, где применяется, как работать с пакетами XDTO, фабрикой и типовыми ошибками.
Под запросом «xtdo в 1с» чаще всего скрывается опечатка: в платформе 1С:Предприятие существует механизм XDTO (XML Data Transfer Objects) — «объекты передачи данных в формате XML». Именно его имеют в виду, когда говорят о выгрузке и загрузке данных через XML, обмене с веб-сервисами и интеграции 1С с внешними системами.
XDTO — это встроенный в платформу способ представить данные в виде XML-структуры, передать их между программами и затем восстановить обратно в объекты 1С. Механизм работает в обе стороны: объекты конфигурации сериализуются в XML, а полученный XML преобразуется в значения, с которыми можно работать в коде на встроенном языке.
Разобраться в XDTO стоит любому разработчику или администратору 1С, потому что на нём построены планы обмена, универсальный формат EnterpriseData, обмен с сайтами, банковские выписки, ЭДО и большинство современных интеграций. Ниже — практическое объяснение устройства механизма, типовых сценариев и ошибок.
Что такое XDTO и зачем он нужен в 1С
XDTO расшифровывается как XML Data Transfer Objects. Идея механизма проста: данные, которые хранятся в базе 1С (документы, справочники, записи регистров), нельзя напрямую передать в другую программу — внешняя система «не понимает» внутренние типы 1С. Поэтому данные сначала преобразуются в универсальный текстовый формат XML, а на стороне получателя восстанавливаются обратно.
Механизм решает три задачи. Первая — сериализация: превращение объекта 1С в XML-представление. Вторая — десериализация: обратное восстановление данных из XML. Третья — валидация: проверка, что XML-документ соответствует заданной схеме (типам, обязательным полям, форматам значений).
Важно понимать, что XDTO — это не отдельная программа и не подключаемая обработка, а часть платформы. Он доступен в любой конфигурации на управляемых и обычных формах, работает на сервере и на клиенте, не требует лицензирования отдельных компонент.
Из чего состоит механизм: пакеты, фабрика, объекты
Работа с XDTO строится вокруг трёх ключевых понятий. Пакет XDTO — это описание модели данных: какие типы существуют, какие у них свойства, какие значения допустимы. Фактически это XML-схема (XSD), загруженная в конфигурацию. Пакеты можно увидеть в дереве конфигуратора в ветке «Общие» → «XDTO-пакеты».
Фабрика XDTO — объект платформы, который «знает» все пакеты и умеет создавать объекты и значения XDTO нужных типов, а также читать и записывать XML. В коде доступна глобальная фабрика ФабрикаXDTO, включающая пакеты конфигурации и системные пакеты платформы.
Объект XDTO — экземпляр данных, созданный фабрикой по типу из пакета. У объекта есть свойства, соответствующие элементам XML. Значение XDTO — простое значение (строка, число, дата), соответствующее простому типу схемы.
Ищите в конфигураторе: Общие → XDTO-пакеты
Глобальный объект ФабрикаXDTO доступен в коде без объявления
Создаётся через ФабрикаXDTO.Создать() с указанием типа
Указывается в свойствах пакета и в корневом элементе XML
Где XDTO применяется на практике
Даже если вы никогда не писали код с фабрикой XDTO, вы почти наверняка пользуетесь механизмом косвенно. Типовые сценарии, где он задействован:
- Планы обмена между базами 1С (например, между УТ и Бухгалтерией) — данные при выгрузке сериализуются через XDTO.
- Универсальный формат EnterpriseData — официальный формат обмена фирмы «1С», полностью построенный на XDTO-пакетах.
- Веб-сервисы: при публикации web-сервиса в 1С платформа автоматически формирует WSDL-описание на основе XDTO-пакетов, а входящие и исходящие сообщения обрабатываются фабрикой.
- Обмен с сайтами (CommerceML), банковские выписки, электронный документооборот — форматы этих обменов описаны схемами и обрабатываются через XDTO.
- Выгрузка отчётности в контролирующие органы: XML-файлы деклараций формируются по утверждённым XSD-схемам.
Собственные разработки тоже часто опираются на XDTO: если нужно передать данные в стороннюю систему, которая принимает XML по заранее согласованной схеме, самый надёжный путь — импортировать схему в конфигурацию как пакет XDTO и заполнять объекты фабрикой.
Как работать с XDTO в коде
Базовый цикл работы выглядит так: получить тип из пакета, создать объект, заполнить свойства, проверить объект и записать его в XML. Ниже — упрощённый пример формирования XML-файла.
// Создаём объект XDTO по типу из пакета
ТипЗаказ = ФабрикаXDTO.Тип("http://example.com/orders", "Заказ");
Заказ = ФабрикаXDTO.Создать(ТипЗаказ);
Заказ.Номер = "А-00125";
Заказ.Дата = ТекущаяДатаСеанса();
// Проверка соответствия схеме
Заказ.Проверить();
// Запись в XML-файл
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\order.xml");
ФабрикаXDTO.ЗаписатьXML(Запись, Заказ);
Запись.Закрыть();Обратная операция — чтение XML и превращение его в объект XDTO — выполняется через ЧтениеXML и метод ФабрикаXDTO.ПрочитатьXML(). После чтения к свойствам объекта можно обращаться как к обычным полям, а затем переносить значения в документы или справочники конфигурации.
Для сериализации собственных объектов конфигурации (например, ссылки на документ) без ручного описания пакета используются методы СериализаторXDTO.ЗаписатьXML() и СериализаторXDTO.ПрочитатьXML(). Сериализатор знает встроенные типы платформы и умеет сохранять ссылки с учётом уникальных идентификаторов — именно так работают планы обмена.
Как добавить и настроить пакет XDTO в конфигурации
Если внешняя система предоставила XSD-схему, её можно импортировать в конфигурацию. Порядок действий стандартный:
- 1Откройте конфигуратор и в дереве конфигурации перейдите в Общие → XDTO-пакеты
- 2Создайте новый пакет и укажите URI пространства имён из схемы
- 3Импортируйте XSD-файл через контекстное меню пакета (Импорт XML-схемы)
- 4Проверьте, что типы и свойства появились в структуре пакета
- 5Обновите конфигурацию базы данных и протестируйте создание объекта в коде
После импорта типы пакета становятся доступны фабрике. Если схема содержит импортируемые подсхемы (директивы include/import), их нужно подключить все — иначе фабрика не разрешит ссылки на неизвестные типы, и чтение XML завершится ошибкой.
Типичные ошибки и ограничения механизма
Большинство проблем с XDTO связаны не с платформой, а с несоответствием XML и схемы. Характерные симптомы: ошибка «Ошибка проверки данных XDTO», несоответствие типа значения, неизвестное пространство имён при чтении файла.
Ещё одно ограничение — производительность. XDTO удобен и безопасен, но при массовой выгрузке миллионов объектов работает медленнее, чем потоковая запись XML вручную. Для больших объёмов стоит замерять время обмена и при необходимости комбинировать подходы: XDTO для сложных структур, потоковая запись — для простых повторяющихся данных.
При отладке обмена удобно сохранять проблемный XML-файл и читать его фабрикой в консоли кода на тестовой базе: текст ошибки укажет конкретный тип и свойство, из-за которых валидация не прошла. Это быстрее, чем искать причину анализом всего кода обмена.
Чем XDTO отличается от альтернатив
XDTO — не единственный способ передачи данных из 1С. Выбор зависит от задачи, формата внешней системы и требований к строгости проверки.
Сравнение вариантов
Подходит для обмена по формальной XSD-схеме с валидацией; избыточен для простых произвольных XML
Гибко и быстро для произвольных XML без схемы; нет автоматической проверки структуры, всё контролирует разработчик
Стандарт для REST API и веб-интеграций; не подходит, если внешняя система требует XML по XSD
Удобен для переноса объектов конфигурации между базами 1С; бесполезен для систем, не знающих типы платформы
Правило выбора простое: если есть официальная XSD-схема (государственные форматы, EnterpriseData, CommerceML, схема контрагента) — используйте XDTO. Если формат свободный и контролируется вами, потоковая запись XML или JSON будут проще и быстрее.
Как выбрать действие
Как проверить, что обмен через XDTO работает корректно
После настройки обмена результат нужно проверить до запуска в рабочем режиме. Контрольные точки:
Как проверить результат
Ошибок валидации нет
Сообщение о нарушении схемы с указанием свойства
Открывается в браузере, корневой элемент содержит правильное пространство имён
Пустой файл, обрезанная структура, неверная кодировка
ПрочитатьXML() возвращает объект без исключений
Ошибка типизации или неизвестное пространство имён
Документы и справочники созданы, ссылки сопоставлены
Дубли элементов, битые ссылки, незаполненные реквизиты
Отдельно проверьте кодировку файла (обычно UTF-8) и поведение при пустых значениях: схема может запрещать пустые элементы, и тогда свойство нужно либо заполнять, либо не выводить вовсе.
Что важно запомнить
«Xtdo» — опечатка от XDTO, встроенного механизма 1С для обмена данными через XML. Он состоит из пакетов (схем), фабрики и объектов, лежит в основе планов обмена, веб-сервисов и типовых форматов. Работайте с ним, когда есть формальная XSD-схема, изменения тестируйте на копии базы, а результат проверяйте валидацией и обратным чтением файла.
Частые вопросы
Я нашёл в поиске «xtdo» — это отдельный модуль 1С?
Нет, модуля с таким названием в платформе нет. Это распространённая опечатка от XDTO — механизма XML-сериализации. Файлов, обработок или подсистем с именем «xtdo» в типовых конфигурациях не существует.
Где посмотреть список XDTO-пакетов в моей базе?
Откройте конфигуратор, в дереве конфигурации разверните ветку «Общие» → «XDTO-пакеты». Там перечислены все пакеты конфигурации с их пространствами имён и структурой типов. Системные пакеты платформы в этом списке не отображаются, но доступны фабрике.
Можно ли использовать XDTO без добавления пакета в конфигурацию?
Да. Фабрику XDTO можно создать программно из XSD-файла внешней схемы с помощью конструктора объекта ФабрикаXDTO, не изменяя конфигурацию. Это удобно для разовых загрузок и внешних обработок.
Почему при чтении XML возникает ошибка «неизвестное пространство имён»?
Фабрика не нашла пакет с URI, указанным в корневом элементе файла. Проверьте, что нужный пакет есть в конфигурации и его URI в точности совпадает с URI в XML, включая регистр символов и завершающие слэши.
Чем XDTO отличается от планов обмена?
План обмена — это механизм конфигурации, определяющий, какие данные и куда передаются, с регистрацией изменений. XDTO — низкоуровневый инструмент сериализации, которым планы обмена пользуются для формирования и разбора сообщений. Они работают вместе, но решают разные задачи.
Подходит ли XDTO для интеграции с REST API?
Обычно нет: REST-сервисы чаще работают с JSON, для которого в платформе есть объекты ЗаписьJSON и ЧтениеJSON. XDTO оправдан, если сервис принимает или возвращает XML по формальной XSD-схеме.