Как создать XDTO-пакет в 1С, имея только XML-файл с данными?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В задачах интеграции часто возникает ситуация, когда для загрузки данных в 1С из внешней системы требуется XDTO-пакет. XDTO-пакет — это, по сути, описание структуры данных (схема), с которым будет работать 1С. Но что делать, если у нас на руках есть только пример XML-файла с данными, а самой схемы нет? В этой статье мы подробно разберем, как решить эту "обратную" задачу и создать XDTO-пакет на основе имеющегося XML-файла.

Проанализируем основную проблему. Файл XML содержит данные и их структуру (теги), но, как правило, не содержит строгой типизации, ограничений и другой метаинформации, которая необходима для полноценной схемы. Например, из тега <Количество>10</Количество> непонятно, является ли это число всегда целым, может ли оно быть дробным или отрицательным. Именно для описания таких правил и нужна схема. Поэтому прямое создание XDTO-пакета из XML-файла в 1С невозможно. Процесс включает промежуточный, но обязательный этап — создание XML-схемы (файла с расширением .xsd).

Основной подход: Генерация XSD-схемы с последующим импортом

Наиболее эффективный способ решения нашей задачи состоит из трех ключевых шагов. Рассмотрим каждый из них подробно.

  1. Генерация XSD-схемы на основе вашего XML-файла.

    Первый и самый важный шаг — получить файл схемы (.xsd), который описывает структуру вашего XML. Для этого можно воспользоваться специальными инструментами — генераторами XSD-схем. Существует множество онлайн-сервисов и десктопных приложений, которые могут проанализировать ваш XML-файл и на его основе сгенерировать предполагаемую схему. Поисковый запрос "xsd generator from xml" поможет найти подходящий инструмент.

    Важный момент: автоматический генератор — это лишь отправная точка. Он строит схему, основываясь только на тех данных, которые увидел в вашем файле. Качество результата напрямую зависит от полноты данных в предоставленном XML.

  2. Ручная доработка сгенерированной XSD-схемы.

    Это критически важный этап, который почти всегда необходим. Автоматически сгенерированная схема часто содержит неточности, которые нужно исправить вручную, открыв .xsd файл в любом текстовом редакторе. Обратим внимание на наиболее частые проблемы:

    • Неправильное определение множественности. Если в вашем примере XML в какой-то табличной части была только одна строка (один элемент), генератор, скорее всего, опишет это свойство как одиночное, а не как коллекцию (массив). Вам нужно будет вручную поправить атрибуты схемы (например, maxOccurs="unbounded"), чтобы указать, что таких элементов может быть много.
    • Неверные типы данных. Генератор может определить числовое поле как строку, если оно содержало нули в начале, или как целое число, хотя в реальности оно может быть дробным. Проверьте и исправьте типы данных (например, xs:string, xs:int, xs:decimal, xs:date) для всех полей.
    • Отсутствие ограничений (фасетов). Схема позволяет задавать ограничения: например, максимальную длину строки, допустимый диапазон значений для числа и т.д. Генератор этого сделать не сможет, так как не знает бизнес-логики. Если такие ограничения важны, их нужно добавить вручную.
    • Определение обязательности полей. Генератор не может знать, какие поля обязательны к заполнению, а какие нет. Это также регулируется атрибутами схемы (например, minOccurs="0" для необязательных полей).

    Тщательная ручная проверка и доработка схемы на этом этапе сэкономит массу времени и избавит от ошибок при загрузке данных в будущем.

  3. Импорт готовой XSD-схемы в 1С.

    Когда у вас есть корректный и доработанный .xsd файл, его можно импортировать в конфигурацию 1С для создания XDTO-пакета. Разберем этот процесс по шагам:

    1. Откройте конфигуратор вашей базы 1С.
    2. В дереве конфигурации найдите ветку "Общие" и раскройте ее.
    3. Найдите подветку "XDTO-пакеты".
    4. Нажмите на ней правой кнопкой мыши и в контекстном меню выберите пункт "Импорт схемы XML...".
    5. В открывшемся диалоговом окне укажите путь к вашему .xsd файлу.

    После этого платформа 1С автоматически проанализирует файл схемы и создаст на его основе новый XDTO-пакет. Внутри этого пакета будут созданы все необходимые типы объектов (ObjectTypes) и типы значений (ValueTypes) со всеми свойствами, которые были описаны в XSD-схеме.

Альтернативный подход: Создание XDTO-пакета вручную

Если структура обмена данными достаточно проста или у вас есть подробное текстовое описание формата, можно создать XDTO-пакет с нуля непосредственно в конфигураторе 1С, не прибегая к генераторам. Этот способ дает полный контроль над всеми элементами схемы, но является более трудоемким.

Для этого в ветке "XDTO-пакеты" нужно создать новый пакет и затем вручную добавлять в него типы объектов, типы значений и их свойства, задавая для каждого имя, тип, множественность и другие параметры.

Дальнейшая работа с созданным XDTO-пакетом

После того как XDTO-пакет создан, вы можете полноценно использовать его в коде 1С для работы с XML-данными. Основным инструментом для этого является глобальный объект ФабрикаXDTO. С его помощью можно выполнять две ключевые операции:

Таким образом, наличие XDTO-пакета делает работу с XML в 1С типизированной, контролируемой и значительно более удобной по сравнению с ручным разбором XML-документа.

← На главную