使用 URL 打开表单、视图、对话框和报表

URL 可寻址元素使您能够在其他应用程序中包含指向 Dynamics 365 Customer Engagement (on-premises) 表单、视图、对话框和报表的链接。 通过这种方式,您可以轻松扩展其他应用程序、报表或网站,以便用户无需切换应用程序即可查看信息和执行作。

注释

  • URL 可寻址表单、视图、对话框和报表无法绕过 Dynamics 365 Customer Engagement (on-premises) 安全性。 只有获得许可的 Dynamics 365 Customer Engagement (on-premises) 用户(根据其安全角色)才能访问他们看到的数据和记录。
    • 当您使用 Web 资源在应用程序中以编程方式打开实体表单时,请使用 Xrm.Navigation.openForm 。 不使用 window.open
    • 在应用程序外部,页面无权访问 Xrm.Navigation.openForm 函数,请使用 window.open 或 链接打开实体的特定记录或表单。

URL 可寻址窗体和视图

所有实体窗体和视图都显示在 main.aspx 页中。 传递给此页面的查询字符串参数控制将显示的内容。 例如:

若要为本地 Dynamics 365 Customer Engagement (on-premises) 打开新的客户实体记录窗体:

https://myorg.crm.dynamics.com/main.aspx?etn=account&pagetype=entityrecord  

要为 ID 为 {91330924-802A-4B0D-A900-34FD9D790829} 的 Dynamics 365 for Customer Engagement 打开客户实体记录窗体:

https://myorg.crm.dynamics.com/main.aspx?etn=account&pagetype=entityrecord&id=%7B91330924-802A-4B0D-A900-34FD9D790829%7D  

要打开 Dynamics 365 for Customer Engagement 的 已结束机会 视图,请按以下步骤进行操作。

https://myorg.crm.dynamics.com/main.aspx?etn=opportunity&pagetype=entitylist&viewid=%7b00000000-0000-0000-00AA-000010003006%7d&viewtype=1039  

打开没有导航栏或命令栏的 Dynamics 365 for Customer Engagement 的 可用联系人 视图

https://myorg.crm.dynamics.com/main.aspx?etn=contact&pagetype=entitylist&viewid={00000000-0000-0000-00AA-000010001004}&viewtype=1039&navbar=off&cmdbar=false  

注释

不支持使用 showModalDialogshowModelessDialog 在对话框窗口中打开实体窗体。

不支持在另一个实体窗体中显示嵌入 IFrame 的实体窗体。

您通常会使用 getClientUrl 方法检索本地 Dynamics 365 Customer Engagement (on-premises) 和 Dynamics 365 for Customer Engagement 的组织根 URL。

Main.aspx 页的查询字符串参数

小窍门

要获取任何记录的 id 值,请使用命令栏上的 Send a Link 按钮。 以下是将在电子邮件应用程序中打开的内容的示例:

<https://mycrm/myOrg/main.aspx?etc=4&id=%7b899D4FCF-F4D3-E011-9D26-00155DBA3819%7d&pagetype=entityrecord>

传递给 URL 的 id 参数是记录的编码 id 值。 在此示例中,id 值为 {899D4FCF-F4D3-E011-9D26-00155DBA3819}。 GUID 的编码版本将左括号和右括号“{”和“}”分别替换为“%7B”和“%7D”,

以下是用于 main.aspx 页以打开实体窗体或视图的查询字符串参数:

参数 DESCRIPTION
ETN 实体的逻辑名称。 重要: 请勿使用包含实体的整数代码的 etc (实体类型代码) 参数。 此整数代码因不同组织中的自定义实体而异。
extraqs 对于窗体可选。 此参数包含此参数中的编码参数。

使用此参数将值传递给表单。 有关更多信息,请参阅 使用传递给表单的参数设置字段值

当实体定义了多个表单时,您可以使用此参数指定要打开的表单,方法是传递值等于表单 ID 值的编码参数 formid 。 例如,要打开 ID 为“6009c1fe-ae99-4a41-a59f-a6f1cf8b9daf”的表单,请在参数中包含 extraqs 此值: formid%3D6009c1fe-ae99-4a41-a59f-a6f1cf8b9daf%0D%0A
页面类型 页面的类型。 有两个可能的值:

