Введение в веб-службы в Microsoft Dynamics NAV 2009. Часть 1.

Воскресенье, 4 Апрель, 2010

Как известно появление Dynamics NAV 2009 в ноябре 2008 года было событием знаковым. При сохранении всего богатства функционала, наработанного за десятилетия эволюционного развития, была представлена новая технологическая платформа.

В первую очередь это конечно трехзвенная архитектура. Новый Microsoft Dynamics NAV Server обеспечил не только повышенную безопасность и масштабируемость системы, но и позволил реализовать ряд новых технологий, в частности ролеориентированного клиента и возможность публиковать веб-службы.

Если про ролеориентированный клиент и его преимущества хоть и кратко, но уже было написано , то про веб-службы я еще не писал.

Начну, как водится, издалека. Итак, представим себе компанию, которая решила внедрить себе ERP решение. Уже автоматизирована операционная деятельность (закупки, продажи, склад, производство и т.п.), финансы (расчеты, денежные средства), возможно бухгалтерия (рекомендую это делать на базе NAV EXPRESS). Но возможно, что в компании есть ряд задач, где использование Dynamics NAV нерационально. Причины могут быть различны, например, стоимость рабочего места или наличие программного обеспечения заточенного под определенную деятельность. Это не важно. Важен факт, что есть другое программное обеспечение и перед нами встает задача интегрировать два продукта: Dynamics NAV и «нечто».

Далее…

Введение в веб-службы в Microsoft Dynamics NAV 2009. Часть 2.

Воскресенье, 4 Апрель, 2010

В предыдущей статье мы познакомились с веб-службами Dynamics NAV 2009 и даже создали простое, очень простое приложение, которое считывает данные из Dynamics NAV. Хотя чтение данных не самая сложная задача мы все же детально разберемся с доступными методами.

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

dataGridView1.DataSource = ItemCardService.ReadMultiple(null, null, 0);

На код:

List<ItemCardWS.ItemCard_Filter filters = new List<ItemCardWS.ItemCard_Filter>();

ItemCardWS.ItemCard_Filter descFilter = new ItemCardWS.ItemCard_Filter(); 
descFilter.Field = ItemCardWS.ItemCard_Fields.Description;

descFilter.Criteria = “*a*&*p*”;

filters.Add(descFilter); 
dataGridView1.DataSource = ItemCardService.ReadMultiple(filters.ToArray(), null, 0);

Что делает приведенный выше код.

Вначале мы создаем список объектов типа фильтр по товару. Затем создаем объект типа фильтр по товару. Объект типа фильтр имеет свойства «Field», куда указывается поле, по которому происходит фильтрация и «Criteria» - собственно сама строка фильтра, которую обычно указывают в методе SETFILTER. В приведенном выше примере указано, что фильтровать надо по полю Описание (Description) и поле должно содержать инициалы автора на английском.

Далее…

Расширение функциональности ролеориентированного клиента NAV 2009 с помощью подключаемых компонентов. Пример 1. Динамическое форматирование

Вторник, 1 Сентябрь, 2009

В данной статье мы начнем беседу об еще одном новшестве, появившемся в Dynamics NAV 2009 SP1 – подключаемых компонентах – addin’ах. С помощью этой технологии с ролеориентированным клиентом можно “творить чудеса” и добавлять в него возможности, ранее недоступные.

Итак, как было сказано выше, с версии Dynamics NAV 2009 SP1 в ролеориентированный клиент можно добавлять новые элементы управления. Спрашивается где их взять? Ответ точно такой же как и для OCX библиотек: купить у третьих лиц или написать самостоятельно.

Если с пунктом “купить” все ясно, то вот на пункте “написать” хотелось бы остановиться подробнее. В этом номере  планируется привести ряд примеров по созданию подключаемых компонентов.

Для начала подготовим рабочее место. Естественно нам потребуется Microsoft Dynamics NAV 2009 SP1.

