在CRM里怎么给选项集赋值

专栏:Microsoft Dynamics CRM 编程系列 - 博客频道 - CSDN.NET
介绍Dynamics CRM的日常编程任务,分享编程心得。涉及Dynamics CRM的如下开发范围:JS脚本的开发、数据库脚本的开发、 服务器端的自定义开发。
最新更新文章
今天我们来看看FetchExpression表达式吧,在Dynamics CRM 系统中它可以说是无所不在呀。大家都知道我们查询数据库中的数据会用到SQL语言,把Dynamics CRM 系统比作数据库的话呢,FetchExpresion就是它的SQL啦。   当然啦,FetchExpression没有SQL那么灵活。但是作为一个用XML来描述查询信息的引擎来说也确实挺棒的!我们先来看一个简单的F...
很多时候我们需要自己发布自己的API给外部程序进行调用,这时候就需要用到WCF或Web Service了。我们来看个简单的例子吧:Web Serviceusing S
using System.Collections.G
using System.L
using System.W
using System.Web.S
如何调试JavaScript,可以参考博文:《Dynamics CRM 2011编程系列(43):JavaScript 的调试》,《Dynamics CRM 2011编程系列(44):JavaScript 的 Hack 调试(Fiddler)》。本文介绍如何调试以模态窗口方式弹出页面JS。   配置步骤如下:图1图2图3图4图5...
Dynamics CRM 2011 系统中的Lookup控件支持单选模式,如果要让系统支持多选模式是需要进行自定义开发的。文件将给大家介绍如何开发这样的功能。    对于Lookup控件,我们可以在服务端或客户端为它赋值。但他们还是有区别的,在客户端我们是通过JS对其进行赋值,在服务端我们是通过C#对其进行赋值。JavaScript
var signer=[{id:curUserId,typ...
在Dynamics CRM 2011 系统中,我们可以为每条记录添加注释。注释可以是一行简单的字符或者是一个文件,下面我们来看看怎么通过编程的方式为系统添加注释。我们来看个简单的例子吧。操作步骤图1图2图3图4 程序代码 class Program
public static IOrganizationService CreateService()
今天我们来看看JavaScript的调试技巧,调试JavaScript其实很简单,用IE自带的开发人员工具就能轻松搞定他们。但有时候该工具会哑火,那碰到这种情况我们该怎么办能?重新回到Alert时代?现在我们有很多工具可以利用,这种一夜回到解放前的情况已经是一去不复返了。    本文讨论的调试技巧需要一款JS Debugging工具:Fiddler。接下来我们就来看看具体步骤吧: 死亡蓝屏图1图2...
JavaScript在Dynamics CRM 2011 的开发任务中占了很大的比例,日常的多数开发是通过JavaScript来实现的。那么怎样高效的调试JavaScript代码就成了在咱们必须面对的问题。对于现在的我们,调试JavaScript已经不是什么难事了,有太多的第三方工具可以完成这个问题,让咱们彻底的摆脱了“alert”时代。      本文就简单介绍下如何用IE自带的开发人员工具对J...
最近Dynamics CRM Team发布了一个新的SDK包,它的下载地址是:Dynamics CRM 2011 SDK...
大家在编写程序的时候都会对程序进行单元测试,以此来检测程序是否完成了期望的功能。在实施Dynamics CRM 2011 的过程中会大量使用Plugin程序,但是Plugin程序的调试过程比较繁琐。相信大家对Plugin调试都比较头痛,往往因为一些语法问题折腾半天,难道就没有什么方法可以释放咱们的双手么?还好咱们有Rhino Mocks :D    Rhino Mocks 是款单元测试工具,用它来...
Dynamics CRM Job Editor    用该工具能修改Dynamics CRM 2011 系统自带的异步任务运行时间,如:索引管理任务,索引重建任务等。但很多时候我们在实施项目的时候也有自己的异步任务需要运行,为了防止我们自己开发的异步任务与系统自带的异步任务出现冲突,还是需要避开它们的执行时间的。我们来看看这款工具吧:图1图2图3图4...
下载地址...
本文来聊聊如何用Ribbon Button来调用GhostHook以达到快速呈递报表的效果。其实也就是在Ribbon Button按钮的单击事件中收集需要传递的参数,并将它们传递给GhostHook。我们来看个例子(Ribbon按钮的添加可以参阅文章Dynamics
CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)和
Dynamics CRM 201...
本文分享一个工具“GhostHook”,该工具可以彻底解决调用报表的问题。在使用它加载报表的时候,我们传递给报表的参数可以以Get的方式进行传递,“GhostHook”接受到参数后将模拟用户的输入和提交操作。
     来看看“GhostHook”的用法吧:
使用到的代码
GhostHook...
Dynamics CRM 2011编程系列专栏开通差不多快半年了,该栏目也更新了50多篇博文。分别从表单JS的开发,数据库脚本的开发,服务器端自定义开发来介绍Dynamics CRM的编程知识。    大家可以就该栏目的写作方向或其他建议以留言的方式提出。 大家的建议的方向:   1.报表和数据图表的开发   2.Dynamics CRM与SQL Server BI的交互开发   3.Dynami...
上篇博文介绍了Portal的数据显示控件,它们分别是:CrmMetadataDataSource,SavedQueryDataSource,XrmServiceContext。那本文来看看在Portal中对CRM的数据进行CRUD。
    我们在Portal中对Dynamics CRM 系统中的数据进行CRUD操作可以有两个方向:1.使用ADO.NET直接操作Dynamics CRM 系统的数...
本博文来聊聊怎么制作Dynamics CRM 2011 系统的Portal吧。制作Portal有两种方式可以供我们选择,它们分别为:1.使用Dynamics CRM 2011 支持的Portal控件;2.直接调用Dynamics CRM 2011 的数据库。
   这两种方法各有各的优势,在制作Portal的时候通常都将这两者结合起来一起使用。
   咱们先来了解下Dynamics CRM 2...
在之前的博文中已经介绍如何用Microsoft Reporting Service制作报表,以及如何将制作好的报表发布到Dynamics CRM 2011 系统中。那么本文就来聊聊怎样快捷的调用我们制作好的报表吧。
    正常情况下我们在Dynamics CRM 2011系统中浏览报表的步骤如下:
1.进入Dynamics CRM 2011系统
2.选择栏目“工作区”--&“报表”...
前两篇博文分别制作了2张报表,这两张报表都是以文字的形式来显示的,比较单调。本文将实现一个图表,将数据以图形的方式显示出来。
涉及的实体
代码下载...
之前的博文介绍怎么制作一张简单的报表,今天咱们来制作一张支持数据透视的报表。数据透视是啥我就不解释了,反正是好东东啦,咱们的报表需要完成的功能如下。
1.统计每个用户负责的“市场活动”记录。
2.按“市场活动”记录中的“实际开始日期”中的年月来进行拆分。
在实施Dynamics CRM系统的时候,制作自定义报表是个不可或缺的工作。使用报表可以灵活的将数据进行组合,将用户真正需要的数据呈递给用户。Dynamics CRM系统中的报表是用Microsoft Reporting Service进行制作的。本文将通过制作一张简单的报表,来给大家对Dynamics CRM 与Reporting Service的集合提供感性的认识。
涉及的实体
   市场...
专栏创建者:
创建时间:
文章数:112篇
浏览量: 252704 次
:@hwzhwzhhh1984:欢迎!
:初学crm,闻名而来,膜拜,从头开始看起!
:@ghostbear:GH你好,感谢你详细的blog,受益匪浅啊。我照着你的内容做,到这个onsav...
:@petezzw0410:我单独运行了下alert脚本,发现是os阻止在IE上运行脚本。打开IE的安...
:@petezzw0410:我单独运行了下alert脚本,是OS阻止了在IE上运行脚本,把安全打开就能...trackbacks-0
&&& 在微软CRM中,有一种名为&查找&类型的字段,以代表子表中的外键字段,这种字段,被称为查找类型字段,lookup字段,或者EntityReference字段。该字段的数据类型是Guid&&Microsoft Dynamics CRM中,数据表的主键的数据类型是Guid类型的。
&&& 在MS CRM平台层,查找类型字段包含三方面的信息:
第一,Guid值,即主表的主键值;
第二,name值,即主表的主字段的值。所谓主字段信息,就是一条数据记录的摘要描述,例如客户实体的&name&字段&&客户名称、系统用户实体的&fullname&字段&&系统用户的全名,等等字段,都是主字段信息;
第三,实体类型entityType,即当前外键链接的数据表信息,当然了,在Dynamics CRM平台范畴内,应该叫做实体名称;
&&& 基于以上的解释,我们就可以了解,和查找类型字段打交道时,需要:
获取查找类型字段值时,可以从该字段值中解析出Guid、name以及entityType;
在为查找类型字段赋值时,需要将Guid、name以及entityType三个值拼装起来,而后赋值给查找类型字段;
&&& 样例代码如下:
//读取电话联络表单中的&负责人&字段值
var owner = Xrm.Page.getAttribute("ownerid");
if (owner == null)
owner = owner.getValue();
if (owner == null)
var ownerId = owner[0].
var ownerName = owner[0].
var ownerEntityType = owner[0].entityT
var alertMsg = "当前记录的负责人ID:" + ownerId + "\r\t" +
"当前记录的负责人名字:" + ownerName + "\r\t" +
"当前记录的负责人的实体类型:" + ownerEntityT
alert(alertMsg);
可以在&电话联络&表单的OnLoad事件中,执行上述代码,以验证效果。
&&& 某些表单的查找字段,可以允许关联多条记录,例如电话联络表单中的&接听人&字段。而正是由于这种字段的存在,所以才有了上面代码中使用owner[0]去获取数据值的代码。换而言之,无论是允许单选,还是允许多选,都是一个查找类型字段,为了满足两种情况,查找类型字段使用了数组去承载该字段所关联的数据记录,每个数组元素对应一个关联的数据记录,每条数据记录中包含有三部分信息,即id、name以及entityType。
&&& 故此,在进行允许关联多条记录的查找字段进行操作的时候,就是拼装一个数组,每个数组元素对应一个关联记录,每个元素有三个属性:id、name以及entityType。样例代码如下:
//魏电话联络表单中的&接听人&字段赋值
if (typeof(daemonlin) == "undefined") {
daemonlin = {};
if (typeof(daemonlin.PhoneCall) == "undefined") {
daemonlin.PhoneCall = {};
daemonlin.PhoneCall.Form =
onLoadHander: function () {
var toValue = new Array();
toValue[0] = new Object();
toValue[0].id = "8C8BEEC7-CAFC-E011-A7EB-DE";
toValue[0].entityType = "account";
toValue[0].name = "小林商店 (示例)";
toValue[1] = new Object();
toValue[1].id = "3E0AD1DF-BFB-DE";
toValue[1].entityType = "account";
toValue[1].name = "test";
Xrm.Page.getAttribute("to").setValue(toValue);
阅读(...) 评论() 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
数据挖掘在客户关系管理中的应用研究
下载积分:1998
内容提示:数据挖掘在客户关系管理中的应用研究
文档格式:PDF|
浏览次数:4|
上传日期: 15:51:04|
文档星级:
该用户还上传了这些文档
数据挖掘在客户关系管理中的应用研究
官方公共微信CRM 2013 里流程有4个类别:操作(action)、业务流程(business process flow)、对话(dialog)和工作流(workflow)。它们都是从 setting && Process 进入,然后点击New按钮来创建:
这篇主要介绍操作:什么是操作、什么时候使用操作、如何创建以及如何调用
一、什么是操作
操作是CRM 2013 新增加的一个功能,用来扩展系统的标准功能。业务人员可以用它来实现业务逻辑,然后开发人员可以在系统事件里(比如update,create)来使用它。业务人员可以写业务逻辑,就像以前在工作流时一样。如果业务逻辑改变了,业务人员可以直接在操作里修改,而不需要开发人员的参与。 它可以针对某个实体,也可以是全局的(也就是不针对任何实体),也是在执行管道的30阶段执行,参与到数据库事物中,可以将多个步骤或者操作包含到操作中,支持输入和输出参数,支持在这个消息的Pre或者Post阶段调用其他的插件或者,支持在C#或者JavaScript中调用它,但是它不支持在工作流中直接被调用,也不支持设定触发的范围,设置触发范围为组织级或者用户级。
二、什么时候使用操作
如果你想在一些条件下执行待定的一些步骤,比如一个case被打开多少天并且没有其它操作;我们能根据case打开的天数来实现业务逻辑,然后在case记录里执行它。我们可以发邮件到高级service manager,改变proirity,把case分配到队列里,所以的这些步骤都可以在一个流程里。在以前的版本里,我们用工作流来实现。
三、怎么创建操作
1. settings && process, 点击New 按钮创建操作
2. 点击ok后,会弹出下面的界面:
3. 可以定义输入,输出参数,是否回滚等:
4. 添加步骤
发送邮件:
更新实体:
创建队列:
最终效果图如下:
四、如何调用
1. 插件调用
消息里不是我们以前常用的update,create之类了。
public class ActionsSample :IPlugin
string priority = string.E
public void Execute( IServiceProvider serviceProvider)
IPluginExecutionContext context = (IPluginExecutionContext) serviceProvider.GetService( typeof( IPluginExecution Context));
EntityReference caseRecord = context.InputParameters[" Target"] as EntityR
EntityReference EscalatedBy = context.InputParameters[" EscalatedBy"] as EntityR
priority = context.OutputParameters[" Priority"]. ToString(); }
也可以在update或create之类的消息里,用下面的方法调用操作:
OrganizationRequest req = new OrganizationRequest("new_Escalat");
req["EscalatedBy"] = new EntityReference("systemuser", context.InitiatingUserId);
req["Target"] = new EntityReference(context.PrimaryEntityName, context.PrimaryEntityId);
OrganizationResponse response = service.Execute(req);
界面上添加一个按钮,然后调用下面的function:
var requestXML = new XMLHttpRequest();
requestXML.onreadystatechange = ShowR
function Escalate() {// function for the command bar
var recordId = Xrm.Page.data.entity.getId(); var userId = Xrm.Page.context.getUserId();
EscalateRequest( userId, recordId);
function EscalateRequest( EscalatedById, CaseId) {
var postUrl = Xrm.Page.context.getClientUrl() + "/ XRMServices/ 2011/ Organization. svc/ web";
// WebService Url var requestText = ""; requestText + = "& s:Envelope xmlns:s =\" http:// schemas.xmlsoap.org/ soap/ envelope/\" &";
requestText + = " & s:Body &"; requestText + = " & Execute xmlns =\" http:// / xrm/ 2011/ Contracts/ Services\" xmlns:i =\" http:// www.w3. org/ 2001/ XMLSchema-instance\" &";
requestText + = " & request xmlns:a =\" http:// / xrm/ 2011/ Contracts\" &";
requestText + = " & a:Parameters xmlns:c =\" http:// schemas. datacontract.org/ 2004/ 07/ System.Collections.Generic\" &";
requestText + = " & a:KeyValuePairOfstringanyType &"
requestText + = " & c:key & EscalatedBy &/ c:key &"
requestText + = " & c:value i:type =\" a:EntityReference\" &"
requestText + = " & a:Id &" + EscalatedById + "&/ a:Id &"
requestText + = " & a:LogicalName & systemuser &/ a:LogicalName &"
requestText + = " & a:Name i:nil =\" true\" /&"
requestText + = " &/ c:value &"
requestText + = " &/ a:KeyValuePairOfstringanyType &"
requestText + = " & a:KeyValuePairOfstringanyType &"
requestText + = " & c:key & Target &/ c:key &"
requestText + = " & c:value i:type =\" a:EntityReference\" &"
requestText + = " & a:Id &" + CaseId + "&/ a:Id &"
requestText + = " & a:LogicalName & incident &/ a:LogicalName &"
requestText + = " & a:Name i:nil =\" true\" /&"
requestText + = " &/ c:value &"
requestText + = " &/ a:KeyValuePairOfstringanyType &"
requestText + = " &/ a:Parameters &"
requestText + = " & a:RequestId i:nil =\" true\" /&"
requestText + = " & a:RequestName & new_Escalate &/ a:RequestName &"
requestText + = " &/ request &"
requestText + = " &/ Execute &"
requestText + = " &/ s:Body &"
requestText + = "&/ s:Envelope &"
requestXML.open(" POST", postUrl, true);// true is for async
requestXML.setRequestHeader(" Accept", "application/ xml, text/ xml, */*");
requestXML.setRequestHeader(" Content-Type", "text/ charset = utf-8");
requestXML.setRequestHeader(" SOAPAction", "http:// / xrm/ 2011/ Contracts/ Services/ IOrganizationService/ Execute");
requestXML.send( requestText); }
function ShowResponse() {
var x = requestXML.responseXML.getElementsByTagName(" a:KeyValuePairOfstringany Type");
for (i = 0; i & x. i + +) {
if (x[ i]. childNodes[ 0]. textContent = = "Priority")
{ alert(" The case has been assigned to " + x[ i]. childNodes[ 1]. textContent + " priority."); } }
阅读(...) 评论()posts - 48,&
comments - 205,&
trackbacks - 2
  在实施微软CRM4.0时,我们经常遇到很多实体的Picklist属性下拉值是一样的,比如国家、省份、城市、月份等属性,我们需要维护多个Picklist属性下拉值,这样给维护带来很大的工作量,这时急需有一个全局的选项集来统一维护这些值,以减少维护的工作量。为了解决这个问题,微软CRM2011中已经新增了此新功能。
打开微软CRM-&自定义-&解决方案-&默认解决方案-&组件类型选择选项集 如下图:
点击新建 创建一个选项集 如下图:
打开任意一个实体,创建一个新的Picklist,并使用上面创建的选项集,如下图:
阅读(...) 评论()

我要回帖

更多关于 给iframe里面赋值 的文章

 

随机推荐