Dynamics CRM在“约会”表单上仅对1个实体限制“关于”查询字段,并为“查找”设置默认视图

时间:2019-03-04 10:59:35

标签: dynamics-crm dynamics-crm-2016

我试图限制用户可以从“约会”表单的“关于”字段中选择的实体,并设置这些查找字段使用的一些默认视图。

一个大想法是,当用户在字段本身中输入数据时,应从默认视图中提供此查询的结果,例如“我关注的联系人”,但是当用户输入“查找更多记录”弹出窗口时,默认视图应切换为“所有联系人”。

此字段可以在许多实体中查找,例如帐户,联系人,帐单等,我想将其严格限制为仅帐户。

到目前为止,我已经找到了两种方法:

1)将过滤器添加到查找字段,以便不显示任何不满足给定条件的记录。使用addPreSearch库中的Xrm JS函数来完成此操作,如下所示:

var addEventHandler = function (defaultView) {
    Xrm.Page.getControl("contactid").addPreSearch(function () {
        addFilter("contactid", defaultView) 
    });
}

var addFilter = function (entityName, defaultView) {
    var filterXml = "<filter type = 'and'>" +
                        "<condition attribute='contactid' operator='null'/>" +
                    "</filter>";

    Xrm.Page.getControl("contactid").addCustomFilter(filterXml, "contact");
    Xrm.Page.getControl("contactid").setDefaultView(defaultView);
}

(这只是示例代码,实际上未应用于“关于”字段)

2)第二种选择是通过在字段本身上使用setLookupTypes函数来使用未记录的解决方案,如下所示:

var limitLookupEntities = function () {
    Xrm.Page.getAttribute("contactid").setLookupTypes(["contact"]);
}

var changeDefaultViewForLookup = function(viewGuid){
    Xrm.Page.getControl("contactid").setDefaultView(viewGuid);
}

问题:

问题是,如前所述,“关于”字段可以在许多实体中查找。使用解决方案(1)限制它们很麻烦,必须创建尽可能多的过滤器,然后将它们一个接一个地应用于领域似乎不是正确的方法。但是,按照我的实现方式,默认的视图行为可以按预期方式工作-只是在弹出窗口中更改了输入值。

解决方案2)更易于实现,并且如果将来将任何新实体添加到与“关于”字段的关系中,则将来不需要进行任何更改,但是默认视图同时应用于“现场”和“弹出式”默认视图。

我正在寻找的解决方案需要执行以下操作:

  1. 它应该将搜索限制为仅指定实体
  2. 实施后不需要任何维护,例如 如果新实体被引入“有关”字段。
  3. 它应该是通用的-我可能希望对其进行参数化并将其用于其他形式
  4. 仅当用户打开弹出搜索窗口时,它才应应用默认视图更改

有可能吗?

我正在实现此功能的CRM版本是8.2本地。

0 个答案:

没有答案