始终在案例实体的CRM中打开默认表单

时间:2015-04-02 09:01:09

标签: dynamics-crm-2011 dynamics-crm crm microsoft-dynamics

我们为案例实体提供了两种形式。默认的案例表格是大量定制的,并且使用起来相当慢。第二种形式称为“fastcase”,是默认案例形式的轻量级版本。这两种形式都由相同的用户使用。快速表单是从SharePoint中的链接打开的。我们希望在CRM内部工作时始终打开默认的案例表单。

我想知道是否以及如何在CRM内部工作时强制CRM始终打开默认案例表单。

我唯一能找到的是this link,但我觉得使用导航的解决方案也会强制SharePoint快捷方式表单以默认的大小写形式打开。使用不同的用户角色和组也不是那里建议的选项。

2 个答案:

答案 0 :(得分:4)

首先:你没有使用他们应该使用的表格。表单基于角色,您正尝试将其用于其他内容。无论如何,我完全理解你的想法,我一直处于相同的情况:)

你需要在CRM中做一个小技巧来制作一个粘性形式。 CRM将最近使用的(MRU)表单存储在名为 UserEntityUISettings 的特殊实体中。此实体在xml中存储每个用户每个实体的 UI设置

您需要做的是在用户更改给定实体的表单时阻止CRM更改此实体。基本上你想控制名为 lastviewedformxml 的属性。您可以从以下博文中获得灵感:https://community.dynamics.com/crm/b/gonzaloruiz/archive/2014/11/19/avoiding-form-reload-when-switching-crm-forms-based-on-a-field.aspx

快乐的编码......

答案 1 :(得分:1)

您可以通过以下方式打开CRM表单:

function OpenForm() 
{
    var parameters = {};
    var id = GetFormId("account", "FormName");
    parameters["formid"] = id;
    Xrm.Utility.openEntityForm("account", null, parameters);
}

function GetFormId(formEntity, formName) {
    var serverUrl = Xrm.Page.context.getServerUrl();
    var oDataEndpointUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc/";
    oDataEndpointUrl += "SystemFormSet?$top=1&$filter=ObjectTypeCode eq '" + formEntity + "' and Name eq '" + formName + "'";
    var service = new window.XMLHttpRequest;
    var id;
    if (service != null) {
        service.open("GET", oDataEndpointUrl, false);
        service.setRequestHeader("X-Requested-Width", "XMLHttpRequest");
        service.setRequestHeader("Accept", "application/json, text/javascript, */*");
        service.send(null);
        var requestResults = eval('(' + service.responseText + ')').d;
        if (requestResults != null && requestResults.results.length == 1) {
            var rec = requestResults.results[0];
            id = rec.FormId;
        }
    }
    return id;
}

取决于您从sharepoint调用表单的方式,您可以调用所需的表单,并从CRM中让它以本机方式处理。