本文介绍如何在 Dynamics 365 使用 FetchXML 进行自定义的报表开发,内容分为两部分包括:
- 环境搭建
- 实例演练
第一部分:环境搭建
请按顺序执行以下步骤,否则会出现意想不到的问题
- Visual studio 2019 → 开发环境
- SQL Server Data Tools → 报表设计基础工具
- Microsoft Reporting Services Projects 下载
- 重启电脑 → 确保组件正确加载
- 安装 Dynamics 365 Report Authoring Extension 下载
💡 重要提示:完成第 3 步安装后必须重启计算机,再继续安装 Dynamics 365 扩展。
第二部分:实例 - 创建"用户最后登录时间"报表
实例/功能描述:获取用户最后一次登录时间
步骤 1:创建报表项目
- 打开 Visual studio 2019,创建报表项目
- 打开 Visual Studio 2019,选择"创建新项目"
- 在搜索框中输入"报表",选择"报表服务器项目"
- 点击"下一步",输入项目名称后创建项目

项目创建成功后,文件结构如下:

步骤 2:添加报表文件
- 右击"报表"文件夹
- 选择"添加" → “新建项”
- 选择"报表"模板,输入报表名称

步骤 3:配置数据源
- 右击"数据源"文件夹 → “添加新数据源”
- 设置数据源属性:
- 名称:建议使用"DynamicsCRMDataSource"
- 类型:选择"Microsoft Dynamics 365 Fetch"
- 连接字符串:格式为
{环境URL}/{环境唯一名称}
温馨提示
1️⃣ 如果"报表数据"面板被关闭,按 Ctrl + Alt + D 重新打开
2️⃣ 连接字符串获取方法见文末"获取连接字符串"部分

步骤 4:准备 FetchXML 查询
<fetch aggregate="true">
<entity name="audit">
<attribute name="createdon" alias="LastLoginDate" aggregate="max" />
<filter>
<condition attribute="operation" operator="eq" value="4" />
</filter>
<link-entity name="systemuser" from="systemuserid" to="objectid" link-type="inner" alias="SystemUser">
<attribute name="fullname" alias="FullName" groupby="true" />
<attribute name="domainname" alias="DomainName" groupby="true" />
<attribute name="isdisabled" alias="IsDisabled" groupby="true" />
<attribute name="accessmode" alias="AccessMode" groupby="true" />
<attribute name="userlicensetype" alias="UserLicenseType" groupby="true" />
</link-entity>
</entity>
</fetch>
步骤 5:创建数据集
- 右击"数据集"文件夹 → “添加数据集”
- 配置数据集属性:
- 使用"嵌入在报表中的数据集"
- 选择之前创建的 DynamicsCRMDataSource
- 查询类型选择"文本"
- 粘贴上述 FetchXML 代码
注意:首次连接时会弹出 Dynamics 365 登录框,请使用开发账号登录。

步骤 6:设计报表界面
- 添加标题:从工具箱拖拽"文本框"控件,输入报表标题
- 添加表格:拖拽"表"控件到设计区域,设计列标题和样式


步骤 7:绑定数据字段
以"用户名称"列为例:
- 右击单元格 → 选择"表达式"
- 在表达式编辑器中,双击"字段"下的"FullName"
- 点击"确定"完成绑定。

重复上述步骤,为所有列绑定对应字段:

步骤 8:预览报表
点击"Preview"选项卡查看报表效果:

最终效果展示:

步骤 9:发布到 Dynamics 365
- 进入 Power Apps 门户,创建或打开解决方案
- 点击"新建" → 选择"报表"
- 上传.rdl 文件,填写报表名称



💡 在 Dynamics 365 中,自定义报表主要分为两类:
1️⃣ 全局类报表 - 如本例所示,可通过报表实体或视图工具栏访问
2️⃣ 单记录类报表 - 通常嵌入在业务记录表单中,接收特定记录的 GUID 作为参数
附录:获取连接字符串
连接字符串格式
{环境URL}/{环境唯一名称}
示例
- 环境 URL:https://sample.crm.dynamics.cn
- 环境唯一名称:123456789
- 完整连接字符串:https://sample.crm.dynamics.cn/123456789
获取环境“唯一名称”的方法
方法一:UCI 界面(推荐))

方法二:经典 UI 界面
- 设置 → 自定义项 → 开发人员资源
- 在页面中查找"实例唯一名称"

如果本文对你有所帮助,可以请我喝杯咖啡
(完)