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 – создается структура, аналогичная структуре объекта конфигурации (конечно, если Вы создаете объект конфигурации из пакета, указанного в примере)
- Типовые поля (код, наименование и т.д.) – англоязычные
- Объект создается пустой, его нужно заполнять, каждое поле отдельно или с использованием функции
ЗаполнитьЗначенияСвойств
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.