在dynamics crm中对于有的实体自带的字段可以查询多个实体的记录,例如“电子邮件”实体的收件人字段可以查询客户、潜在顾客、联系人、用户四个实体记录,有些业务可能就会限制收件人只能是用户实体的记录。
两个方法:
1.前端可以看到限制掉的实体,但是不能选择;
2.前端看不到限制掉的实体;
下边就以“定期约会”实体上的“必须出席的人员”字段为例,可以看到这个字段可以选择:客户、潜在顾客、联系人、用户四个实体记录。
第一种方法:前端可以看到限制掉的实体,但是不能选择:
我们可以看到这个字段是可以选择“客户”、“联系人”、“潜在顾客”、“用户”四个实体记录的,并且可以选择
下边使用JS控制
function onLoad() {
// 获取requiredattendees字段
var toRecipientField = Xrm.Page.getAttribute("requiredattendees");
// 添加事件处理程序
toRecipientField.addOnChange(restrictToAccountAndContact);
}
function restrictToAccountAndContact() {
// 获取requiredattendees字段的值
var toRecipientValue = Xrm.Page.getAttribute("requiredattendees").getValue();
// 遍历requiredattendees字段的值
for (var i = 0; i < toRecipientValue.length; i++) {
var party = toRecipientValue[i];
// 如果选定的实体不是Account或Contact,则移除
if (party.entityType !== "account" && party.entityType !== "contact") {
toRecipientValue.splice(i, 1);
i--;
}
}
// 更新requiredattendees字段的值
Xrm.Page.getAttribute("requiredattendees").setValue(toRecipientValue);
}
窗体属性onLoad的时候执行onLoad方法,给“必须出席的人员”字段加事件,如果选择的记录不是客户和联系人就把选择的记录过滤掉。
结果就是任然可以看到这四个实体,但是选择限制实体的记录时不会加到字段中。
第二种方法:前端看不到限制掉的实体;
语法:formContext.getControl(arg).setEntityTypes([entityLogicalNames]);
名字 | 类型 | 必填 | 描述 |
---|---|---|---|
entityLogicalNames | 字符串数组 | 是的 | 指定查找控件中允许的表的逻辑名称。 |
//限制字段只显示 systemuser 和 contact实体
Xrm.Page.getControl("requiredattendees").setEntityTypes(["account", "contact"]);
如图