Подключение к веб-сервисам Navision из Visual Basic.NET при помощи Web Reference

В целом, эта заметка – всего лишь переписанная для Visual Basic вот эта статья, так что прочитайте сначала ее.

Кроме того, это мое первое приложение на Visual Basic. Не думаю, что есть способ сделать вещь из заголовка проще, но опять же – возможно, я не прав.

Я создаю консольное приложение Visual Basic и добавляю два Web Reference’а (как это сделано в этой заметке this post), а потом просто переписываю код.

Исходный код

Module Module1
</span>

<span style="font-family: Times New Roman; font-size: 12pt;"> Sub Main()

Во-первых, подключаемся к веб-сервису System и получаем список фирм:

        Dim baseURL As String = "http://localhost:7047/DynamicsNAV/WS/"
</span>

<span style="font-family: Times New Roman; font-size: 12pt;"> Dim systemService As New SystemServiceRef.SystemService()
systemService.Url = baseURL + "SystemService"
systemService.UseDefaultCredentials = True
Dim companies() As String = systemService.Companies()
Console.WriteLine("Companies:")
For Each company As String In companies
Console.WriteLine(company)
Next
Dim cur As String = companies(0)

Как только я выбрал фирму, которую буду использовать для cur, создаю URL на CustomerPage следующим образом:

        Dim customerPageURL As String = baseURL + Uri.EscapeDataString(cur) + "/Page/Customer"
Console.WriteLine(vbCrLf + "URL of Customer Page: " + customerPageURL)

А затем создаю Service Class на Customer Page:

        Dim customerService As New CustomerPageRef.Customer_Service()
customerService.Url = customerPageURL
customerService.UseDefaultCredentials = True

И используя его, считываю данные по клиенту 10000 и вывожу его название:

        Dim customer10000 As CustomerPageRef.Customer = customerService.Read("10000")
Console.WriteLine(vbCrLf + "Name of Customer 10000: " + customer10000.Name)

Теперь давайте создадим фильтр и считаем данные только по клиентам из GB, имеющим склад RED или BLUE:

        Dim filter1 As New CustomerPageRef.Customer_Filter()
filter1.Field = CustomerPageRef.Customer_Fields.Country_Region_Code
filter1.Criteria = "GB"
</span>

<span style="font-family: Times New Roman; font-size: 12pt;"> Dim filter2 As New CustomerPageRef.Customer_Filter()
filter2.Field = CustomerPageRef.Customer_Fields.Location_Code
filter2.Criteria = "RED|BLUE"
</span>

<span style="font-family: Times New Roman; font-size: 12pt;"> Console.WriteLine(vbCrLf + "Customers in GB served by RED or BLUE warehouse:")
Dim filters() As CustomerPageRef.Customer_Filter = New CustomerPageRef.Customer_Filter(1) {filter1, filter2}
Dim customers() As CustomerPageRef.Customer = customerService.ReadMultiple(filters, Nothing, 0)
For Each customer As CustomerPageRef.Customer In customers
Console.WriteLine(customer.Name)
Next
</span>

<span style="font-family: Times New Roman; font-size: 12pt;"> Console.WriteLine(vbCrLf + "THE END")
Console.ReadLine()
End Sub
</span>

<span style="font-family: Times New Roman; font-size: 12pt;">End Module

Надеюсь, статья поможет вам в работе.

Удачи!

Источник статьи находится здесь: http://blogs.msdn.com/b/freddyk/archive/2010/01/20/connecting-to-nav-web-services-from-visual-basic-net-using-web-reference.aspx

Автор:

В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.

Количество статей, опубликованных автором: 86.

Добавить комментарий