Xrm.Navigation.openForm 不尊重强大

Xrm.Navigation.openForm not honouring formid

我正在尝试按照找到的示例 here 解释如何使用 Xrm.Navigation.openForm 方法为新实体打开 CRM 表单。

我的目标实体有多个表单,我正尝试在 entityFormOptions 对象中指定表单 ID,如上文 link 中所述。我在这里复制了相关文本(相关行以粗体显示):

entityFormOptions

Entity form options for opening the form. The object contains the following attributes:

  • cmdbar: (Optional) Boolean. Indicates whether to display the command bar. If you do not specify this parameter, the command bar is displayed by default.
  • createFromEntity: (Optional) Lookup. Designates a record that will provide default values based on mapped attribute values. The lookup object has the following String properties: entityType, id, and name (optional).
  • entityId: (Optional) String. ID of the entity record to display the form for.
  • entityName: (Optional) String. Logical name of the entity to display the form for.
  • formId: (Optional) String. ID of the form instance to be displayed.
  • height: (Optional) Number. Height of the form window to be displayed in pixels.
  • navBar: (Optional) String. Controls whether the navigation bar is displayed and whether application navigation is available using the areas and subareas defined in the sitemap. Valid values are: "on", "off", or "entity".

但是这似乎对我不起作用。 我的表单 ID 是 375DE297-C0AF-4711-A811-5F1663FAE5DA

这是我的代码:

var entityFormOptions = {};
entityFormOptions["entityName"] = "contact";
entityFormOptions["formId"] = "375DE297-C0AF-4711-A811-5F1663FAE5DA";
Xrm.Navigation.openForm(entityFormOptions);

新的实体表格打开;但是它使用默认形式,而不是指定的形式。

我是 运行 系统管理员,我已确认我可以访问指定实体的所有表单,因此我认为这不是表单安全问题。

有人试过这种在Dynamics 365中打开表单的方法吗?

这看起来像是文档中的错误或 Dynamics 中的错误。

以前的实现(v8 及之前)在参数对象中使用 formidhttps://msdn.microsoft.com/en-us/library/jj602956.aspx#openEntityForm

尽管当前文档声明必须在 entityFormOptions 中设置 formId,但实际上并未兑现。但是当你把它变成好的旧形式参数时,它很荣幸。

这样就可以了:

var entityFormOptions = {};
entityFormOptions["entityName"] = "contact";
var formParameters = {};
formParameters ["formid"] = "375DE297-C0AF-4711-A811-5F1663FAE5DA";
Xrm.Navigation.openForm(entityFormOptions, formParameters);

P.S。注意小写的"formid".

我们也可以使用下面的代码打开一个特定的实体表单:

var entityFormOptions = {};
entityFormOptions["entityName"] = "nrw_contact";//Logical name of the entity
entityFormOptions["entityId"] = "nrw_contact_ID"; //ID of the entity record
entityFormOptions["formId"] = "CF8D885B-256D-43E6-8776-CBBB7AA88EF5"; //FormId
Xrm.Navigation.openForm(entityFormOptions);

请参阅此 link 了解更多详情:https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/clientapi/reference/xrm-navigation/openform

这可能有点晚,但希望对其他人有所帮助。

文档是正确的。您可以提供 formId,如图所示。您只需要确保该表单已添加到 App Designer 中的模型驱动应用程序(您通过在右侧面板上选中它来添加表单)

var pageInput = {
    pageType: "entityrecord",
    entityName:"icon_case",
    entityId: recordId,
    formId: v_formId
    };