关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复206或者20160315可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!
函数分为函数(function)和查询函数(query function),是不是有点儿绕口?
函数的列表请参考SDK的 Web API Function Reference 章节,每个函数都有一个消息和它对应,函数不会改变数据,一般是查询数据,返回一个复杂类型或者集合。
查询函数的列表请参考SDK的Web API Query Function Reference 章节,每个函数对应的是一个FetchXML的操作符,用来判断是否符合条件。
函数的列表请参考SDK的 Web API Function Reference 章节,每个函数都有一个消息和它对应,函数不会改变数据,一般是查询数据,返回一个复杂类型或者集合。
查询函数的列表请参考SDK的Web API Query Function Reference 章节,每个函数对应的是一个FetchXML的操作符,用来判断是否符合条件。
下面举例子来说明下,调用 RetrieveAllChildUsersSystemUser 这个函数吧,它说起来是绑定函数(bound function),所有绑定函数都有一个属性值是IsBound=”true” 。这个必须点赞,现在执行消息方便多了,以前版本执行消息很麻烦,可以参考我的博客:通过JavaScript调用SOAP终结点执行实体消息 。
下面这个是函数的相关元数据信息:
示例调用代码如下:
var clientURL = Xrm.Page.context.getClientUrl(); var req = new XMLHttpRequest() req.open("GET", encodeURI(clientURL + "/api/data/v8.0/systemusers(4C6A6247-43A9-E511-80CF-000D3A806074)/Microsoft.Dynamics.CRM.RetrieveAllChildUsersSystemUser()?$select=fullname"), true); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.onreadystatechange = function () { if (this.readyState == 4 /* complete */) { req.onreadystatechange = null; if (this.status == 200) { var responseJSON = JSON.parse(this.responseText); var popstr = ""; if (responseJSON.value != null && responseJSON.value.length >= 1) { for (var i = 0; i < responseJSON.value.length; i++) { popstr += responseJSON.value[i].fullname + ";"; } } Xrm.Utility.alertDialog("这个人下属(含直接下属和非直接下属)包括:" + popstr); } else { var error = JSON.parse(this.response).error; Xrm.Utility.alertDialog("调用函数出错." + error.message); } } }; req.send();
非绑定函数(unbound function)就是不是和实体绑定的函数,所有的查询函数都是非绑定函数,还有部分函数,他们没有IsBound属性。
下图是非绑定函数 WhoAmI 定义的元数据。
下图是非绑定函数 WhoAmI 定义的元数据。
下面是调用非绑定函数的示例代码:
var clientURL = Xrm.Page.context.getClientUrl(); var req = new XMLHttpRequest() req.open("GET", encodeURI(clientURL + "/api/data/v8.0/WhoAmI()"), true); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.onreadystatechange = function () { if (this.readyState == 4 /* complete */) { req.onreadystatechange = null; if (this.status == 200) { var responseJSON = JSON.parse(this.responseText); Xrm.Utility.alertDialog("当前用户的ID是:" + responseJSON.UserId + ";所属业务部门ID是" + responseJSON.BusinessUnitId); } else { var error = JSON.parse(this.response).error; Xrm.Utility.alertDialog("调用函数出错." + error.message); } } }; req.send();
从Dynamics 365 V9版本开始提供了新的客户端API来方便编程,请参考
Xrm.WebApi.online.execute (Client API reference) ,还可以参考我的博文
Dynamics 365 V9版本新的客户端API Xrm.WebApi.online.execute 使用实例 。
Xrm.WebApi.online.execute (Client API reference) ,还可以参考我的博文
Dynamics 365 V9版本新的客户端API Xrm.WebApi.online.execute 使用实例 。
更多信息请参考官方文档:
Use Web API functions 。
Use Web API functions 。