Modber Сообщество
профессионалов по 1С

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



Платформы: 1С:Предприятие 8.3, 1С:Предприятие 8.2, 1С:Предприятие 8.1
Конфигурации: Все конфигурации
2012-11-25
23647 

 

XDTO – это механизм, который необходим при создании и работы web-сервисов. С помощью пакетов XDTO осуществляется описание структуры требуемого файла XML, необходимого для изменения данных из XML и в XML.
 

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


  

XML for dummies

Имена (тэги), использованные в данном файле – root, list, name, el – могут быть абсолютно произвольными. Основные правила образования XML файла видны сразу по его структуре:
— Возможно вложение элементов;

— Начало элемента <Имя>, окончание – то же самое имя, но с присоединением символа «/».
 

Находиться внутри элемента могут:
— Вложенные элементы;
— Текст.

У каждого элемента возможно присутствие свойств (атрибутов), у них указывается значение и имя. В XML запрещается использовать какие-либо символы, потому как несколько из них заняты непосредственно для XML, пример «<» и «>». Способ описания в XML очень удобен для использования при обмене с другими сторонними программами и используется он в 1С механизме обмена данными.
 

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

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

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

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

Определить пространство имен (namespace) можно следующим образом — xmlns:Префикс (ИмяПространства) = “URL”, пример:
xmlns:store = "http://site.ru"

 

Зачем же необходим URL? Кто уже подумал и смотрит дальше – конечно пространство имен, нами придуманное, может быть также не уникально, т.е. кто-либо другой также может его использовать. Именно поэтому указывается особый уникальный идентификатор, который определяет заодно и исполнителя пространства имен.

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

DOM

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

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

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

К минусам данного способа работы, относится высокие требования к производительности ПК, т.к. DOM обрабатывает (формирует структуру в виде объектов) сразу весь XML файл, не зависимо от его размера, и файлы большого размера (более 4Гб) он просто не сможет "переварить".

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

 

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

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

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

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

— Расширение DTD это Document Type Definition;
— Расширение XSD это XML Shema.

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

XDTO

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

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

Фабрика XDTO включает в себя несколько пакетов. Начальные типы описываются в пакете с названиемwww.w3.org Типы данных в конфигурации описываются в пакетеhttp://v8.1c.ru/8.1/data/enterprise/current-config

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

CatalogObject.Контрагенты

 

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

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

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

Добавить XDTO пакет в 1С возможно вручную, но лучше всего достать соответствующий файл XSD с готовым подробным описанием схемы. Описание схемы объектов XSD любой конфигурации возможно получить путем нажатия на ветку Общие — XDTO-пакеты и выбрав в меню пункт "Экспорт XML схемы данных конфигурации".

Этот текстовый файл, Вы можете отредактировать в блокноте Windows, при этом убрав лишние объекты (ненужные Вам). Добавить готовую схему XSD в 1С возможно путем нажатия правой кнопкой мыши на ветку Общие — XDTO-пакеты и выбрав в меню пункт "Импорт XML-схемы".
 

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

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

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

Идентификация пакета осуществляется по URL, который указан в пакете. Есть два способа работы, являющиеся основными – это:

Сериализация – автоматическое изменение значений из XML в 1С и наоборот;

Заполнение полей объекта, его создание и запись в 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Объект, Справочник.Контрагенты.НайтиПоРеквизиту("Имя", "Иванов).Ссылка);

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

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




Бесплатная юридическая
консультация по телефону

8 (499) 350-80-26(Москва)
8 (812) 627-15-62(Спб)

звонок бесплатный

В центре внимания

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