1. 获取FetchXML。因为FetchXML难以撰写,所以我们一般都是使用高级查找来生成FetchXML或者通过其他工具来生成。我这里在商机界面通过高级查找制作了一个新的视图,名称为 商机查询, 查询结果如下所示:
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/LljRZU_f5wLQCPQ8W4R2kA==/6597737170216437108.png)
然后我将下载的Fetch XML放在桌面上,名称为 FetchXML.xml,其中的文本如下:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="opportunity">
<attribute name="name" />
<attribute name="customerid" />
<attribute name="estimatedvalue" />
<attribute name="opportunityid" />
<attribute name="estimatedclosedate" />
<order attribute="name" descending="false" />
<filter type="and">
<condition attribute="statecode" operator="eq" value="0" />
<condition attribute="ownerid" operator="eq-userid" />
</filter>
<link-entity name="account" from="accountid" to="customerid" alias="ac">
<attribute name="numberofemployees" />
<filter type="and">
<condition attribute="accountid" operator="not-null" />
</filter>
</link-entity>
</entity>
</fetch>
2. 新建报表项目。打开SQL Server Business Intelligence Development Studio,点击 文件 > 新建 > 项目,项目类型选择 商业智能项目 中的 报表服务器项目,为该项目命个名字。
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/gi_qXHJbat2qvakNDxhBIA==/3233584532552218635.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/jL095QW6GJDHMFeVkjdgww==/6599302874772480195.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img2.ph.126.net/uKkJtvWp21UdFdXocUAgAg==/6597228096333127235.png)
4. 添加数据源。在左边的 报表数据中 选择 数据源,右击,选择 添加数据源,名称我输入CRM,嵌入链接的类型我选择 Microsoft Dynamics CRM Fetch,连接字符串的输入格式是:将组织的url,比如http://crmserver:5555/DefaultOrg 中的倒数第一个斜线换成分号。然后在数据源中的凭据中选择 使用此用户名和密码,然后输入用户名和密码。
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img1.ph.126.net/HaY5ybotLSoISuAsHN0DBA==/1952873388518725636.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img2.ph.126.net/R3ABZi1fE_v6Xy_6Gl9CbQ==/1501950475828233605.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img2.ph.126.net/893ICqRNEtIg_UHRXgqyHw==/1892637743502797654.png)
5. 添加数据集。右击上一步骤添加的数据源,选择 添加数据集 ,在查询下面的文本框中输入我们之前拿到的FetchXML,然后点击 刷新字段 按钮,然后点击 确定 按钮关闭该对话框。你会看到数据集中出来了不少字段。
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/QFIUzyyAGak52St0CwTeog==/617837573897810943.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/6CmUo78CSubL-jdWpIK95g==/2296272860105688645.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/gTDnS8riRMq0p7QiiahgfA==/2281354686256881978.png)
6. 制作报表。打开报表的工具箱,将一个表拖动到设计界面,然后将要显示的字段,比如name,customerid,estimatedvalueValue,estimatedcloseddateValue,ac_numberofemployeesValue 拉到表的列中,并稍微下设置格式,更改列标题。完成后效果如下图所示,然后点击设计旁边的预览可以看到效果。然后点击全部保存将它保存下来。注意,拉到报表中的列一般要用自动加上Value的那些列。
如果要格式化请参考文章 Personalizing Reports for Microsoft Dynamics CRM Online 。
CRM Reporting Undocumented Feature Uncovered
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img1.ph.126.net/UoATc9jlH0uqJtgJBIqQsA==/2552415088830254029.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img1.ph.126.net/CXe9bh4B4DWKmbfvyKokYg==/6597641512704820498.png)
7. 开启报表的预筛选功能。右击报表数据中的参数文件夹,选择 添加参数,名称设置为 CRM_FilteredOpportunity ,(ps:对于CRM中的报表,以CRM_开头的参数是会自动变成隐藏参数,因为本查询主要实体是Opportunity,所以命名为CRM_FilteredOpportunity)选择参数可见性设置为 隐藏 。在默认值中指定默认值,指定的默认值为 <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"><entity name="opportunity"><all-attributes /></entity></fetch> 。然后点击确定关闭这个窗口。
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/V1nENYh7FqYlBW4xN4xOJw==/1609755391908550434.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img2.ph.126.net/d6JtpTW8NIwvAO9_Lg5TMA==/1952310438565420067.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img1.ph.126.net/Cjbf9uohKS1shfedEduyVg==/186899384553910114.png)
8. 更改Dataset增加一个参数。然后双击 DataSet1 ,在参数中增加一个参数,参数名称设置为 CRM_FilteredOpportunity ,参数值设置为[@CRM_FilteredOpportunity] ,然后点击 查询 ,修改查询的文本,主要是对主实体opportunity增加属性 enableprefiltering="1" prefilterparametername="CRM_FilteredOpportunity" ,如后图所示。
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img2.ph.126.net/mSTCTVs_L2A9PCyIqoUKAQ==/2480638969769156648.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img2.ph.126.net/Bq60bKfL06DYkP-kYqwHHw==/1961880587773949033.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/CSrauZ7TvMb7-SB46v5uBg==/1953436338472262697.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/4OLlP2tM0GuhzWoHYj5X7A==/3242310256830250182.png)
10. 测试报表。导航到 销售 > 商机,点击 运行报表 > 我的商机报表,在弹出的页面中做合适的选择后,点击 运行报表 按钮,一会儿报表就运行出来了。
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/pzdQZ-5dvoBEPM09RvH0Mw==/909445649852492892.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/MTcC2lUaGY1HfrAPVnRsrw==/897342225854144448.png)
![Dynamics CRM: 创建基于FetchXML的报表 - 罗勇 - 罗勇的博客](http://img0.ph.126.net/pN5zp8gQsjWj8Rsm-l-lnQ==/1570348895086771497.png)