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

Always open the default form in CRM on the case entity

案例实体有两种形式。默认案例表单是高度自定义的,使用起来变得相当慢。第二种形式称为 'fastcase',是默认大小写形式的轻量级版本。两种形式都由相同的用户使用。 fastcase 表单是从 SharePoint 中的 link 打开的。我们希望在 CRM 中工作时始终打开默认案例表单。

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

我唯一能找到的是 this link,但我感觉带有导航的解决方案也会强制 SharePoint fastcase 表单以默认案例表单打开。使用不同的用户角色和组也不是建议的选项。

首先:您没有使用它们应该使用的表单。表单是基于角色的,而您正试图将它们用于其他用途。不管怎样,我完全理解你的想法,我也遇到过同样的情况:)

您需要在 CRM 中使用一些小技巧来制作表格粘性。 CRM 将最近使用 (MRU) 表单存储在一个名为 UserEntityUISettings 的特殊实体中。此实体在 xml.

中存储每个用户 每个实体的 UI 设置

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

编码愉快...

您可以通过以下方式打开 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 调用您让它以本机方式处理。