Dynamics CRM
文章平均质量分 60
Jeff Xiong
Micrsoft Dynamics CRM MVP,CSDN博客专家
展开
-
Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一
在前面的章节中,我们学习了脚本编程中的onload,onsave,onchange事件。在这章节中,我们将学习一个小例子,让大家明白在日常的开发中应该怎么组合它们来完成开发获取。(下载本节的完整代码) 在制作这个小例子前我们首先得搭建实验环境: 1.新建自定义实体“实战一” 2.修改站点地图,在地图上添加选项卡“实战” 完成上述步骤后,原创 2012-02-20 20:52:44 · 5796 阅读 · 5 评论 -
Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
在Dynamics CRM中,编程的基本单位是“实体”,用面向对象的方法来理解就是“对象”。在日常的开发工作中,我们的开发就这针对这些实体展开的。我们在Dynamics CRM中创建了一个实体后,系统会自动为该实体在数据库中创建若干对象(表,视图),可以看出该系统已经将OR概念发挥到极致啦。 在安装好CRM后,系统中会自动创建许多实体,我们将这类实体称为“标准实体”,而我们自己创建的实体原创 2012-02-10 17:46:07 · 9400 阅读 · 17 评论 -
Dynamics CRM 2011 编程系列(4):JS脚本编程之onchange事件
这节介绍onchange事件的编程,在前面的章节中提过:Dynamics CRM 脚本编程基本上是围绕3个点来进行开发的。它们分别是:onload,onsave,onchange。onchange事件是正对“实体”属性的,和Javascript中的onchange事件一样,都是在控件值发生改变时而触发的。 接下来我们就简单定义一个onchange事件吧,这次我们依然选择“客户”实体进行原创 2012-02-16 20:23:12 · 5636 阅读 · 2 评论 -
Dynamics CRM 2011 编程系列 (6):JS脚本编程之实体的CRUD[Create,Read]
这节我们来谈谈Dynamics CRM中用JS对实体进行CRUD的操作。CRUD操作也就是Create,Read,Update,Delete的缩写,CRUD操作也是编程的最基本操作。建议您在阅读本章前已经确定掌握了之前章节介绍的知识。 通过JS怎么能对保存在服务器上的数据进行CRUD呢?也许你马上会意识到这里使用了Ajax技术,确实,这里的CRUD操作都是建立在Ajax的基础上。我们先原创 2012-03-04 20:45:26 · 11778 阅读 · 26 评论 -
Dynamics CRM 2011 编程系列(10):JS编程之构造OData查询字符串
在前面的章节中我们讨论了怎么通过JS来实现实体的CRUD操作,今天我们就来谈谈Read操作中的查询URL。Read操作是日常开发中最常用也是最重要的功能,Read的操作的核心内容就是查询URL的构造了。Dynamics CRM 2011因为是建立在WCF中的,而我们的Read操作就是通过JS来访问系统的数据服务。可以理解为:“查询URL”最终是用来告诉数据服务应该怎么去查找我们需要的数据,这和Sq原创 2012-03-12 09:22:38 · 5578 阅读 · 1 评论 -
导入导出Dynamics CRM 2011 解决方案
在日常开发中,需要经常导入或导出解决方案。解决方案的导入导出具体情况如下:步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 步骤八 步骤九 步骤十 步骤十一 步骤十二 步骤十三 步骤十四 步骤十五原创 2012-03-12 13:14:10 · 4580 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(11):JS编程之征服表单控件(一)
本节来讨论表单上的常用控件,如:单行文本控件,选项集控件,查找型控件等。看看他们提供些什么方法和属性。 建立测试环境图1 图2 图3 单行文本控件图4 图5 图6 图7 图8 图9 图10 布尔型控件图11 选项集控件图1原创 2012-03-19 13:04:36 · 4244 阅读 · 1 评论 -
Dynamics CRM 2011 编程系列(12):JS编程之征服表单控件(二)
本节我们来讨论表单上的选项卡,导航栏,iframe以及子网格。这些控件在日常开发中并不常用,但有时候通过它们能实现些意想不到的效果。接下来我们就依次来学习它们吧。选项卡,节图1 图2 图3 图4 试试选项卡的ontabstatechange事件吧,我们在实体的onload事件中为选项卡加上这个事件。让选择卡展开时在名称后面添加文字“[打开]”原创 2012-03-21 10:09:08 · 4286 阅读 · 2 评论 -
Dynamics CRM 2011 编程系列(14):JS编程之表单控件的执行上下文
现在我们来看看表单控件的执行环境上下文吧。这里的执行环境和上节介绍的用户登录环境差不多,控件的执行环境就是表示该控件在什么场景下被调用的。方便事件根据环境来做相应的处理。 我们先来了解下他们吧:图1 图2 输入测试代码:function lookupcontrol_onchange(context,entityId,entityName){ //原创 2012-03-22 10:54:59 · 3209 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(13):JS编程之Who Am I
什么是“Who Am I”?它是Dynamics CRM系统提供给我们的一个Web Service 访问方法,通过该方法我们能获取当前登录系统用户的信息:域账号,所属角色,系统账号Id等等。这类信息不仅仅可以在服务端页面调用,也可以在客户端页面调用。 在Dynamics CRM 2011之前的系统,想要获取用户登录环境信息需要通过Ajax方法来访问系统的Web Service。但在Dyn原创 2012-03-22 09:41:04 · 4475 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(15):用JS事件提交表单
这节我们来讨论下如何通过在实体的Form中通过JS来提交表单,达到模拟用户操作的效果。我们来看看练习需求吧:涉及的实体JS模拟操作 需要实现的需求如果用户在实体属性”签名“中进行了任何修改操作,属性”签名者“就需要记录该修改者。 实现方案在文本控件中添加一onchange事件,该事件将要完成如下效果: 1.获取当前用户的ID信息,并将这信息经过原创 2012-04-26 11:07:28 · 5325 阅读 · 6 评论 -
Dynamics CRM 2011 编程系列(16):插件
本节我们来看看Dynamics CRM 2011中的插件。插件和之前文件介绍的JS编程系列中的JS在系统中扮演的角色类似,主要用来控制系统的业务流程。比如用插件来对某个值进行Sum操作,用JS来控制实体Form上某个字段是否需要隐藏等。它们的主要区别在于:插件实在服务器端进行控制的,JS则是在浏览器上进行控制的。 那什么时候使用插件呢?一般情况下能用JS实现的操作都不建议使用插件,原因有原创 2012-04-30 17:55:18 · 7323 阅读 · 11 评论 -
Dynamics CRM 2011 编程系列(23):用插件调用WCF
上篇博文介绍了用插件调用Web Service的方法,现在我们来试试用插件调用WCF吧。在.NET 4.0的体系结构里,已经把Web Service集成到WCF中了,在日常的开发中免不了需要用到这种方法来完成某些系统集成的开发。 具体的操作如下图: 图1 需要调用的服务图2图3图4图5图6图7图8 插件代码原创 2012-05-31 15:12:44 · 3327 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(22):用插件调用Web Service
在实施项目的过程中进程会碰到系统对接的问题,也就是系统接口。Web Service正是解决这类问题而诞生的,SOA的最终目标就是灵活的整合企业中的各类系统,降低系统与系统的集成成本。 基于系统的集成要求,通过插件调用Web Service也是件和正常的事情。接下来我们看个简单的例子吧:图1 部署Web Service图2 在插件中引用Web Service 图原创 2012-05-30 11:45:50 · 3960 阅读 · 3 评论 -
Dynamics CRM 2011 编程系列(24):在插件中使用早期绑定
在日常的开发中,免不了需要使用早期绑定来解决些问题。目前我们可以使用两种绑定方法:早期绑定和晚期绑定。至于他们之间的差异不好评价,各有各的特点,现在我们来看看怎么在插件中来使用早期绑定。 步骤如下:图1图2图3图4图5图6图7图8 插件代码using System;using System.Collectio原创 2012-06-01 09:29:33 · 3097 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(25):插件的依赖注入
依赖注入在编程中已经不是什么新概念了,目前也有很多优秀的依赖注入框架可以供我们使用。如:nhibernate和hibernate。它们的实现原理就是将容易发生变化的东西写在配置文件中,然后制作一个解析程序来解析该配置文件并做相应的操作。 虽然它们非常优秀,但却不能直接使用在Dynamics CRM的开发中。直接用SQL对系统的数据表进行CRUD不是个明智的选择,既然这样我们就自己来简单的原创 2012-06-01 14:30:38 · 3406 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(17):用插件来实现实体的CRUD
这节我们来看看怎样通过插件来实现实体的CRUD。在日常的开发过程中,往往出现这样一类需求:在创建一条记录时判断是否符合某种条件。如果符合就通过程序对条记录进行增/删/改。实现该类需求的最好方式就是插件。 涉及的实体 客户 商机需要实现的需求 1.当创建一条客户记录时自动创建一条商机记录,并将该商机与该潜在客户关原创 2012-05-14 17:22:05 · 4755 阅读 · 1 评论 -
Dynamics CRM 2011 编程系列(18):插件中的Read操作
在前两节中我们分别涉及到了Read操作,一种是通过FetchExpression来实现的Read操作,另一种是通过QueryExpression来实现的Read操作。FetchExpression的功能比QueryExpression的功能要强大,它支持聚合查询。我们来看几个小例子吧。涉及的实体 客户 商机需要实现的需求1.用QueryExpression查询所有原创 2012-05-17 13:41:09 · 4509 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(20):插件队列
Dynamics CRM 2011中的插件支持队列执行,假如你的业务依赖执行上下文的先后顺序则将插件配置成队列执行将是个不错的选择。涉及的实体联系人客户商机需要实现的需求1.创建联系人的时候自动根据该联系人的名称创建一条客户记录。2.创建一条商机记录,并将该商机记录关联到创建的客户上。实现方案 在联系人的Create事件中开发2个插件:1负责创建客户原创 2012-05-18 10:15:54 · 3211 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(19):插件中的事务
Dynamics CRM 2011中的插件支持事务处理,如果要在插件中执行回滚操作,必须手工的抛出错误。涉及的实体 客户 联系人需要实现的需求1.在客户更新的时候创建分别创建一条客户记录和一条联系人记录2.检查插件的当前执行环境是否包含在事务中,如果包含则抛出错误回滚操作。实现步骤图1图2图3图4使用到的脚本usi原创 2012-05-17 20:17:54 · 4930 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(26):自定义工作流
在Dynamics CRM系统中支持可配置的工作流功能,该功能类似Plugin可以根据实体的某些条件而自动触发。比如当实体创建时或实体的某个属性被更改时,当然还可以直接手动触发该流程。 本文来介绍下如何开发自定义的工作流活动,自定义的工作流活动能很好的弥补系统自带活动的不足。且自定义的工作流活动灵活,往往能实现很多复杂需求,所以掌握它还是非常有必要的。 接下来我们来看看具体的制原创 2012-06-07 10:56:07 · 9465 阅读 · 11 评论 -
Dynamics CRM 2011 编程系列(21):插件调试
今天我们来介绍下插件的调试,Dynamics CRM中的插件开发难点就在于调试困难。步骤罗嗦,接下来我们就看看它的调试步骤吧。 调试步骤图1图2图3图4图5图6图7图8图9图10图11 容易出的问题 在调试的过程中会有很多意外情况出现,我不能保证读者按本文的步骤操作下来就能正常中断程序进入原创 2012-05-22 09:15:08 · 4422 阅读 · 3 评论 -
Dynamics CRM 2011 集成Sharepoint server 2010 报错“由于Internet Explorer安全设置的原因,无法确定SharePoint的版本”
解决方法 为系统打上Rollup8补丁。补丁下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=29692原创 2012-06-13 14:28:03 · 1998 阅读 · 0 评论 -
Dynamics CRM 2011中常用的辅助工具
1)SiteMap Editor for Microsoft Dynamics CRM 2011 站点图编辑工具,使用该工具可以轻松的完成站点图的修改,省去了频繁的导入导出操作。 2)CRM 2011 Visual Ribbon Editor Ribbon编辑工具,用该工具可以在可视环境下编辑Dynamics CRM系统中的Ribbon按钮。用它能搞定80%的Ri原创 2012-06-14 12:51:26 · 8312 阅读 · 4 评论 -
Dynamics CRM 2011 编程系列(27):使用触发器
在Dynamics CRM系统中使用触发器虽然不被官方建议,但却是解决一些疑难需求的有力工具。它也能快速的解决一些比较常用的需求,例如:编号。触发器和插件的使用背景很像,那我们什么应该怎样来对它们进行选择呢。我的建议是:如果实现的功能单一且涉及大量的Select实体操作,就选择触发器;如果实现的功较繁琐但不包含复杂的Select实体操作,就选择插件。插件和触发器还有另一个重要的区别:触发器的开发简原创 2012-06-19 14:05:54 · 4789 阅读 · 4 评论 -
Dynamics CRM 2011 编程系列(29):自定义页面
在日常开发过程中难免碰到些古怪的需求,以至于Dynamics CRM提供的标准功能都无法完成该功能。这个时候选择开发自定义页面就是个不错的选择,通过使用ASP.NET来构建灵活的Web页面并调用Dynamics CRM中提供的API就能开发出满足一切需求的Web页面。 我们来制作一个简单的例子吧,在这个页面中将会显示当前登录用户的所有信息。操作步骤图1图2图3原创 2012-06-21 11:23:00 · 8906 阅读 · 12 评论 -
Dynamics CRM 2011 编程系列(30):使用ASP.NET Ajax技术的自定义页面
在上篇博文中讨论了怎么在Dynamics CRM中使用自定义页面,现在我们来看看怎么在自定义页面中使用Asp.net Ajax框架。Asp.net Ajax是个优秀的Ajax框架,用它来开发Ajax应用程序能达到事半功倍的效果。接下来我们就来看看在自定义页面中怎么使用它吧:操作步骤图1图2图3图4图5图6 程序代码Default.as原创 2012-06-25 11:23:23 · 4056 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)
本博文将介绍Dynamics CRM 2011系统中Ribbon的相关开发:添加按钮,添加选项卡,添加Jewel等。你也可以用编辑Ribbon的工具来进行Ribbon开发,详情可以参阅该文《Dynamics CRM 2011中常用的辅助工具》。 我们看几个简单的例子,从最简单的例子开始学习吧:添加按钮(Form)图1图2图3图4图5图原创 2012-07-16 14:33:12 · 8828 阅读 · 4 评论 -
Dynamics CRM 2011 编程系列(32):Ribbon的开发二(按钮的禁用规则)
在上篇博文里介绍了如何在Dynamics CRM 2011系统中添加Ribbon按钮。但现实的需求往往都比较的复杂,它们都涉及了按钮的禁用技术。Dynamics CRM 2011为我们提供了2种按钮禁用技术:一、使用DisplayRule;二、使用EnableRule。 DisplayRule和EnableRule的区别:使用DisplayRule可以彻底的将按钮在Ribbon中隐藏,D原创 2012-07-16 17:23:14 · 5701 阅读 · 0 评论 -
Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)
之前的两篇博文《Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)》,《Dynamics CRM 2011 编程系列(32):Ribbon的开发二(按钮的禁用规则)》分别介绍了Dynamics CRM 2011系统中可以向Ribbon中添加的按钮以及这些按钮的显示禁用规则。在日常开发中按钮的功能依赖于它们的执行环境,那怎样获取按钮的执行环原创 2012-08-06 17:39:42 · 3448 阅读 · 0 评论 -
Dynamics CRM 2011编程系列(34):报表的制作(一)
在实施Dynamics CRM系统的时候,制作自定义报表是个不可或缺的工作。使用报表可以灵活的将数据进行组合,将用户真正需要的数据呈递给用户。Dynamics CRM系统中的报表是用Microsoft Reporting Service进行制作的。本文将通过制作一张简单的报表,来给大家对Dynamics CRM 与Reporting Service的集合提供感性的认识。涉及的实体 市场原创 2012-08-08 11:12:07 · 8648 阅读 · 16 评论 -
Dynamics CRM 2011编程系列(35):报表的制作(二)
之前的博文介绍怎么制作一张简单的报表,今天咱们来制作一张支持数据透视的报表。数据透视是啥我就不解释了,反正是好东东啦,咱们的报表需要完成的功能如下。功能需求1.统计每个用户负责的“市场活动”记录。2.按“市场活动”记录中的“实际开始日期”中的年月来进行拆分。 涉及实体用户市场活动 操作步骤图1图2图3图4图5图6原创 2012-08-10 16:55:28 · 3464 阅读 · 1 评论 -
Dynamics CRM 2011编程系列(36):报表的制作(三)
前两篇博文分别制作了2张报表,这两张报表都是以文字的形式来显示的,比较单调。本文将实现一个图表,将数据以图形的方式显示出来。涉及的实体市场活动 操作步骤图1图2图3图4图5图6图7图8图9图10图11 代码下载原创 2012-08-14 16:44:40 · 5128 阅读 · 10 评论 -
Dynamics CRM 2011 编程系列(7):JS编程之实体的CRUD[Update,Delete]
涉及的实体 1.“商机”实体 2.“客户”实体 需要实现的需求 1.当“客户”中的属性值“主要联系人”被清空时,删除被清空的“联系人”记录。 2.当“客户”中的属性值“年收入”更改时,需要更新所有与其关联的“商机”记录。将“商机”记录中的属性值“预计收入”更新为最新状态。(商机的“预计收入”=客户的“年收入”) 实现方案原创 2012-03-05 22:57:03 · 6072 阅读 · 11 评论 -
Dynamics CRM 2011 编程系列(28):使用SQL Server Profiler找表
很多时候我们并不能直接从Dynamics CRM系统中轻松的获取我们需要操作的实体关系在数据库中的存储结构。可能这些关系分散在多个未开放出来的实体中,这时候我们就需要使用SQL Server Profiler来进行找表操作了。 本文简单介绍下在“市场活动”实体中找出与“市场活动”有多对多关系的“营销列表”的数据存储关系,具体操作见下图:操作步骤图1图2图3原创 2012-06-19 14:59:40 · 3595 阅读 · 0 评论 -
Dynamics CRM 2011编程系列
进入Dynamics CRM领域有些年了,想些写东西总结些这段时间涉及的编程技术。这个领域给我的第一感觉就是非常的磨人,往往会因为完成一个看上去十分小的功能折腾半天。当然它也是非常的强大,就对这款产品来说我对它还是充满信心的。也希望它能在今年取得不俗的成绩,当然这还得靠咱们这些开发人员啦! Dynamics CRM日常的开发任务主要都是针对以下几个方面:JS脚本的开发、数据库脚本的开发原创 2012-02-06 17:02:31 · 6206 阅读 · 9 评论 -
Dynamics CRM 2011编程系列(41):Portal的制作(二)
上篇博文介绍了Portal的数据显示控件,它们分别是:CrmMetadataDataSource,SavedQueryDataSource,XrmServiceContext。那本文来看看在Portal中对CRM的数据进行CRUD。 我们在Portal中对Dynamics CRM 系统中的数据进行CRUD操作可以有两个方向:1.使用ADO.NET直接操作Dynamics CRM 系统的数原创 2012-09-04 17:34:28 · 3866 阅读 · 4 评论 -
Dynamics CRM 2011编程系列(40):Portal的制作(一)
本博文来聊聊怎么制作Dynamics CRM 2011 系统的Portal吧。制作Portal有两种方式可以供我们选择,它们分别为:1.使用Dynamics CRM 2011 支持的Portal控件;2.直接调用Dynamics CRM 2011 的数据库。 这两种方法各有各的优势,在制作Portal的时候通常都将这两者结合起来一起使用。 咱们先来了解下Dynamics CRM 2原创 2012-09-04 11:45:47 · 4465 阅读 · 1 评论 -
Dynamics CRM 2011编程系列(37):调用报表的72般绝技
在之前的博文中已经介绍如何用Microsoft Reporting Service制作报表,以及如何将制作好的报表发布到Dynamics CRM 2011 系统中。那么本文就来聊聊怎样快捷的调用我们制作好的报表吧。 正常情况下我们在Dynamics CRM 2011系统中浏览报表的步骤如下:1.进入Dynamics CRM 2011系统2.选择栏目“工作区”-->“报表”原创 2012-08-26 21:28:22 · 4205 阅读 · 5 评论 -
Dynamics CRM 2011编程系列(39):Ribbon Button + GhostHook
本文来聊聊如何用Ribbon Button来调用GhostHook以达到快速呈递报表的效果。其实也就是在Ribbon Button按钮的单击事件中收集需要传递的参数,并将它们传递给GhostHook。我们来看个例子(Ribbon按钮的添加可以参阅文章Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)和 Dynamics CRM 201原创 2012-08-27 10:27:57 · 3096 阅读 · 2 评论