AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.02.2009, 10:45   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006

(Для удобства отдельный .doc файл c текстом поста и качественными картинками прикрепляю)


Попробую привести развернутый пример c картинками, включающий в себя:
- Инсталляцию 3 звеньев NAV 2009 на 2 компьютера (клиент + сервер /база + server tier (промежуточное звено)/)
- Регистрация и использование функционала Web сервисов NAV


Что особо примечательно возможности Web service NAV актуальны вне зависимости от используемого, на основной массе рабочих машин, клиентcкого интерфейса NAV (Классического или RT /Role Tailored, новый клиент/).


Открытые источники, на основе которых сформирован материал:


Microsoft Dynamics NAV W1 2009 (Product DVD):
http://www.mibuso.com/dlinfo.asp?FileID=1022
(Международный (W1) дистрибутив Navision 2009 (~1,1 Gb).
В дистрибутиве по умолчанию только демо-лицензия. Т.е. по сути, вы будете иметь 2-пользовательскую систему с демо-лицензией)



Visual C# 2008, Express Edition (бесплатная редакция, надо только прорегистрироваться)
http://www.microsoft.com/express/download



Microsoft Dynamics NAV 2009 Developer and IT Pro Help:
http://www.microsoft.com/downloads/details...;DisplayLang=en
- nav_install.zip (286 KB)...
“Walkthrough: Installing the Three Tiers On Two Computers”.
/Также есть статья MSDN(http://msdn.microsoft.com/en-us/library/dd355184.aspx )/


- cside.zip (6.3 MB)…
“Walkthrough: Registering and Consuming a Page Web Service”
/Также есть статья MSDN(http://msdn.microsoft.com/en-us/library/dd355316.aspx )/





Пример:


0. В качестве отправной точки у меня есть сервер Windows Server 2003 (MOW-GTSC-3) c установленным на нем SQL Server 2005, а в качестве клиента буду использовать машину под управлением Windows Vista


СЕРВЕР: (шаги 1-6 выполняются на серверной машине)





1. Запускаю Autorun.exe c дистрибутива NAV2009





2. Устанавливаем Database Components














3. В результате у нас появляется база данных “Demo Database NAV (6-0)”





4. Устанавливаем NAV Server service











5. В результате у нас появляется два новых сервиса: Microsoft Dynamics NAV Server (стартует автоматически /Automatic/) и Microsoft Dynamics NAV Business Web Services (по умолчанию стартует вручную /Manual/)





6. Запускаем сервис Microsoft Dynamics NAV Business Web Services








7. Переходим на клиентскую машину, устанавливаем RoleTailored Client


КЛИЕНТ: (шаги 7-27 выполняются на клиентской машине)














8. Запускаем RT клиента, пункт меню Windows Start Programs “Microsoft Dynamics NAV 2009”





В результате имеем ошибку: “...1251 ..code page on your computer does not match the 1252 code page…”





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


9. Отключим проверку кодовой страницы в настроечной SQL таблице NAV ($ndo$dbproperty)









10. Запускаем RT клиента, пункт меню Windows Start Programs “Microsoft Dynamics NAV 2009”








11. Устанавливаем Classic Client








12. Запускаем классического SQL клиента, пункт меню Windows Start Programs “Microsoft Dynamics NAV 2009 Classic with Microsoft SQL Server”






13. Добавляем необходимое количество пользователей в Windows Logins и запускаем синхронизацию





14. Проверяем через Internet Explorer (IE) (http://mow-gtsc-3:7047/DynamicsNAV/WS/services ) что у нас есть доступ к Web Service





15. Заходим в классического SQL клиента, в Administration General Setup Web Service, добавляем строчку, публикующую как Web service карточку клиента – Page 21
(так же можно опубликовать codeunit, подробнее смотри:
http://msdn.microsoft.com/en-us/library/dd339004.aspx )






16. Проверяем через Internet Explorer (IE)
(http://mow-gtsc-3:7047/DynamicsNAV/WS/CRON...al_Ltd/services
http://mow-gtsc-3:7047/DynamicsNAV/WS/CRON...d/Page/Customer)
что у нас есть доступ к сервису Page/Customer









17. С сайта http://www.microsoft.com/express/download ставим Visual C# 2008 Express Edition (бесплатная редакция, надо только прорегистрироваться)











18. Запускаем Visual C# 2008 Express Edition





19. Создаем новый Project (Console Application) c именем PrintCustomerList





20. В Solution Explorer жмем References, правая кнопка мыши, Add Service Reference





21. В окне Add Service Reference жмем кнопку Advanced





22. Жмем Add Web Reference





23. Пробиваем в URL: http://mow-gtsc-3:7047/DynamicsNAV/WS/services и жмем Go





24. Нажимаем View Service





25. В Web Reference name пробиваем WebService и жмем Add Reference





26. Переходим в Program.cs






И вставляем код:


using System;
using System.Collections.Generic;
using System.Text;


namespace PrintCustomerList
{
// import newly generated Web service proxy
using WebService;

class Program
{
static void Main(string[] args)
{
// Create instance of service and setting credentials
Customer_Service service = new Customer_Service();
service.UseDefaultCredentials = true;
service.Url = "http://mow-gtsc-3:7047/DynamicsNAV/WS/CRON...d/Page/Customer";
// Create instance of customer
Customer cust = new Customer();
cust.Name = "Customer Name";
Msg("Pre Create");
PrintCustomer(cust);

// Insert customer
service.Create(ref cust);
Msg("Post Create");
PrintCustomer(cust);


// Create filter for searching for customers
List<Customer_Filter> filterArray = new List<Customer_Filter>();
Customer_Filter nameFilter = new Customer_Filter();
nameFilter.Field = Customer_Fields.Name;
nameFilter.Criteria = "C*";
filterArray.Add(nameFilter);


Msg("List before modification");
PrintCustomerList(service, filterArray);


cust.Name = cust.Name + "Updated";
service.Update(ref cust);


Msg("Post Update");
PrintCustomer(cust);


Msg("List after modification");
PrintCustomerList(service, filterArray);
service.Delete(cust.Key);


Msg("List after deletion");
PrintCustomerList(service, filterArray);


Msg("Press [ENTER] to exit program!");
Console.ReadLine();
}


// Print list of filtered customers
static void PrintCustomerList(Customer_Service service, List<Customer_Filter> filter)
{
Msg("Printing Customer List");

//conduct the actual search
Customer[] list = service.ReadMultiple(filter.ToArray(), null, 100);
foreach (Customer c in list)
{
PrintCustomer©;
}
Msg("End of List");
}


static void PrintCustomer(Customer c)
{
Console.WriteLine("No: {0} Name: {1}", c.No,c.Name);
}


static void Msg(string msg)
{
Console.WriteLine(msg);
}
}
}
Варианты кода:
Вместо
service.UseDefaultCredentials = true;
service.Url = "http://mow-gtsc-3:7047/DynamicsNAV/WS/CRON...d/Page/Customer";


можно воспользоваться прямой подстановкой пользователя и пароля
service.UseDefaultCredentials = false;
service.Credentials = new System.Net.NetworkCredential("user", "password", "DOMAIN");
service.Url = "http://mow-gtsc-3:7047/DynamicsNAV/WS/CRON...d/Page/Customer";


также можно использовать прямой IP
service.Url = "http://157.58.48.33:7047/DynamicsNAV/WS/CR...d/Page/Customer";





27. Запускаем Debugger… видим что приложение отрабатывает









Подробнее... http://blogs.technet.com/alexef/archive/20...WebService.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:09.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.