本文介绍如何在 Dynamics 365 使用 FetchXML 进行自定义的报表开发,内容分为两部分包括:
(一)环境搭建
(二)实例演练

(一)环境搭建

请按照顺序进行操作,否则会出现意想不到的问题

  1. Visual studio 2019
  2. SQL Server Data Tools
  3. Microsoft Reporting Services Projects 下载
  4. 重启电脑
  5. 安装Dynamics 365 Report Authoring Extension 下载

(二)实例演练

实例描述(功能描述):获取用户最后一次登录时间

Step 1. 创建项目

打开 Visual studio 2019,创建报表项目

  • 新建项目
  • 搜索"报表",选择 "报表服务器项目",点击 "下一步"
  • 填写 "项目名称" ,点击 "创建"

Visual studio 2019 创建报表项目

Visual studio 2019 创建报表项目

至此,我们已经完成了报表项目的创建,项目文件结构如下:

Visual studio 2019 报表项目文件结构

Visual studio 2019 报表项目文件结构

Step 2. 添加报表

  1. 选中 "报表" 文件夹 , 右击它
  2. 选中 "添加" , 再选择 "新建项"
  3. 选择报表 ,输入报表名称,点击添加

Visual studio 2019 添加报表

Visual studio 2019 添加报表

至此,报表添加完成,界面如下

Visual studio 2019 报表添加完成

Visual studio 2019 报表添加完成

Step 3. 添加数据源

  1. 选中 "数据源" 文件夹 , 右击它 , 选中 "添加数据源"
  2. 填写 "添加数据源名称"
  3. 类型 选择 Microsoft Dynamics 365 Fetch
  4. 输入 "连接字符串" ,点击 "确定",(连接字符串怎么获取?,请参考本文 获取连接字符串 部分)

点击添加数据源

点击添加数据源

填写数据源属性信息
填写数据源属性信息

说明

  1. 如果“报表数据”选项卡被你不小心关掉了,可以通过快捷键 Ctrl + Alt + D 打开
  2. 关于数据源名称,可以根据个人习惯进行命名;我习惯写 "DynamicsCRMDataSouce",这个名称无所谓,你用默认的也可以,后面都可以修改的

Step 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>

Step 5. 添加数据集

  1. 右击数据集文件夹,选择添加数据集
  2. 填写 "数据集名称",选择 "使用在我的报表中嵌入的数据集" ,选择刚刚我们添加的DynamicsCRMDataSouce数据源
  3. 查询类型选择“文本”,填写Fetch,最后点击“确定”(点击“确定”后如果弹出登录框,登录自己的开发账号即可)

添加数据集

添加数据集

填写数据集信息
填写数据集信息

Step 6. 报表设计

  1. 选择工具箱中的“文本框”,拖到报表设计界面,然后填写标题
    添加文本框组件
    添加文本框组件
  2. 选择工具箱中的“表”,拖到报表设计界面,在输入列标题,样式可以根据自己需求进行调整
    添加表格组件
    添加表格组件

Step 7. 数据绑定

以 “用户名称” 列举例:右击用户名下边的空格,选择“表达式”

选择“字段”,然后双击“FullName”,双击后表达式会自动更新。

当然,表达式你也可以自己手写进去。

数据绑定

数据绑定

最后点击 "确定",然后依次为其他列绑定数据

为各列添加表达式

为各列添加表达式

Step 8. 测试(预览)报表

点击 Preview 页签即可

预览报表

预览报表

效果:
效果

效果

Step 9. 发布报表

  1. 进入Power Apps --> 新建解决方案 --> 点击 "新建" --> 选择 "报表"
    在解决方案新添报表
    在解决方案新添报表

填写 “报表名称” ,最后点击“保存”
填写报表信息

填写报表信息

恭喜你!现在实例已经完成,你可以到报表实体中打开并预览它

在环境中打开报表

在环境中打开报表

在Dynamics 365中,自定义开发的报表我一般归为两类:

  • "全局类报表" : 本次实例做的就是这类报表,这类报表的执行位置通常放在报表实体、某业务实体的视图按钮栏上,本实例就属于这类报表
  • "单记录类报表" : 这类报表通常放在业务记录的表单上,参数主要取某条业务记录的Guid

获取连接字符串

连接字符串的格式 : {环境URL}/{环境唯一名称}
例:

  • 环境URL:https://sample.crm.dynamics.cn
  • 环境唯一名称:123456789
  • 连接字符串:https://sample.crm.dynamics.cn/123456789

如何获取环境唯一名称?
(一)UCI界面

  1. 打开Power Apps:国际版世纪互联版
  2. 点击右上角的设置按钮,选择 "开发人员资源"

UCI界面获取环境唯一名称

UCI界面获取环境唯一名称

环境唯一名称
环境唯一名称

(二)经典UI界面

  1. 设置 --> 自定义项
  2. 选择 "开发人员资源"

经典UI界面打开自定义项

经典UI界面打开自定义项

选择自定义项
选择自定义项

环境唯一名称
环境唯一名称