莫道桑榆晚,为霞尚满天。这篇文章主要讲述Dynamics 365中Customer类型字段的使用相关的知识,希望能为你提供帮助。
【Dynamics 365中Customer类型字段的使用】我是微软Dynamics 365 &
Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复443或者20210601可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
Customer这种数据类型(Data Type)具有一定的复合型,我们自定义的查找字段(Lookup field)只能Lookup到一个实体,但是Customer这种数据类型却可以Lookup到两个实体,分别是客户(account)和联系人(contact)两个实体,查找字段在赋值时候既可以选择客户实体记录也可以选择联系人客户实体记录,具有一定的灵活性。
在项目实施过程中我们可能优先利用现有字段,有时候会需要限定Customer类型字段只能选择客户或者联系人,怎么办?以前没有特别好的办法,是用权限来控制。比如不给用户contact实体权限,这样用户就只能选择account实体记录了。新的客户端API setEntityTypes (Client API reference) 是可以帮你实现的,我们来具体看看实现的方法。
首先我们知道案例实体(incident)的Customer字段就是Customer类型的字段,它的定义如下:
文章图片
在没有客制化之前,我们在Case实体表单上可以看到Customer字段既可以选择客户,也可以选择联系人。
文章图片
然后我使用如下的代码:
"use strict"; var LuoYong = window.LuoYong || {}; LuoYong.IncidentForm = LuoYong.IncidentForm || {}; (function () { this.onLoad = function (executionContext) { var formContext = executionContext.getFormContext(); formContext.getControl("customerid").setEntityTypes(["account"]); } }).call(LuoYong.IncidentForm);
并使Case表单的On Load事件执行该代码:
文章图片
发布后然后我们去看效果,可以看到只能选择Account了,目的达到。
文章图片
如果我要通过Web API来给Customer字段赋值呢?其实有两个关系,当赋值为Account的时候和赋值为Contact的时候不一样,自然通过Web API为Customer类型字段的赋值方法也稍有不同。可以通过Metadata Browser来查看,如下图:
文章图片
文章图片
赋值为account实体记录和contact实体记录的示例代码如下,通过组织服务的话则没有多大区别,都是 EntityReference类型。
var data = https://www.songbingjia.com/android/{"customerid_account@odata.bind": "/accounts(7076d7bb-3aa3-eb11-b1ac-00224816920b)", "title": "Customer is account" }Xrm.WebApi.createRecord("incident", data).then( function success(result) { console.log("Case created with ID: " + result.id); }, function (error) { console.log(error.message); } ); data = https://www.songbingjia.com/android/{"customerid_contact@odata.bind": "/contacts(d876d7bb-3aa3-eb11-b1ac-00224816920b)", "title": "Customer is contact" }Xrm.WebApi.createRecord("incident", data).then( function success(result) { console.log("Case created with ID: " + result.id); }, function (error) { console.log(error.message); } );
推荐阅读
- 在Cloud Flow和Workflow中使用多选选项集类型字段
- Dynamics 365中表的File数据类型列介绍
- 使用EntityCollection类型和Entity类型的输出参数实例
- 获取用户/团队对某条记录的权限,共享某条记录的某些权限给指定用户/团队的方法
- Dynamics CRM项目实例之十(CRM 2015的捆绑销售在订单中的效果)
- 基本命令学习 -查看文件内容的六种方法
- 介绍Command Checker及重新生成Ribbon元数据的方法
- Linux内核浅入浅出
- windows server 2012R2安装RD服务并发布remoteapp应用