Подключаемые компоненты можно создавать для ролеориентированного клиента, это указывает на то, что нам потребуется сам ролеориентированный клиент. Так же нам нужен Microsoft Dynamics NAV Server (напомню, что ролеориентированный клиент является элементом трехзвенной архитектуры и без сервера работать не будет). Кроме того, чтобы подключить новый компонент нам потребуется классический клиент (разработка по-прежнему ведется в классическом клиенте).

Но это еще не все. Подключаемый компонент мы будем создавать с помощью Visual Studio (сейчас без нее никуда, настоятельно рекомендую заняться изучением - в жизни пригодится). Получить бесплатную версию можно здесь: http://www.microsoft.com/express/download/ (нас интересует Visual Studio Express for C#).

Далее…

Расширение функциональности ролеориентированного клиента NAV 2009 с помощью подключаемых компонентов. Пример 2.1. Мини браузер

Вторник, 1 Сентябрь, 2009

В данной статье продолжим работу с подключаемыми компонентами – новой возможности, появившейся в Dynamics NAV 2009 SP1. В предыдущей статье обещались чудеса, а показали всего лишь динамическое форматирование. В данной же статье все будет серьезней.

Начнем с того, что откроем Visual Studio 2008 и создадим новый C# - проект типа Class Library (File > New > Project). В открывшемся окне New Project введите название проекта. Microsoft рекомендует использовать следующий формат имени: МояКомпания.МойПродукт.RtcAddins.

New Project

Далее…

Расширение функциональности ролеориентированного клиента NAV 2009 с помощью подключаемых компонентов. Пример 2.2. Взаимодействие с ролеориентированным клиентом

Вторник, 1 Сентябрь, 2009

Итак, мы уже рассмотрели создание и подключение двух компонентов в ролеориентированном клиенте. В данной статье мы продолжим работу над NAV4U.WebAddin и попробуем разобраться с некоторыми нюансами, связанными с взаимодействием ролеориентированного клиента и подключаемого компонента.

Начнем с того, что предлагается два способа обмена информацией между ролеориентированным клиентом:

  1. С помощью свойства Value, объявленного в интерфейсе IValueControlAddInDefinition
  2. С помощью метода RaiseControlAddInEvent, объявленного в интерфейсе IEventControlAddInDefinition

Оба эти интерфейса реализованы в классе StringControlAddInBase.

Рассмотрим оба свойства подробнее.

Свойство Value.

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

У свойства Value есть два аксессора: set и get. С помощью этих аксессоров выполняется чтение и запись значения свойства.

Далее…

Расширение функциональности ролеориентированного клиента NAV 2009 с помощью подключаемых компонентов. Пример 3. Реализация интерфейса IValueControlAddInDefinition

Вторник, 1 Сентябрь, 2009

Итак, мы сильно продвинулись в теории и практике подключаемых компонентов. По крайней мере, мы так думаем. К сожалению, от полного понимания мы по-прежнему очень далеки. В данной статье попробуем проникнуть в концепции чуть глубже.

Начнем издалека. На панели инструментов Toolbox Visual Studio был обнаружен элемент управления NumericUpDown. Тут же возникло желание опробовать его в деле и в проект NAV4U.StyleControl был добавлен второй класс.

Примечание. Можно было бы создать проект с нуля, но было лень заниматься добавлением ссылок на сборки. Подписывать библиотеку тоже не хотелось. О том как создавать библиотеку “с нуля” можно прочитать в первой статье.

Вот, собственно говоря, код класса:

namespace StyleControl     
 
{     
 
  [ControlAddInExport("NAV4U.NumericUpDown")]     
 
  public class ApNumericUpDown : StringControlAddInBase     
 
  {     
 
    protected override Control CreateControl()     
 
    {     
 
      NumericUpDown tbcontrol = new NumericUpDown();     
 
      return tbcontrol;     
 
    }     
 
  }     
 
}

Далее…