Dynamics CRM 报表开发
【报表开发工具】
1、Reporting Services 需要下载 SQL Server Business Intelligence Development Studio 新建一个报表服务器项目类型的项目
2、Report Builder
两个工具的使用基本相同
【报表开发实例一:显示序号列,并且控制每页显示的行数,标题下页重复显示】
1、获取行号:=Rownumber(Nothing)
2、添加分组:父组。分组表达式:=Ceiling(Rownumber(Nothing) / 5)
3、打开列祖高级模式,设置行组的两个静态设置属性:确保 KeepTogether和RepeatOnNewPage属性设置为True,KeepWithGroup属性设置为After。第二行的 (静态) 也做同样的设置。
【报表开发实例二:直接通过实体运行报表,通过HTML地址传递报表参数】
第一步:制作带参数的报表并上传
数据集:select name from FilteredAccount where accountid=@RecordId
将@RecordId参数隐藏
第二步:获取报表的URl
<http://192.168.1.58/QDSAIWEICRM/crmreports/viewer/viewer.aspx?id=%7b63EB8AE6-3753-E811-80CB-000C299912B1%7d>
第三步:新建WEB资源(HTML)第二步的红色字体代替下面的红色字体(报表的ID)
<html>
<head>
<title>报表</title>
<script type="text/javascript">
OnLoad = function () {
var parentEntity = window.parent.Xrm.Page.data.entity;
var reporturl = window.parent.Xrm.Page.context.getClientUrl() + "/crmreports/viewer/viewer.aspx?action=run&helpID=AcctReport.rdl&id=%7bD9FF2901-B35B-E311-89D8-00155D016703%7d&p:RecordId="
+ parentEntity.getId();
var reportFrame = document.getElementById("reportContainer");
reportFrame.src = reporturl;
};
</script>
</head>
<body onload="OnLoad();">
<div id="container">
<iframe id="reportContainer" src="about:blank" width="100%" height="120%" style="position:absolute;left:0;top:-95px;"></iframe>
</div>
</body>
</html>
第四步:在客户窗体导航中加入导航连接选择第三步的WEB资源上传
第五步:测试
【报表开发实例三:使用CRM预置参数】
参数名称
描述
CRM_FilterText
包含用户运行报表时报表用户在报表查看器中交互创建的过滤器文本的值。该参数位于报告标题中的过滤器摘要文本框中。初始值设置为默认过滤器。
CRM_URL
设置为Microsoft Dynamics CRM Web应用程序的URL。钻取Microsoft Dynamics CRM时使用此参数。
CRM_FilteredEntity
用于查询表达式以启用数据预过滤(通过高级查找)。
CRM_FullName
报表正在运行的用户的全名。
CRM_UserTimeZone
用户的时区名称,例如太平洋标准时间。
CRM_UILanguageId
用户的当前区域设置(LCID)。
CRM_YearStartWeekCode
Microsoft Dynamics CRM 2011中使用的一年中的第一周。
CRM_WeekStartDayCode
Microsoft Dynamics CRM 2011中使用的第一天的第一天。
CRM_FiscalCalendarStart
Microsoft Dynamics CRM 2011中使用的会计年度的开始日期。
CRM_FiscalPeriodType
指定会计年度的划分方式,季度,每月,每年等。
CRM_FiscalYearDisplayCode
指定会计年度名称是根据会计年度何时开始或何时结束显示的。
CRM_FiscalYearPeriodConnect
指定一起显示时如何连接会计年度和会计期间。
CRM_FiscalYearFormat
指定如何显示会计年度的名称。
CRM_FiscalPeriodFormat
指定如何显示会计期间。
CRM_FiscalYearPrefixFormat
指定是否在显示会计年度时附加前缀。
CRM_FiscalYearSuffixFormat
指定是否在显示会计年度时附加后缀。
CRM_CurrencyDecimalPrecision
货币小数精度。
CRM_CurrencySymbol
该组织的货币符号。
CRM_CurrencyPositivePattern
正货币值的格式模式。
CRM_CurrencyNegativePattern
负值货币值的格式模式。
CRM_NumberDecimalDigits
数字值中使用的小数位数。
CRM_NumberDecimalSeperator
数字值中用作小数点分隔符的字符串。
CRM_NumberNegativePattern
负数值的格式模式。
CRM_NumberGroupSizes
数字值中小数点左边各组中的位数。
CRM_NumberGroupSeperator
以数字值分隔小数点左边的数字组的字符串。
CRM_DateSeperator
用于分隔日期组件的字符串,如年,月和日。
CRM_TimeSeperator
分隔时间组件的字符串,例如小时,分钟和秒。
CRM_AMDesignator
分隔时间组件的字符串,例如小时,分钟和秒
CRM_PMDesignator
几个小时的指定者是“post meridiem”(PM)。
CRM_ShortDatePattern
用于与“d”格式模式关联的短日期值的格式模式。
CRM_LongDatePattern
与“D”格式模式关联的长日期值的格式模式。
CRM_ShortTimePattern
与“t”格式模式关联的短时间值的格式模式。
CRM_MonthDayPattern
与“m”和“M”格式模式关联的月份和日期值的格式模式。
要使用这些参数很简单,在报表的报表数据中的参数文件夹右击,选择 增加参数, 名称输入上面的名称,记得将 选择参数可见性 的值设置为 隐藏。
然后在CRM的报表中就可以使用了,比如我这里是将报表的一个文本框的 表达式 设置为刚才这个参数的值。
运行结果:
【报表开发实例四:发布外用报表】
发布外用报表:可以通过浏览器直接访问报表。可用于传参及转换为PDF附件使用
第一步:打开Reporting Service 配置管理器>报表管理器URL
第二步:进入CRM 销售>报表>发布为外用报表就能在上步文件夹中展示出来
第三步:可以管理报表
第四步;这个发布为外用报表以后我们就可以通过url直接访问了。你看我输入网址:http://win-2b9f088ifvq/Reports/Pages/Report.aspx?ItemPath=%2fQDSAIWEICRM_MSCRM%2f111
就可以在浏览器中打开这个报表。
如果你在这个URL的后面加上&rc:NoHeader=false&rc:Toolbar=false ,就会隐藏Header和Toolbar,如下所示:
http://win-2b9f088ifvq/Reports/Pages/Report.aspx?ItemPath=%2fQDSAIWEICRM_MSCRM%2f111&rc:NoHeader=false&rc:Toolbar=false
如果你换成这个网址 http://crm2013/ReportServer/Pages/ReportViewer.aspx?%2fDemo_MSCRM%2fAcctReport&rs:Command=Render&rs:format=PDF ,就会将报表以PDF的形式传递给你。
如果不能通过URL为外用报表传递参数值,那就用途十分有限,所以当然是可以的。看官请看,这个报表有个隐藏参数叫RecordId,我可以通过URL传递参数值过去,客户的名称和前面的截图不一样了。这个截图使用的网址是:
http://crm2013/ReportServer?%2fDemo_MSCRM%2fAcctReport&rs:Command=Render&rc:NoHeader=false&rc:Toolbar=false&RecordId=09E0A455-8132-E311-A4EC-00155D016703
注意上面URL的写法哦,这是属于SSRS的范围了,我也仅仅了解一些,欢迎大家补充。
上面的生成PDF给是给我们有什么用?最有用的可能就是用插件或者工作流执行.NET 中的HttpWebRequest类访问这个网址,拿到这个PDF,作为附件放到记录中,作为发票,历史记录,自动生成报表啊,等等。
【利用Fetch XML进行报表开发】
1.获取Fetch XML文件
高级查找
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="opportunity">
<attribute name="name" />
<attribute name="estimatedvalue" />
<attribute name="estimatedclosedate" />
<attribute name="closeprobability" />
<attribute name="oc_productapplicationid" />
<attribute name="oc_mainprojectid" />
<attribute name="oc_followupstage" />
<attribute name="oc_factoryid" />
<attribute name="oc_designcode" />
<attribute name="oc_cityid" />
<attribute name="oc_biddingcode" />
<attribute name="parentaccountid" />
<attribute name="oc_projectcode" />
<attribute name="modifiedon" />
<attribute name="oc_salepersonid" />
<attribute name="oc_customersalesperson" />
<attribute name="oc_provinceid" />
<attribute name="oc_address" />
<attribute name="oc_producttypeid" />
<attribute name="customerneed" />
<attribute name="description" />
<attribute name="oc_tendercode" />
<attribute name="finaldecisiondate" />
<attribute name="opportunityid" />
<order attribute="modifiedon" descending="true" />
<order attribute="name" descending="false" />
<filter type="and">
<condition attribute="statecode" operator="in">
<value>0</value>
<value>1</value>
<value>2</value>
</condition>
</filter>
<link-entity name="account" from="accountid" to="parentaccountid" visible="false" link-type="outer" alias="a_76946cd0245c4349bbb98a1ed211155a">
<attribute name="accountcategorycode" />
</link-entity>
</entity>
</fetch>
2. 新建报表项目。打开SQL Server Business Intelligence Development Studio,点击 文件 > 新建 > 项目,项目类型选择 商业智能项目 中的 报表服务器项目,为该项目命个名字。
3. 新建报表。在右边的解决方案资源管理器中的报表文件夹右击,选择 添加 > 新建项,模板选择报表,我这里命名为 OpportunityReport.rdl ,然后点击添加按钮。
4. 添加数据源。在左边的 报表数据中 选择 数据源,右击,选择 添加数据源,名称我输入CRM,嵌入链接的类型我选择 Microsoft Dynamics CRM Fetch,连接字符串的输入格式是:将组织的url
5. 添加数据集。右击上一步骤添加的数据源,选择 添加数据集 ,在查询下面的文本框中输入我们之前拿到的FetchXML,然后点击 刷新字段 按钮,然后点击 确定 按钮关闭该对话框。你会看到数据集中出来了不少字段。
6. 制作报表。
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> 。然后点击确定关闭这个窗口。
8. 更改Dataset增加一个参数。然后双击 DataSet1 ,在参数中增加一个参数,参数名称设置为 CRM_FilteredOpportunity ,参数值设置为 [@CRM_FilteredOpportunity] ,然后点击 查询 ,修改查询的文本,主要是对主实体opportunity增加属性 enableprefiltering="1" prefilterparametername="CRM_FilteredOpportunity" ,如后图所示
9. 上传报表。导航到 设置 > 自定义 > 自定义项 > 自定义系统,选择 新建 > 报表,报表类型选择现有文件,然后点击浏览按钮选择报表文件,我这里是 OpportunityReport.rdl,起个名字,选择类别为销售报表,相关记录类型选择 商机,显示于选择你想要显示的地方,然后点击保存,在点击 发布所有自定义项。PS:也可以在 工作区 > 我的工作 >报表 新建报表,这里新建则不需要发布,方便。