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

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

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

Интеграция Microsoft Dynamics NAV и Microsoft Office InfoPath

Рассмотрим пример интеграции Microsoft Dynamics NAV и Microsoft Office InfoPath. В этом примере мы продемонстрируем возможность создания рабочего места по вводу данных для регистрации заказа продажи, который будет импортирован в Navision как квота продажи.

Иллюстрация 1

Для простоты примера мы не будем рассматривать возможности InfoPath по проверке вводимых данных и возможности программирования.

Рассмотрим сценарий, при котором торговый представитель использует для регистрации заказа продажи InfoPath.

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

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

Торговый представитель при вводе информации вводит код клиента и код товара из списка, если они там есть, если их нет в списке, то код не заполняет и вводит данные по клиенту и товару. Эти данные будут использованы для создания новых товаров и клиентов.

Определяемся со структурой данных

Для простоты примера выберем минимально необходимые данные для ввода квоты продажи:

    • Клиент_Код
    • Клиент_Название
    • Поставка_Адрес
    • Дата_Заказа
      • Код_Товара
      • Описание_Товара
      • Кол_во
      • Цена_Единицы

Для формирования структуры XML файла воспользуемся XML-DEM и создадим объекты для выгрузки данных в необходимой нам схеме. Для этого создаем объект на основании таблицы 36 Sales Header, удаляем ненужные нам поля, тоже делаем для таблицы 37 Sales Line, связываем их, в результате получаем объект обмена:

Иллюстрация 2

Задаем условие выгрузки, чтобы выгрузились 2 заказа продажи:

Иллюстрация 3

В результате получаем следующий XML-файл:

Иллюстрация 4

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

 

Создаем шаблон InfoPath

На основе полученного файла создаем шаблон в InfoPath для ввода данных. Это делается простым перетаскиванием мыши структуры XML-файла в область данных. InfoPath сам «понимает» что необходимо создать Повторяющийся раздел и Повторяющуюся таблицу. Мы перенесем поле Дата_Заказа на первое место и сохраним шаблон.

Иллюстрация 5

Ввод данных в InfoPath

Введем данные по двум заказам, полученным от клиентов. В первом заказе укажем нового клиента и новые товары, которых еще в системе нет, во втором заказе введем клиента и товары уже имеющиеся в системе.

Иллюстрация 6

Сохраним данные. В результате получаем XML-файл со следующим содержимым:

Иллюстрация 7

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

 

Настройка импорта в Navision

Для настройки импорта данных нам необходимо создать объекты обмена для таблиц 36 Sales Header, 37 Sales Line, 27 Item, 18 Customer. Настраиваем связи между объектами ориентируясь на структуру имеющегося XML-файла.

Иллюстрация 8

Использование функций с нумераторами

При загрузке нам надо присвоить номер создаваемой квоте, мы можем это сделать, используя функцию =GetNoFromSeriesNo(ПР-КВОТА). При выполнении этой функции будет получен следующий номер из серии номеров ПР-КВОТА. С помощью функции =StoreVar(_docno;$E30000) запомним номер квоты для дальнейшего использования.

Так же это нужно сделать для клиентов и товаров. Но здесь есть нюанс — клиенты и товары могут быть как новые, так и уже присутствовать в системе. Учитывая это, при заполнении поля No таблицы Клиент мы используем функцию =iifRunFunc($X;<>;;$X;=GetNoFromSeriesNo(КЛИЕНТ)). Функция берет имеющийся код клиента из XML-файла, если он есть, а если нет, использует нумератор КЛИЕНТ для получения нового номера. Аналогично проводим настройку и для таблицы Товар.

Иллюстрация 9

Порядок загрузки дочерних объектов

При загрузке данных необходимо учитывать, что в момент заполнения поля код клиента или товара необходимо, чтобы они уже содержались в системе. Для этого мы настраиваем опцию загрузки After descendant для шапки и строк квоты. Опция After descendant говорит что загрузка объекта произойдет после загрузки ссылок, которые он содержит.

Иллюстрация 10

Заполнение полей предопределенными значениями

Заполнение учетных, товарных, НДС групп производим с помощью констант.

Иллюстрация 11

Использование Validate

Для автоматического заполнения необходимых полей используем функции Validate для нужных полей. Чтобы запустить функцию в момент загрузки, нужно поставить отметку в поле Validate для нужного поля таблицы. Мы ставим отметку для полей Код Клиента, Код Товара, Кол-во, Цена. Это так же гарантирует, что заполнение всех зависимых полей пройдет корректно.

Просмотр результата импорта в процессе настройки

При настройке обмена сразу проверяем результат загрузки:

Иллюстрация 12

Загрузка данных

Для загрузки данных выбираем пункт Import. Если в процессе загрузки будут обнаружены ошибки или предупреждения, то будет выведено сообщение. Более детальную информацию о процессе обмена можно получить, просматривая файл сообщений (лог файл) путь и название его указывается на закладке Files Path. Уровень детализации можно указать для каждого объекта в поле Log Detail.

Иллюстрация 13

Просмотрим результат загрузки

Созданы две квоты продажи, создан клиент и два товара — они введены в первую квоту.

Иллюстрация 14

Таким образом, данные из InfoPath импортируются так как нам нужно.

Создание списков клиентов и товаров

Для создания списка клиентов создаем объект обмена, выбираем таблицу 18 Customer, удаляем не нужные поля и производим экспорт данных.

Иллюстрация 15

Список товаров создается подобным же образом.

В Excel мы просто открываем xml-файл.

Иллюстрация 16

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

Создаем пакет обмена

У нас сейчас имеется три объекта обмена — загрузка квоты с клиентами и товарами, выгрузка клиентов и выгрузка товаров. Мы включим все эти три объекта в один пакет. Таким образом, после запуска пакета обмена мы импортируем данные о заказе клиента, если клиент новый — создадим нового клиента, если товар новый — создадим новый товар. И после этого мы экспортируем список клиентов и товаров, в который уже входят новые записи.

Иллюстрация 17

Этот пример демонстрирует простой способ интеграции Microsoft Dynamics NAV и Microsoft Office InfoPath. Для применения его в промышленной эксплуатации, возможно, потребуется использование средств программирования InfoPath для контроля ввода информации в формы InfoPath.