在前一篇文章中,我向大家介绍了如何创建基于SQL的自定义报表。由于CRM ">Online只支持基于Fetch的报表,所以我在这篇文章中再向大家介绍一下如何创建基于Fetch的报表,并使用数据预筛选功能。
(1) 打开Business Intelligence Development Studio,创建一个新的report server 项目;
(2) 在项目管理器中,右键单击Reports文件夹,添加新项目,选择report;
在Report Data面板中,选择New –> Data Source
完成Data Source的属性:
(3)接下来在Report Data面板中添加一个新的Data Set。
使用的Query可以通过CRM的advanced Find –> Download Fetch XML来查看。
这里使用的Query为
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="opportunity">
<attribute name="name" />
<attribute name="estimatedvalue" />
<attribute name="estimatedclosedate" />
<order attribute="name" descending="false" />
</entity>
</fetch>
(4) 在报表中添加一个table,如下图所示:
(5) 此时你已经可以通过Preview来查看你的报表运行结果了,不过我们把它还是上传到CRM中来看一看。
上传之后,你会发现,不论你在哪运行这个报表,这个报表都返回所有的opportutnity,不具有数据预筛选功能,所以我们要对报表进行修改。
(6) 要开启数据预筛选功能,需要使用一个CRM系统参数 CRM_FilteredEntity。当然Entity在我们的报表中是Opportunity。
在Report Data面板中添加一个参数:
这里使用的Value为:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"><entity name="opportunity"><all-attributes /></entity></fetch>
(7) 更改Dataset 的属性: 首先添加一个参数
(8) 然后更改Query
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="opportunity" enableprefiltering="1" prefilterparametername="CRM_FilteredOpportunity">
<attribute name="name" />
<attribute name="estimatedvalue" />
<attribute name="estimatedclosedate" />
<order attribute="name" descending="false" />
</entity>
</fetch>
(9) 为了方便大家理解参数CRM_FilteredOpportunity 的工作原理,我们在报表中添加一个Textbox,把CRM_FilteredOpportunity 参数的值显示在里边。
(10)要注意,先在CRM中删除原来的报表,然后再重新上传,不然CRM是不知道我们启用了数据预筛选功能的。
(11) 这回当我们在opportunity的grid中运行报表时,我们看到数据预筛选功能开启了:
到这里,我们的报表就完成了。
在本文中,我向大家介绍了如何创建基于Fetch的自定义报表,并且使用数据预筛选(Pre-Filtering)的功能。总结一下,就是加上了一个CRM系统参数 CRM_FilteredEntity,并且在Query中使用这个参数(enableprefiltering="1" prefilterparametername="CRM_FilteredOpportunity"),就可以启用数据预筛选功能了。