Как добавить xdto пакет в 1с
Перейти к содержимому

Как добавить xdto пакет в 1с

Механизм XDTO

Аббревиатура XDTO расшифровывается как XML Data Transfer Objects. XDTO является механизмом объектного моделирования данных, описываемых с помощью схемы XML.

Основные возможности использования XDTO

  • описание типов параметров и возвращаемых значений Web-сервисов;
  • обмен данными между конфигурациями 1С:Предприятия 8 с существенно разными структурами данных;
  • обмен данными на основе схем XML, не привязанных к той или иной конфигурации (например, обмен с информационными системами, построенными не на основе 1С:Предприятия 8);
  • создание собственной системы типов и значений для обработки произвольных данных.

XDTO пакет

Механизм XDTO реализован с помощью набора объектов встроенного языка и объекта конфигурации XDTO пакет.

Возможно выполнение следующих действий:

  • создание XDTO пакета с помощью импорта схемы XML;
  • добавление нового XDTO пакета в дерево конфигурации и последующее его редактирование;
  • экспорт существующего XDTO пакета в схему XML.

Также система 1С:Предприятие 8 поддерживает возможность экспорта набора XML схем данных конфигурации.

Редактирование XDTO пакета осуществляется в специальном окне, отображающем иерархическую структуру XDTO пакета:

XDTO- сериализация

В системе 1С:Предприятие 8 реализована сериализация данных на основе механизма XDTO, которая позволяет сериализовать в/из XML:

  • все типы данных хранящиеся в базе данных
  • некоторые другие типы

XDTO-сериализация предназначена для сохранения данных объекта в файл XML и создания объекта на основе данных, хранящихся в файле XML:

XDTO в 1С

В этой статье попробую рассказать о механизме XDTO, рассказать постараюсь только суть — без воды.

XDTO (XML Data Transfer Objects) — это разработка фирмы 1С и ни в каком другом языке программирования эту аббревиатуру не встретишь.

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

Основная «полезность» механизма XDTO заключается в том, что он позволяет работать (чтение и запись) с XML-файлом как с объектом 1С — «через точку» и не думать при этом о тегах и атрибутах XML.

Реализован механизм XDTO при помощи объекта конфигурации «Пакет XDTO». Этот объект в действительности является обычной XML-схемой (XSD) т.е. описывает структуру какого-либо XML-документа.

Средствами 1С мы можем:

  • превратить XSD-файл в объект «пакет XDTO»;
  • добавить новый «пакет XDTO» и редактировать его так, как нам нужно;
  • превратить «пакет XDTO» в XSD-файл.

Для успешного импорта XML-схемы (XSD) в XDTO пакет, необходимо наличие в XSD-файле атрибута «targetNamespace» с указанием пространства имен, иначе импортировать схему не удастся.

Не хватает атрибута "targetNamespace"

Не хватает атрибута «targetNamespace»

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

Таким образом понятно, что названия объектов должны быть уникальны в пределах одного пространства имен (по сути в пределах одного XDTO пакета)

Пространство имен в XSD-файле

Пространство имен в XSD-файле

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

Сравнение XDTO пакетов

Сравнение XDTO пакетов

Слева тот, что создан руками, справа — программой.

Работа с XDTO в 1С неразрывно связана с объектом «ФабрикаXDTO». Именно этот объект читает и записывает данные из/в XML-файл(а), а также создает все нужные объекты с которыми можно привычно работать «через точку».

XDTO — выгрузка загрузка данных

XDTO-пакет — это объект метаданных, который хранит схему данных. Аббревиатура расшифровывается как XML Data Transfer Objects. Схему данных можно описать в xml файле, а затем подгрузить в созданный XDTO-пакет. Для программной работы с пакетами-xdto предназначен объект глобального контекста ФабрикаXDTO.

Текст схемы

<xs:schema xmlns:tns="Выгрузка" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="Выгрузка" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:complexType name="Список">
<xs:sequence>
<xs:element name="Номенклатура" type="tns:Номенклатура" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Номенклатура">
<xs:sequence>
<xs:element name="ГУИД" type="xs:string" minOccurs="0"/>
<xs:element name="Наименование" type="xs:string" minOccurs="0"/>
<xs:element name="Код" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

ФабрикаXDTO с использованием XDTO-пакетов

ФабрикаXDTO содержит xml-схемы всех XDTO-пакетов, которые есть в конфигурации, и обладает набором методов для работы с данными. Для того чтобы схема стала доступна в объекте ФабрикаXDTO, её необходимо добавить в дереве метаданных в ветку с названием "XDTO-пакеты". Добавить можно двумя способами, либо загрузить из файла с расширением (*.xsd), либо добавить вручную узлы пакета.

Выгрузка данных в XML файл

Если схема хранится в метаданных Общие->XDTO-пакеты, то обращение к ней возможно только на сервере.

Загрузка данных из XML файла

ФабрикаXDTO с использованием схемы из файла

Создать объект ФабрикаXDTO на основании файла схемы. Для этого существует глобальный метод СоздатьФабрикуXDTO(<Путь>, <Пакеты>). Если работа с ФабрикойXDTO происходит во внешней обработке, то схему можно хранить в макете с типом "Текстовый документ". Но для создания объекта ФабрикиXDTO все равно необходимо чтобы схема лежала во внешнем файле. Для этого можно создать временный файл и поместить в него содержимое макета.

Выгрузка данных в XML файл

Загрузка данных из XML файла

Комментарии (0)

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *