Стартовая страница Контактная информация Карта сайта и поиск
Практика Бизнеса

Международный опыт — российской практике бизнеса!
Автоматизация бизнеса, лицензирование программного обеспечения

Версия для печати

Простой пример использования XML-DEM

Рассмотрим простую операцию по выгрузке и загрузке данных. Допустим, нам необходимо выгрузить данные по трем клиентам — Группа «Кэннон» (10000), ЗАО «Нефтегаз» (20000) и Страховая компания РОСНО (30000) — с адресами доставки. После чего, мы проанализируем получившийся XML-файл, изменим контактное лицо и адрес доставкиу ЗАО «Нефтегаз», добавим адрес доставки для страховой компании РОСНО и произведем загрузку модифицированных данных.

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

Основная настройка обмена производится в форме ExchObject Form.

ExchObject Form

Как вы видите, форма разделена на три функциональные части: шапку и две табличные области. Шапка содержит общую информацию по объекту обмена и условиям выгрузки разнесенную на несколько закладок. Первая табличная область содержит поля объекта обмена. Вторая табличная область содержит условия связи с подчиненными объектами.

Создадим новый объект обмена — Customer (Клиент). Для этого в реквизите объекта обмена «ID» занесем номер — 10000 (можно присвоить любой другой номер или же не заполнять вообще, в этом случае номер присваивается автоматически). В реквизите «Table No» введем — 18 (номер таблицы Customer), либо нажав кнопку Lookup и выбрав из списка таблиц Navision.

Мы можем увидеть, что первая табличная область заполнилась списком полей таблицы Customer. Для простоты оставим только первые 8 полей таблицы, для этого удалим остальные поля. Так же можно было просто поставить метку запрета выгрузки в ExportDisable. Сделаем это для полей «Name 2» и «Address 2».

С помощью кнопок навигации закладки Export Sample можно просмотреть данные, которые будут выгружаться. Они отображаются в реквизите первой табличной области ExportSample.

Customer 10000 18 - ExchObject Form

На закладке Files Path пропишем путь и название XML-файла.

 Customer 10000 18 - ExchObject Form

Теперь нам надо задать условие, для того чтобы выгрузить информацию только по интересующим нас клиентам. Для этого перейдем на закладку Root Params. Нажмем на кнопку Drill Down реквизита Condition.

В форме ExchObjectRef List, отображающей список условий обмена введем значение реквизита Condition. С помощью кнопки AssistEdit перейдем в форму ExchRefCondition и заполним реквизиты так, как показано на рисунке ниже. (Выгружаться будут только данные по клиентам с номерами 10000, 20000 и 30000.)

ExchObjectRef List

Следующим шагом, мы настроим выгрузку таблицы с адресами поставки по этим клиентам. Таблица Ship-to Address (Адрес поставки) и таблица Customer (Клиент) связаны по ключевому полю с номером клиента. В реквизите шапки ID нажмем клавишу F3 и создадим еще один объект обмена Ship-to Address (таблица № 222) с ID — 10001. Оставим только 8 первых полей и два поля «Name_2» и «Address_2» пометим на запрет выгрузки.

Ship-to Adress 10001 222 - ExchObject Form

Нажав Клавишу F5 мы откроем форму ExchObjects, отображающую список объектов обмена.

ExchObject

Выберем объект Customer и сформируем условия связи с дочерним объектом Ship-to Address. Для этого заполним вторую табличную область формы ExchObject Form объекта обмена Customer. В реквизите ID должен быть ID дочерней таблицы, т.е. 10001. Значение реквизита Condition, содержащее условие связи, заполняется следующим образом. С помощью кнопки AssistEdit перейдем в форму ExchRefCondition и заполним реквизиты так, как показано на рисунке ниже.

Customer 10000 18 - ExchObject Form

Все готово для формирования нашего XML-файла содержащего сведения по трем клиентам с номерами 10000, 20000 и 30000, а так же связанных с этими клиентами адресов доставки. Для выгрузки нажмите кнопку ExchObject на форме ExchObject Form объекта обмена Customer и в выпавшем меню выберете Export, либо нажмите Shift+Ctrl+E.

