CRM学习笔记(一)

被抽调学习CRM两个礼拜,要回java组了,以后接触机会应该不多了。记录下这段时间的学习总结,以备不时之需。

通过微软提供的视频教程,基本上你想了解的一些很基础的问题,都能找到入口处,剩下的就是通过sdk和在各个论坛寻找解决方法了。

http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/CRM.aspx

这个里面包含了的视频虽然不多,但老师都讲得很详细,对开发方面也有了相当篇幅的介绍。如plugin、ReportingService、workflow这些自定义开发都做了入门的基础介绍和例子。

 学习圈子:

微软的CRM的圈子,目前我去得比较多的是google论坛上的Microsoft Dynamics CRM 3.0/4.0 微软客户管理系统。(:)因为会把所有我讨论关心的话题都发到邮箱中。)还有当然就是微软的官方论坛了。

这里面不得不提的几个人,刀客、darren liu 人都很不错呢,技术很牛,而且很热心,基本上都是有问必答。

好了,剩下的就是自己在学习过程中遇到的一些怪问题了

1.工作流突然不能使用。不知是不是与虚拟机迁移服务器有关,工作流不管设置如何的启动条件都无法运行。后来到了服务器上,查看日志发现,MSSQLSERVER审核失败。发现Microsoft CRM 异步处理服务的服务怪异的停止了。重新启动完后流程正常。在后面的3.0到4.0升级也发现了这个问题,把自己觉得相关的服务启动了后,也可以了。没有一个具体的说法,就是觉得很奇怪。

 2.视图排序问题。看了Darren Liu的视图隐藏方式后,稍加修改,变成了现在的视图排序。目前自己还没有找到更好的对系统视图排序的方法,使用了一种很笨的方式来实现客户要求的视图排序顺序(通常客户提出的是按照他们的使用习惯来分类的,所以没有办法按照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事件的。其实认真观察一下,在对商机选择完负责人后,系统直接对数据库进行更改,更新负责人。然后刷新页面重新加载商机。页面重新加载了,当然就没有什么onchange事件了。

在google论坛上,刀客提过可以通过assign message plugin来实现,但是我在做测试的时候发现,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Object-C中的字符串对象1-不可变字符串

2019独角兽企业重金招聘Python工程师标准>>> #import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {autoreleasepool {NSString *str1"this is string A";NSString *str2"this is string B";NSString *temp;NSCom…

linux环境下作业调度,Linux集群环境下作业调度算法的研究与实现

摘要&#xff1a;集群计算环境中的作业调度接收用户提交的作业请求,并采用适当的调度策略选择计算节点资源来运行用户作业。作业调度策略决定了整个集群系统的效率,尤其是提交计算量大的作业时,良好的作业调度可以大大加快执行速度,因此,作业调度策略是提高集群系统执行并行作业…

硬盘分区与故障排解速查手册(1)

在所有计算机配件中&#xff0c;硬盘是一个比较特殊的角色&#xff0c;它不仅关系到系统的整体性能&#xff0c;而且用户的所有资料都保存在它的身上。 那么&#xff0c;硬盘该如何初始化呢&#xff1f;遇到硬盘故障该如何解决呢&#xff1f;一、大硬盘分区与格式化 硬盘分区是…

Ant Design Blazor 发布 0.9.0,共100+人贡献!

???? 截至这个版本&#xff0c;本项目一共迎来 101 位贡献者&#xff0c;是他们成就了这个项目&#xff01;在此感谢他们慷慨的贡献&#xff01;变更记录Tabs???? 增加路由服用多标签页组件 ReuseTabs。(demo) #1704 ElderJames???? 增加 OnClose 事件与 TabTempla…

人类究竟有多喜欢看热闹?! | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源网络&#xff0c;侵权删&#xff09;

linux2.6添加新硬盘,Linux_TurboLinux11添加新硬盘方法,一.Linux的硬盘识别2.6 kernel - phpStudy...

2.6 kernel以后,linux会将识别到的硬件设备,在/dev/下建立相应的设备文件.如:sda表示第1块SCSI硬盘.hda表示第1块IDE硬盘(即连接在第1个IDE接口的Master口上).scd0表示第1个USB光驱.当添加了新硬盘后,在/dev目录下会有相应的设备文件产生.cciss的硬盘是个例外,它的设备文件在/d…

开始→运行→命令 总结大全

winver-检查Windows版本 wmimgmt.msc打开windows管理体系结构(WMI) wupdmgrwindows更新程序 wscriptwindows脚本宿主设置 write写字板 winmsd-系统信息 wiaacmgr-扫描仪和照相机向导 BR>  winchatXP自带局域网聊天 mem.exe显示内存使用情况 Msconfig.exe-系统配置实用程序…

Windbg在Managed App中设置函数断点的几种方法

本文介绍两种使用Windbg在Managed App中设置断点的方法。一种是在live Debug的时候&#xff0c;attach到了Process之后。另外一种是动态调试的时候&#xff0c;如何给几个模块的特定方法下一个断点。 使用Windbg在Native Code里面下断点是比较方便的&#xff0c;bp加上一个…

Python通过amqp消息队列协议中的Qpid实现数据通信

简介&#xff1a;这两天看了消息队列通信&#xff0c;打算在配置平台上应用起来。以前用过zeromq但是这东西太快了&#xff0c;还有就是rabbitmq有点大&#xff0c;新浪的朋友推荐了qpid&#xff0c;简单轻便。自己总结了下文档&#xff0c;大家可以瞅瞅。AMQP&#xff08;消息…

基于 Blazor 打造一款实时字幕

早先在录制视频的时候一直使用的是 obs-auto-subtitle 作为实时字幕展示功能。不过这个是以 OBS 插件的形式存在&#xff0c;不管是语言和功能上都有一定的限制。故而使用 Blazor server 实现一个。总体思路 实时字幕自然需要语音转文字的功能。考察了一些服务之后&#xff0c;…

一个数学系毕业的物理学家,是怎么拿到诺贝尔化学奖的?

全世界只有3.14 % 的人关注了青少年数学之旅2019年10月9日&#xff0c;这个“特别好”教授&#xff0c;1940年&#xff0c;“特别好”考上了耶鲁&#xff0c;1943年&#xff0c;“特别好”终于拿到数学学士学位。“特别好”特别沮丧&#xff0c;▲ “特别好”在牛津大学&#x…

U盘安装Linux挂载cd,U盘安装Ubuntu Server CD-ROM挂载失败

U盘安装 Ubuntu Server 发生Failed to copy file from CD-ROM问题解决方案使用UltraISO制做Ubuntu Server安装盘&#xff0c;在安装过程当中出现[!!] Load installer components from CD警告&#xff0c;这一步应该是安装文件检查步骤&#xff0c;没有检测到完整镜像文件而提示…

三十五例网络故障排除方法

上网时&#xff0c;我们经常会碰到这样、那样的网络故障&#xff0c;如何应付呢?今天&#xff0c;我们就针对一些常见的故障给大家分析一下! 1.故障现象:网络适配器(网卡)设置与计算机资源有冲突。   分析、排除:通过调整网卡资源中的IRQ和I/O值来避开与计算机其它资源的冲突…

遭遇“烧钱瓶颈” 优酷成本结构堪忧

从奥运结束至今&#xff0c;视频网站的短暂喧嚣终于渐归沉寂。尽管各个视频网站通过拼命烧钱而维系出的“看上去很美”的表象让很多人甚至开始盲目高呼&#xff1a;视频网站的春天已经到来&#xff0c;然而&#xff0c;从之前媒体曝出的“优酷网获千万过桥贷款疑是成本逼迫”到…

XHTML教会我的一些东西-1

第一次写博客&#xff0c;虽然以前写作文是我的强项&#xff0c;我也很能说&#xff0c;但是似乎现在这种能力正在退化。不知为什么&#xff0c;到了大学之后我就变得跟以前不一样&#xff0c;似乎是回到了小学时的我。我在大学开始变得内向、沉默、不去主动和别人交谈。因为这…

杀鸡焉用牛刀!放下Windbg,让dotnet-stack来快速定位死锁原因

我们用来分析CPU过高、死锁问题的常见方案是使用Windbg分析dump文件。但是这种方式存在一些缺点&#xff0c;比如dump文件过大难以下载&#xff0c;windbg使用过于复杂难以掌握等。这里介绍一个小工具dotnet-stack&#xff0c;帮助我们检查托管代码调用堆栈&#xff0c;快速定位…

数学中那些非常奇葩的证明

全世界只有3.14 % 的人关注了青少年数学之旅一、费马大定理证明证&#xff1a;是无理数假设是有理数&#xff0c;p和q是互素正整数那么移项得又由费马大定理可知&#xff1a;与费马大定理(Fermats last therorem)矛盾, Q.E.D. &#xff08;也可易证2的n分之一次方且n属于大于2的…

linux代码段起始地址设置,Arch Linux安装后的一些初始设置简介

配置有线网络。没网络的时候&#xff0c;可以直接设定ip应急&#xff0c;后面 netctl 才是正规设置&#xff1a;复制代码代码如下:# ip addr add 192.168.0.100/24 dev enp0s4# ip link set dev enp0s4 up# ip route add default via 192.168.0.1# echo nameserver 208.67.222.…

安装Linux后的遗留问题

一些Linux用户经常询问这样的问题&#xff1a;Linux能兼容XXX卡么&#xff1f;其实&#xff0c;Linux是一个开放性的系统&#xff0c;只要通过Linux爱好者们的努力&#xff0c;Linux可以兼容任何硬件。 一&#xff0c;声卡 首先要知道声卡的类型&#xff0c;或者是某种声卡兼容…

使用 Minimal API 改造动态文件提供者

使用 Minimal API 改造动态文件提供者Intro之前介绍过一个基于动态文件提供者来实现静态网站的动态更新&#xff0c;可以参考 ASP.NET Core 实现一个简单的静态网站滚动更新&#xff0c;在 Minimal API 出现之后想改造成 Minimal API 的写法&#xff0c;但是由于之前版本的 Min…