- entityrecord
显示实体记录窗体。
- 实体列表
显示实体视图。
身份证 对于窗体可选。 当您打开特定实体记录时,请使用此选项。 传入实体的编码 GUID 标识符。 GUID 的编码版本将左括号和右括号“{”和“}”分别替换为“%7B”和“%7D”,例如 {91330924-802A-4B0D-A900-34FD9D790829}%7B91330924-802A-4B0D-A900-34FD9D790829%7D.
viewid 对于视图必需。 这是定义视图的 savedquery or userquery 实体记录的 ID。 获取视图 URL 的最简单方法是复制它。 有关更多信息,请参阅复制视图的 URL
viewtype 定义视图类型。 可能的值如下所示:

- 1039
用于系统视图。 viewid 代表的是 savedquery 记录的 Id。
- 4230
用于个人视图。 viewid 表示 userquery 记录的 Id。
navbar 控制是否显示导航栏,以及是否可以使用站点地图中定义的区域和子区域进行应用程序导航。

- on
此时将显示导航栏。 如果未使用navbar参数,则这是默认行为。
- off
导航栏不会显示。 用户可以使用其他用户界面元素或后退和前进按钮进行导航。
- entity
在实体表单中,只有相关实体的导航选项是可用的。 导航到相关实体后,导航栏中会显示一个后退按钮,以允许返回到原始记录。
cmdbar 控制是否显示命令栏。 注意: 此功能支持 Unified Service Desk for Dynamics 365 应用程序的要求。 不支持使用此功能在另一个实体窗体中显示嵌入 IFrame 的实体窗体。

- true
此时将显示命令栏。 这是默认值。
- false
命令栏处于隐藏状态。

复制视图的 URL

Dynamics 365 Customer Engagement (on-premises) 中的许多视图允许用户复制特定视图的 URL,或发送一封电子邮件,并在邮件中嵌入了特定视图的 URL。 此功能使用户之间的通信更加容易,并为您提供了一种访问视图 URL 的方法,用户可以将其包含在其他应用程序(如 SharePoint 站点)中。

注释

请勿使用此 URL 将视图包含在应用程序导航的站点地图中。 有关更多信息,请参阅 使用站点地图在应用程序导航中显示视图

URL 显示的页面包括完整视图。 这包括功能区,但不包括应用程序导航。

获取视图的 URL
  1. 打开要使用的视图。

  2. 在命令栏上,单击 Send a Link(发送链接),然后单击 Of Current View(当前视图)。

  3. 将链接粘贴到记事本中并对其进行编辑,以仅提取所需文本的 URL 部分。

注释

  • 使用用户上下文作为参数的视图 (如 My Accounts) 无法复制。
    • 表示系统实体的系统视图的 GUID 在每个本地 Dynamics 365 Customer Engagement (on-premises) 中都是相同的。 每个 Dynamics 365 Customer Engagement (on-premises) 安装的自定义实体和自定义视图的 GUID 是唯一的。

使用站点地图在应用程序导航中显示视图

当您使用站点地图自定义应用程序导航时,请勿使用您通过复制视图的 URL 中的步骤从应用程序复制的视图 URL 来设置为 URL。 该 URL 显示一个包含功能区的页面,如果在 Url 属性中使用 <SubArea> ,则会产生不需要的结果。

要在应用程序中显示 SubArea 的实体记录列表,请设置 Entity 属性值。 这将显示该实体的默认视图,并提供正确的标题和图标。

但是,如果您希望 SubArea 元素使用特定的初始默认视图,请在使用统一接口时使用以下 URL 模式。

[Organization Url]/main.aspx?pagetype=entitylist&etn=<entity logical name >&viewid=%7b00000000-0000-0000-0000-000000000000%7d&viewType=1039

对于旧版 Web 客户端,请使用以下 URL。

[Organization Url]/homepage.aspx?etn=<entity logical name >&viewid=%7b00000000-0000-0000-0000-000000000000%7d  

使用此 URL 时,还必须为 <Titles><Descriptions>指定适当的值,并为实体指定图标。

注释

如果通过 .../homepage.aspx 页面指定视图,则视图选择器仍将显示。 如果用户更改视图,Dynamics 365 Customer Engagement (on-premises) 会记住用户最近的选择,并在用户关闭并重新打开浏览器后显示初始默认视图。

使用 URL 打开对话进程

常见的自定义是使用户能够在特定记录的上下文中打开特定对话流程。 例如,您可能希望使用当前记录的 id 值作为对话流程的输入参数,将一个自定义按钮添加到特定实体的功能区。

要打开对话框,您需要满足以下条件:

  • 对话框的唯一标识符。

  • 为其创建对话的实体的逻辑名称。

  • 要对其运行对话的记录的唯一标识符。