Хочется еще раз заметить, что полученный XML-файл можно использовать для различных целей, соответственно, есть возможность достаточно просто изменить структуру в процессе настройки обмена. Более подробно об этом написано в инструкции пользователя XML-DEM.

Теперь посмотрим наш XML-файл, который находится по адресу, который мы указали на закладке Files Path в реквизите Export Path. В данном случае это С:My XML File. Для того чтобы мы могли редактировать XML-файл, откроем его с помощью MS Word 2003 (в принципе, ХML-файл можно редактировать с помощью любого текстового редактора или специального редактора XML-файлов). Можно увидеть, что записям по клиентам с номером 10000 и 20000 соответствует по две записи с адресами доставки, а у клиента с номером 30000 адресов доставки нет. Собственно, все, как и таблицах Navision, из которых мы производили выгрузку.

xml-file

XML-файл целиком

Теперь создадим файл загрузки. Так как мы будем загружать данные в ту же базу, то для того чтобы проследить изменения, в базе данных после загрузки, отредактируем файл e_export.xml и сохраним его с именем e_import.xml по адресу С:My XML File (т.е. то имя и тот адрес, который мы указали на закладке Files Path в реквизите Import Path). Данные изменим следующим образом:

  1. Записи, относящиеся к клиенту с номером 10000, оставим без изменений.
  2. У клиента с номером 20000 изменим контактное лицо клиента (г-н Михаил Михайлов на г-жа Людмила Иванова) и первый адрес доставки (ул. Восточная, 53 на ул. Западная, 35)
  3. Клиенту с номером 30000 добавим адрес доставки как показано ниже (можно скопировать адрес доставки предыдущего клиента и отредактировать его):

xml-file

XML-файл целиком

Мы подготовили файл для загрузки и так как изменения коснулись только данных, а структура XML-файла осталась неизменной, то для загрузки можно использовать те же настройки, что и для выгрузки. Нам необходимо только поставить запрет загрузки в реквизите ImportDisable на два поля «Name_2» и «Address_2» для объекта Customer и для объекта Ship-to Address (т.е. те поля для которых мы ранее поставили запрет выгрузки). Пример загрузки можно посмотреть в реквизите ImportSample на закладке Import Sample.

Customer 10000 18 - ExchObject Form

Для загрузки нажмите кнопку ExchObject и в выпавшем меню выберете Import, либо нажмите Shift+Ctrl+I. Предупреждения об ошибках в процессе обмена, если они были, можно посмотреть в файле e_log.txt, путь и название которого мы указали на закладке Files Path в реквизитах Log Path и Log File.

Если предупреждений не было, то загрузка прошла успешно. В этом можно убедиться, если посмотреть содержимое таблиц Customer и Ship-to Address. Записи в них изменились в соответствии с изменениями в файле e_import_ss.xml.

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

Данный пример отражает лишь простейшие настройки для выгрузки и загрузки данных, используя XML- файлы. К примеру, мы не использовали такие реквизиты объекта обмена, как ExportValue и ImportValue. Они позволяют для полей, участвующих в обмене указать значение, которое будет выгружено или загружено в процессе обмена. Это значение может быть как константой, так и вычисляться с помощью пользовательской функции (UDF User Defined Function).

Хочется заметить, что запуск обмена из объектов ExchObject может служить в основном для настройки и проверки правильности работы объекта. В качестве же основного механизма обмена, мы рассматриваем пакеты обмена, в одном пакете обмена можно использовать одновременно нескольких объектов ExchObject в одном сеансе обмена. Причем запустить обмен пакетами возможно из любой обработки Navision. Более подробно об этих и других возможностях XML-DEM можно посмотреть в инструкции пользователя.

XML-DEM позволяет реализовывать практически любые схемы обмена и интеграцию между различными приложениями, поддерживающими стандарт XML.