Использование xml-портов с веб-сервисами Dynamics NAV
В продолжение недавней Интернет-трансляции (см. здесь), предоставляю Вам пошаговое руководство по созданию XML–порта и использованию его для импорта данных в NAV.
Прежде всего, необходимо создать наш XML-порт и убедиться, что он содержит все необходимые нам элементы и значения.

С целью устранения возможных путаниц, для Родительского элемента, установил свойство «MinOccurs» = 1. В целом для XML-порта, значения свойств «UseDefaultNamespace» и «DefaultNamespace» были изменены, как показано ниже:

Кроме того, в моем XML-порте нет кода, но естественно, манипуляции с данными будут выполнены в соответствии с созданным функционалом XML-порта. Теперь перейдем к Кодеюниту:
DimImport.IMPORT;
EXIT('Import Run');
В основном ты рассмотрели, как создать и запустить XML-порт для импорта данных, а теперь давайте вернемся к веб-службам, которые мы запускаем. Все что нам сейчас нужно сделать, это настроить веб-службы, используя форму 810:

Помните, что реальное имя Кодеюнита не должно совпадать с названием указанной здесь службы. Итак, теперь мы переходим в Visual Studio и начинаем работать с тем, что у нас есть. Первое, что мы увидим, это WSDL описание, включающее описание нашего XML-порта.

Мы видим, RootDimension элементы, которые состоят из нескольких элементов измерения. Также мы можем видеть определение элемента Dimension, включающее поля, которые используются для импорта измерений в NAV.
В Visual Studio создадим новый «Windows Forms» проект:

В созданном проекте добавим веб-ссылку на кодеюнит: http://localhost:7047/DynamicsNAV/WS/Codeunit/DimensionImport.
Подробнее о том, как добавить веб-ссылку можно найти в Developer and IT Pro Documentation,
На моей новой форме, я создал поля для ввода Кода (Dimension Code) и Названия (Dimension Name) измерения и кнопку Создать (Create).

При нажатии на кнопку «Create» будет выполняться указанный ниже код:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace NAV2009SP1WSDemo
{
using WSDI;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Убедитесь, что ResultLabel не содержит текста после нескольких запусков
ResultLabel.Text = "";
//Создайте экземпляр веб-сервиса (WS), установите права доступа и в URL укажите компанию для которой будет запускаться веб-служба.
DimensionImport NAVImport = new DimensionImport();
NAVImport.UseDefaultCredentials = true;
NAVImport.Url = "http://localhost:7047/DynamicsNAV/WS/CRONUS%20International%20Ltd/Codeunit/DimensionImport";
// Прежде всего создадим наш Родительский элемент
RootDimensions RootDim = new RootDimensions();
// Далее мы создадим Список для управления нашими (возможными) множественными измерениями
List<Dimension> DimList = new List<Dimension>();
// И потом мы создает экземпляр измерения
Dimension Dim = new Dimension();
if (dimInputCode.Text != "" && dimInputName.Text != "")
{
// Мы присваиваем переменной Dim значения введенные в текстовые поля
Dim.DimensionCode = "AREA";
Dim.Code = dimInputCode.Text;
Dim.Name = dimInputName.Text;
// Далее добавляем измерение к нашему списку
DimList.Add(Dim);
//Для получения списка измерений «привязанных» к родительскому элементу, выполняем следующее
RootDim.Dimension = DimList.ToArray();
try
{
// Далее мы отправляем данные в NAV и получаем результат выполнения
ResultLabel.Text = NAVImport.ImportDim(ref RootDim);
}
catch (Exception ex)
{
//Показываем возможное исключение
ResultLabel.Text = ex.ToString();
}
}
else
{
// Проверка того, что все значения измерения заполнены
ResultLabel.Text = "Both values must be filled";
}
}
}
}
Наше замечательное приложение готово для запуска и все, что нам необходимо сделать, это нажать клавишу F5:

На текущий момент мы создали XML-порт, выполнили его запуск, используя кодеюнит и передали ему данные об измерении указанные на созданной нами форме.
Оригинал статьи лежит здесь: http://blogs.msdn.com/b/nav/archive/2009/11/06/using-dataports-with-web-services.aspx

Автор: Виктор Кудренко
Количество статей, опубликованных автором: 3. Дополнительная информация об авторе появится вскоре.
Спасибо большое за ценный материал.
Здесь рассказано как сделать импорт данных из внешней процедуры в Нав. А как правильно сделать импорт данных из веб сервиса другого сервере Нав через его веб сервис.
Спасибо!