小窍门

要获取对话框的唯一标识符,请导航到 “设置”,在默认解决方案中选择 “流程”。 选择一个流程,然后在命令栏上的 Actions 选项中,单击 Copy a Link。 这将把用于编辑对话框的链接复制到剪贴板,例如 [organization url]/sfa/workflow/edit.aspx?id=%7b6A6E93C9-1FE6-4C07-91A9-E0E2A7C70976%7d

以下示例显示了用于打开对话框的 URL 和查询字符串参数:

[organization url]/cs/dialog/rundialog.aspx?DialogId=[dialog unique identifier]&EntityName=[entity logical name]&ObjectId=[unique identifier for the record]  

例如,要打开 id ={6A6E93C9-1FE6-4C07-91A9-E0E2A7C70976} 且客户记录 ID = {40C9ADFD-90A8-DF11-840E-00155DBA380F} 的对话框,请使用以下示例中的 URL。

[organization url]/cs/dialog/rundialog.aspx?DialogId=%7b6A6E93C9-1FE6-4C07-91A9-E0E2A7C70976%7d&EntityName=account&ObjectId=%7b40C9ADFD-90A8-DF11-840E-00155DBA380F%7d  

小窍门

对于 Internet Explorer 以外的浏览器,如果从链接打开对话框进程,则 Finish 按钮可能不起作用。 数据将被保存,但用户需要单击窗口上的 Close 按钮来关闭它。 这是因为如果窗口不是使用 JavaScript 从另一个窗口打开的,则其他浏览器不会提供 window.close 方法。 如果可能,请使用 JavaScript 和 window.open 方法打开对话进程,而不仅仅是提供链接。

您可以创建一个 JavaScript 函数来打开对话框,如以下示例所示:

function openDialogProcess(dialogId, entityName, objectId)  
{  
 var url = Xrm.Page.context.getClientUrl() +  
  "/cs/dialog/rundialog.aspx?DialogId=" +  
  dialogId + "&EntityName=" +  
  entityName + "&ObjectId=" +  
  objectId;  
 window.open(url);  
}  

使用 URL 打开报表

您可以通过将适当的参数值传递给以下 URL 来打开报告: [organization url]/crmreports/viewer/viewer.aspx

此 URL 接受以下参数:

行动
此参数 run 的两个可能值为 或 filter。 使用run时,将使用默认过滤器显示报告。 使用时 filter ,报表将显示一个筛选器,用户可以在选择 Run Report (运行报表 ) 按钮查看报表之前编辑该筛选器。

helpID
此参数是可选的。 对于 Dynamics 365 Customer Engagement (on-premises) 中包含的报表,此参数中的值允许在选择“此页上的帮助”时,“帮助”按钮显示有关此报表的相应内容。 该值应与 report FileName 属性值相对应。

身份证
此参数是 report ReportId 属性值。

以下示例显示可用于在 Dynamics 365 Customer Engagement (on-premises) 中打开报表的 URL。

使用默认筛选器打开 Neglected Cases 报表:

[organization url]/crmreports/viewer/viewer.aspx?action=run&helpID=Neglected%20Cases.rdl&id=%7b8c9f3e6f-7839-e211-831e-00155db7d98f%7d  

打开 Top Knowledge Base Articles 报表并提示用户设置筛选器值:

[organization url]/crmreports/viewer/viewer.aspx?action=filter&helpID=Top%20Knowledge%20Base%20Articles.rdl&id=%7bd84ec390-7839-e211-831e-00155db7d98f%7d  

以下函数演示如何正确编码 URL 中的值:

function getReportURL(action,fileName,id) {  
 var orgUrl = GetGlobalContext().getClientUrl();  
 var reportUrl = orgUrl +   
  "/crmreports/viewer/viewer.aspx?action=" +  
  encodeURIComponent(action) +  
  "&helpID=" +  
  encodeURIComponent(fileName) +  
  "&id=%7b" +  
  encodeURIComponent(id) +  
  "%7d";  
 return reportUrl;  
}  

另请参阅

在客户端上扩展 Dynamics 365 Customer Engagement (on-premises)
使用传递给表单的参数设置字段值
配置表单以接受自定义查询字符串参数
使用 SiteMap 更改应用程序导航
自定义 Dynamics 365 Customer Engagement (on-premises) 的功能区Customer Engagement 中使用 JavaScript 的客户端脚本Dynamics 365 Customer Engagement (on-premises) 的 Web 资源
使用 URL 启动对话框