CRM学习笔记(一)
被抽調學習CRM兩個禮拜,要回java組了,以后接觸機會應該不多了。記錄下這段時間的學習總結,以備不時之需。
通過微軟提供的視頻教程,基本上你想了解的一些很基礎的問題,都能找到入口處,剩下的就是通過sdk和在各個論壇尋找解決方法了。
http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/CRM.aspx
這個里面包含了的視頻雖然不多,但老師都講得很詳細,對開發(fā)方面也有了相當篇幅的介紹。如plugin、ReportingService、workflow這些自定義開發(fā)都做了入門的基礎介紹和例子。
?學習圈子:
微軟的CRM的圈子,目前我去得比較多的是google論壇上的Microsoft Dynamics CRM 3.0/4.0 微軟客戶管理系統(tǒng)。(:)因為會把所有我討論關心的話題都發(fā)到郵箱中。)還有當然就是微軟的官方論壇了。
這里面不得不提的幾個人,刀客、darren liu 人都很不錯呢,技術很牛,而且很熱心,基本上都是有問必答。 
好了,剩下的就是自己在學習過程中遇到的一些怪問題了
1.工作流突然不能使用。不知是不是與虛擬機遷移服務器有關,工作流不管設置如何的啟動條件都無法運行。后來到了服務器上,查看日志發(fā)現,MSSQLSERVER審核失敗。發(fā)現Microsoft CRM 異步處理服務的服務怪異的停止了。重新啟動完后流程正常。在后面的3.0到4.0升級也發(fā)現了這個問題,把自己覺得相關的服務啟動了后,也可以了。沒有一個具體的說法,就是覺得很奇怪。
?2.視圖排序問題。看了Darren Liu的視圖隱藏方式后,稍加修改,變成了現在的視圖排序。目前自己還沒有找到更好的對系統(tǒng)視圖排序的方法,使用了一種很笨的方式來實現客戶要求的視圖排序順序(通常客戶提出的是按照他們的使用習慣來分類的,所以沒有辦法按照name來order)。
以下是實現方式。
public class ViewSort : IPlugin
 ??? {
 ??????? #region IPlugin 成員
 ??????? public void Execute(IPluginExecutionContext context)
 ??????? {
 ??????????? if (context.InputParameters != null && context.InputParameters.Contains(ParameterName.Query))
 ??????????? {
 ??????????????? QueryExpression qe = (QueryExpression)context.InputParameters.Properties[ParameterName.Query];
 ??????????????? if (qe.EntityName == "savedquery")
 ??????????????? {
 ??????????????????? if (qe.Criteria != null)
 ??????????????????? {
 ??????????????????????? if (qe.Criteria.Conditions != null)
 ??????????????????????? {
 ??????????????????????????? OrderExpression order = new OrderExpression("modifiedon", OrderType.Descending);
 ??????????????????????????? qe.Orders.Clear();
 ??????????????????????????? qe.Orders.Add(order);
 ??????????????????????????? context.InputParameters.Properties[ParameterName.Query] = qe;
 ??????????????????????? }
 ??????????????????? }
 ??????????????? }
 ??????????? }
 ??????? }
 ??????? #endregion
??? }
呵呵,看完代碼,大家大概明白我是用了什么方式來實現自定義排序的吧。在 savedquerybase表中提供了修改時間的字段(modifiedon),大家如果要將視圖位置往前排的話,只要讓視圖modify一下就可以了。主要是為了使當前的修改時間靠前而已。這個方法很笨,如果知道的朋友,希望能提出更簡單的方式。
3.在之前的crm實踐中說到,owner字段在更新后是無法捕捉onchange事件的。其實認真觀察一下,在對商機選擇完負責人后,系統(tǒng)直接對數據庫進行更改,更新負責人。然后刷新頁面重新加載商機。頁面重新加載了,當然就沒有什么onchange事件了。
在google論壇上,刀客提過可以通過assign message plugin來實現,但是我在做測試的時候發(fā)現,context.InputParameters.Properties["Target"]是Moniker。所以通過了TargetRetrieveDynamic來獲得DynamicEntity對象。底下只是代碼只是進行了update操作的測試。具體要實現選擇更新,可以根據需要進行更改。
?? public class AssignUpdatePlugin: IPlugin
 ??? {
 ??????? #region IPlugin 成員
 ??????? public void Execute(IPluginExecutionContext context)
 ??????? {
 ??????????? Moniker m = (Moniker)context.InputParameters.Properties["Target"];
 ??????????? if (m.Name == EntityName.opportunity.ToString())
 ??????????? {
 ??????????????? ICrmService service = context.CreateCrmService(true);
 ??????????????? TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
 ??????????????? targetRetrieve.EntityName = m.Name;
 ??????????????? targetRetrieve.EntityId = m.Id;
 ??????????????? RetrieveRequest request = new RetrieveRequest();
 ??????????????? request.ColumnSet = new AllColumns();
 ??????????????? request.Target = targetRetrieve;
 ??????????????? request.ReturnDynamicEntities = true;
 ??????????????? RetrieveResponse response = (RetrieveResponse)service.Execute(request);
 ??????????????? DynamicEntity entity = (DynamicEntity)response.BusinessEntity;
 ??????????????? entity.Properties["description"] = "ss";
 ??????????????? service.Update(entity);
 ??????????? }
 ??????? }
 ??????? #endregion
??? }
?
4.工作流實踐:
待填充 
5.報表實踐:
?
?
轉載于:https://www.cnblogs.com/monya/archive/2008/10/06/1304701.html
總結
以上是生活随笔為你收集整理的CRM学习笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: voip是利用计算机网络,计算机三级网络
- 下一篇: 如何安装仿宋GB2312字体
