我们为案例实体提供了两种形式。默认的案例表格是大量定制的,并且使用起来相当慢。第二种形式称为“fastcase”,是默认案例形式的轻量级版本。这两种形式都由相同的用户使用。快速表单是从SharePoint中的链接打开的。我们希望在CRM内部工作时始终打开默认的案例表单。
我想知道是否以及如何在CRM内部工作时强制CRM始终打开默认案例表单。
我唯一能找到的是this link,但我觉得使用导航的解决方案也会强制SharePoint快捷方式表单以默认的大小写形式打开。使用不同的用户角色和组也不是那里建议的选项。
答案 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中让它以本机方式处理。