XDTO


XDTO – механизм 1С, который нужен при создании и использовании веб-сервисов в 1С.

Пакеты XDTO 1С позволяют описать структуру требуемого файла XML для преобразования данных в XML и из XML.

Кому интересно – разберем вопрос подробнее.

 

Что такое XML

XML – это способ в обычном текстовом файле описать сложную структуру данных. В XML указываются не только сами данные, но и поля, в которых они хранятся.

Пример файла XML:


<root>
      <list name=”sky” id=”12”>
           <el>Perfect blue sky</el>
      </list>
</root>

Названия, которые были использованы в этом файле – root, name, list, el – могут быть совершенно произвольными.

Основные правила формирования XML файла сразу видны из его структуры:

  • Элементы могут быть вложены
  • Начало элемента <Имя>, конец – то же имя с добавлением символа «/»
  • Внутри элемента могут быть
    o Вложенные элементы
    o Текст
  • У элемента могут быть свойства (атрибуты), у них указывается имя и значение.

В XML нельзя использовать любые символы, так как некоторые из них зарезервированы собственно для XML, например «<» и «>».

XML очень удобно использовать при обмене со сторонними программами и он используется в механизме обмена данными 1С.

 

Пространство имен

XML файл часто начинается с заголовка, в котором описывается версия XML, кодировка и прочее. Заголовок в XML необязателен и его часто не используют.

В заголовке также может быть определено – пространство имен.

Файлы XML передаются через интернет, воспринимаются многими программами.

Воспринимаются – значит в их коде зашито – если встретишь в XML файле определенное имя элемента – воспринимай его вот так-то и делай вот это.

Поэтому если мы будем использовать имя элемента Apple, то достаточно большой шанс, что какая-либо другая программа может «подумать», что это известный ей Apple, но мы то имели ввиду что-то свое.

Для того, чтобы такого не происходило и чтобы явно указывать что наш Apple отличается от всех остальных, в файле может быть задано наименование пространства имен – префикс, который используется перед названием элементов.

Определяется пространство имен (по английски namespace) вот так — xmlns:ИмяПространства = “URL”, например:
xmlns:store = "http://store.ru"

Далее используется в XML вот так:
вместо <apple color="green">
надо будет писать <store:apple color="green">

Зачем нужен URL?

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

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

Естественно подразумевается, что указавший пространство имен исключительно честный человек и указал свой сайт и не использует с одним сайтом несколько разных пространств имен.

Кстати, обычно указывают не только URL сайта, но URL конкретной папки на сайте, чтобы если что, можно было создать другое пространство имен в другой папочке на сайте для его использования в другой ситуации.

 

DOM

Объект – это определенная структура данных, самодостаточная, содержащая все свои данные.

Так как в XML описаны структурированные данные, то есть в виде структуры, имеющие свои свойства и т.п., то на них можно смотреть как на объекты.

В приведенном примере это может быть объект LIST со свойством и вложенным элементом.

DOM – это способ рассмотрения файла XML не как текст в определенном формате, а как набор объектов со свойствами, полями и так далее.

 

Описание файла XML

Если мы используем файл определенной структуры постоянно для обмена между двумя программами, мы вероятно хотели бы:

  • Чтобы были использованы определенные названия
  • Чтобы были те элементы, которые мы ожидаем (которые «должны быть для использования в нашем обмене»)
  • Чтобы в атрибутах были указаны те типы, которые мы ожидаем (строка, число и т.п.).

Для описания структуры XML существуют следующие стандарты форматов файлов (которые также хранятся в обычном текстовом файле):

  • Расширение DTD – Document Type Definition
  • Расширение XSD – XML Shema.

Оба формата описывают каков должен быть документ. Процедура проверки соответствия XML описанному в таком файле стандарту называют верификация.

 

XDTO

XDTO 1С – это объект 1С, который позволяет в конфигурацию добавить описание XML файла. Вернее описывается не файл, а конкретные структуры XML.

Чтобы указать типы, возможные к использованию – используется список, библиотека типов – которую называют фабрика XDTO 1С.

В этой фабрике указаны как простые типы (строка, число, дата), которые принято использовать в других языках, программах и т.п., но и типы 1С, которые используется в 1С и в конкретной конфигурации.

Фабрика XDTO 1С сама состоит из нескольких пакетов. Базовые типы описаны в пакете с именем www.w3.org

Типы данных текущей конфигурации описаны в пакете http://v8.1c.ru/8.1/data/enterprise/current-config

Сами типы называются в соответствии с именем в конфигураторе с добавлением англоязычного вида (CatalogRef, CatalogObject, DocumentRef, DocumentObject), например:

CatalogObject.Номенклатура

 

Добавление пакета XDTO 1С

Безусловно все это круто звучит. И мы не дошли еще до темы XSLT – способа преобразовывать файлы XML во что-то другое, например в HTML. Тема XML исключительно большая и ее сложно включить даже в отдельную книгу.

Наша задача – понять, что XDTO 1С позволяет описать какие элементы должны быть у пакета XML, который нужно сформировать или считать.

Пакеты XDTO 1С находятся в конфигурации в ветке Общие/Пакеты XDTO 1С.

Добавить пакет XDTO в 1С можно вручную (круто!), но лучше достать соответствующий XSD файл с готовым описанием схемы.

Описание XSD схемы объектов любой конфигурации можно получить нажатием на ветку Общие/Пакеты XDTO 1С и выбрав пункт меню Экспорт XML схемы конфигурации.

Файл текстовый, Вы можете отредактировать его в блокноте Windows, убрав лишние, ненужные Вам объекты.

Добавить готовую XSD схему в 1С можно нажав правой кнопкой на ветку Общие/XDTO 1С пакеты и выбрав пункт меню Импорт XML схемы.

 

Использование механизма XDTO 1С

Работа с XDTO 1С – это преобразование значений в XML и из XML.

Работа ведется с помощью объектов языка 1С ЧтениеXML/ЗаписьXML.

При работе с механизмом XDTO 1С Вы должны указать пакет, с которым работаете. Это может быть типовой пакет (обсуждали выше, см. XDTO) или добавленный в конфигурацию пакет. Идентификация пакета производится по URL, указанному в пакете.

Два основных простых способа работы – это:

  • Сериализация – автоматическое преобразование значений из 1С в XML и наоборот
  • Создание объекта, заполнение его полей, запись в XML (и соответственно чтение из XML и потом чтение его полей).

Пример сериализации значения:
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
ФайлXML = Новый ЗаписьXML();
ФайлXML.ОткрытьФайл(«ИмяФайла»);
Сериализатор.ЗаписатьXML(ФайлXML, Значение1С);

Обратная функция – Сериализатор.ПрочитатьXML(), используется с объектов языка 1С ЧтениеXML.

Пример чтения/записи объекта:

СправочникОбъектXDTO = ФабрикаXDTO.Создать( ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Склады") );
ЗаполнитьЗначенияСвойств(СправочникОбъектXDTO, СправочникСсылка1С);

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

Комментарии:

  • При создании объекта XDTO – создается структура, аналогичная структуре объекта конфигурации (конечно, если Вы создаете объект конфигурации из пакета, указанного в примере)
  • Типовые поля (код, наименование и т.д.) – англоязычные
  • Объект создается пустой, его нужно заполнять, каждое поле отдельно или с использованием функции ЗаполнитьЗначенияСвойств

 


Проголосовать за этот пост:

1 Star2 Stars3 Stars4 Stars5 Stars (35 голосов, среднее: 4,57 из 5)
Загрузка...

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