Dynamics 365 SSRS预筛选未关联当前打开记录问题咨询
Dynamics 365 SSRS报表ROI实体预筛选失效问题
问题背景
在Microsoft Dynamics 365环境开发SSRS报表时遇到预筛选功能异常:相同配置逻辑在其他实体上可正常运行,但在*Release of information(简称ROI,信息发布)*实体上始终无法生效。
预期效果
终端用户打开单条ROI记录时运行报表,报表自动通过预筛选仅展示当前打开记录的对应数据。
现有配置
数据源
- 在SSRS中创建名为
MSCRM_DataSource的SQL数据源。
数据集
- 主数据集命名为
Release_Of_Information,查询逻辑:
SELECT Column1, Column2, Column3 FROM FilteredReleaseOfInformation AS T1 WHERE ROIid = @SelectedForm
- 参数辅助数据集命名为
CRMAF_RoiID,查询逻辑:
SELECT ROIid AS FormID FROM FilteredReleaseOfInformation AS CRMAF_RoiID
参数
- 参数
CRMAF_RoiID:- 常规配置:名称为
CRMAF_RoiID,数据类型为Text,可见性为internal(内部) - 默认值配置:指定FetchXML值如下:
- 常规配置:名称为
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="ReleaseOfInformation"> <attribute name="RoiID" /> </entity> </fetch>
- 参数
SelectedForm:- 常规配置:名称为
SelectedForm,数据类型为Text,可见性为Hidden(隐藏) - 可用值配置:从查询获取值,关联
CRMAF_RoiID数据集,值字段、标签字段均为FormID - 默认值配置:从查询获取值,关联
CRMAF_RoiID数据集,值字段为FormID
- 常规配置:名称为
故障现象
测试环境验证时报表可正常启动运行,但始终返回查询结果中第一条GUID对应的数据,不会匹配当前打开的关联记录:无论打开哪条ROI记录,报表都固定展示第一条ROI记录的内容。
已完成排查项
- 报表已纳入对应解决方案中
- 已确认
ROIid字段在ROI实体上设置为可搜索
根因与修复方案
按排查优先级从高到低排列:
- CRMAF预筛选机制使用错误
D365 SSRS的原生预筛选逻辑是自动识别数据集查询中带CRMAF_前缀的表别名,运行时自动为对应Filtered视图追加当前上下文的过滤条件,不需要手动创建辅助数据集、配置参数映射、绑定默认FetchXML。你当前配置里给CRMAF_RoiID参数绑定的FetchXML没有携带任何当前记录的上下文过滤条件,本质是查询全量ROI表数据,所以永远返回第一条记录的GUID。
直接删除CRMAF_RoiID辅助数据集、CRMAF_RoiID和SelectedForm两个自定义参数,将主数据集查询修改为如下写法即可,系统会自动注入当前记录的过滤条件:
SELECT Column1, Column2, Column3 FROM FilteredReleaseOfInformation AS CRMAF_ROI
- 报表实体关联配置缺失
报表上传到D365环境后,打开报表配置页,在「相关记录类型」项中勾选Release of Information实体,在「显示于」项中勾选「表单」,保存后重新发布解决方案。这是自定义实体SSRS报表最容易遗漏的配置点,其他实体逻辑正常大概率是提前完成过该配置,ROI实体未配置时系统不会将当前表单的记录上下文传递给报表,预筛选自然不生效。 - Schema名称拼写校验
进入D365解决方案的ROI实体定义页,核对两个核心名称:
- 实体主键字段的Schema名:自定义实体主键默认规则为「实体Schema名+id」,如果ROI实体带有自定义发布者前缀,主键名可能不是
ROIid,例如new_roiid、msroi_roiid等,字段名拼写错误会导致过滤条件匹配失败 - 过滤视图真实名称:如果实体存在重命名、删除重建的操作记录,系统自动生成的过滤视图可能带数字后缀,例如
FilteredReleaseOfInformation1,可直接连接SQL实例查询系统视图列表确认真实名称。
- 低概率排查项
- 确认ROI实体及所有相关字段配置已完成全量发布,未存在未发布的自定义变更
- 确认运行报表的用户账号对ROI实体拥有对应层级的读权限,Filtered视图会按用户权限做数据截断,权限异常会导致返回数据不符合预期。
内容的提问来源于stack exchange,提问作者Pedram Salamati
相关产品推荐
相关产品推荐

