Dynamics 365中Customer类型字段的使用

Posted luoyong0201

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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类型的字段,它的定义如下:

\'Dynamics


在没有客制化之前,我们在Case实体表单上可以看到Customer字段既可以选择客户,也可以选择联系人。

\'Dynamics


然后我使用如下的代码:

"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事件执行该代码:

\'Dynamics

发布后然后我们去看效果,可以看到只能选择Account了,目的达到。

\'Dynamics


如果我要通过Web API来给Customer字段赋值呢?其实有两个关系,当赋值为Account的时候和赋值为Contact的时候不一样,自然通过Web API为Customer类型字段的赋值方法也稍有不同。可以通过Metadata Browser来查看,如下图:

\'Dynamics


\'Dynamics


赋值为account实体记录和contact实体记录的示例代码如下,通过组织服务的话则没有多大区别,都是 EntityReference类型。

var data =
{
    "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 =
{
    "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);
    }
);


以上是关于Dynamics 365中Customer类型字段的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Dynamics 365 CRM 中的 C# 插件填充查找字段

Dynamics 365Online Lookup查找字段多选

Dynamics 365Online Lookup查找字段多选

Dynamics 365Online Lookup查找字段多选

Dynamics 365 V9.0 多选选项集之组织服务查询数据过滤及字段赋值

Dynamics 365 在用工作流创建实体时,步骤一直提示缺少必需的属性