В прошлый раз я привел пример простого плагина для MS CRM 4.0 сейчас приведу алгоритм для создания сущностей в MS CRM. Один из способов это использовать веб-службу CRM для того, чтобы создавать бизнес сущность (т.н. business entity), но делая так вы будете ограничены только стандартными сущностями с их стандартными атрибутами. Для того, чтобы получить больше «динамики» необходимо использовать другие методы.
В Microsoft Dynamics CRM 3.0 для расширения базовой бизнес-логики использовались callout (колауты), представляющие собой dll-сборки, которые можно было подключать на определенные сущности и события, предварительно запрограммировав необходимый функционал.
В Microsoft Dynamics CRM 4.0 callout переименовали в plug-in (плагин) и добавили дополнительные возможности. Более подробно сейчас не будем останавливать на перечислении всех возможностей plug-in, а рассмотрим простой пример.
Я приведу пример обновления поля new_companyname в task при выборе определенной записи из поля «В отношении» (regardingobjectid). Например, если выбран контакт и он относится к организации, то получаем имя родительской организации (account)
05.03.2009CRM книги на MSDN
Были добавлены несколько глав книг Programming Microsoft Dynamics CRM 4.0 и CRM as a Rapid Development Platform в библиотеку MSDN, которые доступны для скачивания.
- Chapter 10: Developing Offline Solutions – рассмотрен пример разработки расширения для Offline-клиента Outlook (книга Programming Microsoft Dynamics CRM 4.0)
- Chapter 3: The Developer and Team Workspace – о том, как вести и организовать разработку под Microsoft Dynamics CRM команды разработчиков.(книга CRM as a Rapid Development Platform)
Очень толковые книги и одну из них я уже начал изучать CRM as a Rapid Development Platform.
Обновился список документации для разработчика Microsoft Dynamics CRM
05.03.2009Перехват события OnSave в MS CRM 4.0
Случалось ли Вам сталкиваться с задачей, когда необходимо в MS CRM переопределить событие OnSave так, чтобы оно не работало как сохранение
Или же производило некоторые действия и только после этого – сохранение. Например, сделаем вот что:
Вставим в событие OnSave сущности incident (Обращение) следующий javascript-код :
event.returnValue = false;
Этот код прекращает выполнение события OnSave. После того, как Вы включили событие OnSave, сохранили этот код и опубликовали изменения, можете жать сколько угодно на кнопки «Save» и «Save and Close», не произойдет ровным счетом ничего
И даже окно не закроется при нажатии на «Save and Close».
Теперь для чего это нужно. Приведу теоретический пример: допустим, когда Вы ввели данные на форму, Вам нужно по нажатию на «Save» провести проверку введенных данных. Если данные удовлетворяют условиям, сохранение происходит, иначе – окно с ошибкой и «откат» сохранения. Тут следует использовать if. И в ветке, которая отвечает за действия, когда условие не выполнено, вставить код остановки события Save.
Вот такой пример применения, этот метод работает и в MS CRM 4.0, и так же в MS CRM 3.0.
Если вы попробовали такой встроенный инструмент MS CRM 4.0 как сопоставление (mapping) то знаете, что в системных сущностях, таких как: opportunityproduct (продукты для возможной сделки), quotedetail (продукты для предложений), salesorderdetail (продукты для заказов), invoicedetail (продукты для счетов) нельзя сделать сопоставление (т.е. передавать значения) между созданными атрибутами, а ведь так хочется
Вот как можно сделать, например, сопоставление атрибутов продуктов между quotedetail и salesorderdetail
