Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

时间:2021-06-14 13:59:34

我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复376或者20191105可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

我这里假设一个场景,测试自定义实体需要一个自动编号字段,编号为创建这个记录的人所属业务部门的address1_country的值加上一个6位数的流水号,比如 ZH-000001。

这个一定要用插件写代码来实现吗?不一定,利用自动编号类型的字段,计算字段加上实时工作流可以配置出来。

首先我需要为这个测试实体TestEntity创建一个Autonumber格式的字段,此种字段的介绍请参考我的博文 Dynamics 365 Customer Engagement V9.X新引入的自动编号属性介绍 ,如图。

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

然后我需要在用户显示用户所属业务部门的address1_country字段值,怎么办?用计算字段来做。为用户(systemuser)实体添加一个计算字段如下:

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

计算公式如下,可以看到是该用户所属业务部门的address1_country字段的值。
Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

将这个新增的字段增加显示到用户实体表单发布后你可以看到效果。但是默认情况下你改不了根业务部门的字段值,因为不能为其选择一个父业务部门,保存的时候会报错 You must provide a value for Parent Business.,如下。

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

那怎么办?参考我的博文:不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例 ,我是用如下的JS代码来设置根业务部门这个字段的值。

var clientURL = Xrm.Page.context.getClientUrl();
var req = new XMLHttpRequest()
req.open("PATCH", encodeURI(clientURL + "/api/data/v9.1/businessunits(3B4C4300-9AD7-E911-AA0E-000D3AA3715F)"), 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 == 204) {
Xrm.Utility.alertDialog("记录修改成功!");
}
else {
var error = JSON.parse(this.response).error;
Xrm.Utility.alertDialog("修改记录出错." + error.message);
}
}
};
var requestMsg = {};
requestMsg["address1_country"] = "ZH";
req.send(JSON.stringify(requestMsg));

可以看到我更新成功了。

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

然后我需要建立一个实时工作流,实时工作流就是创建的流程种类选择 工作流(Workflow),然后 Run this workflow in the background (recommended) 这个选项不要选中。

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

该实时工作流触发的实际选择 After Record is created,一般我选择Execute as the owner of the workflow,以免实时工作流运行碰到权限问题。

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

添加一个步骤来设置当前实体这个自定义编号字段的值,字段值设置为两个字段值的组合,分别如下:

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

这两个字段值组合起来的值如下:

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值

然后我去测试下,我新建一条记录,保存,可以看到生成了我想要的自定义编号格式。

Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值