![]() |
#1 |
Участник
|
…
(Для удобства отдельный .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, напишите личное сообщение администратору. |
|