Salesforce做为一款CRM系统,我的以为最重要的环境即是在于数据的展现和联动,而Salesforce也自己提供了至关强大的功能,Report在展现图表的方面十分强大,前段时间更是宣布以157亿美圆收购tableau以后更是如虎添翼。虽然,其自己标准组件很强大,可是在实际项目上依旧捉襟见肘。html
话很少说,这里提一提本人在展现图表的心历路程。web
以最简单的形式,报告是知足您定义的条件的记录(如机会或账户)的列表。可是报告不只仅是简单的列表。要获取所需的数据,能够对记录进行过滤,分组和数学运算。您甚至能够在图表中以图形方式显示它们!浏览器
每一个报告都存储在一个文件夹中。报告文件夹肯定如何访问报告,以及谁能够访问它们以查看,编辑或管理。文件夹能够是公共的,隐藏的或共享的。您能够根据角色,权限,公共组,区域和许可证类型来控制谁有权访问文件夹的内容。您能够将文件夹提供给整个组织使用,也能够将其设置为私有,以便只有全部者才能访问。缓存
Report Type就像一个模版,肯定建立Reports时可使用哪些字段和记录。spa
过滤类型:code
过滤类型 | 描述 |
标准过滤 | 默认状况下, 标准过滤应用于大多数对象。不一样的对象具备不一样的标准过滤器,可是大多数对象都包括标准过滤器Show Me和Date Field。Show Me过滤器:可根据常见分组(例如“个人帐号”或“全部帐号”)过滤对象。 Date Field过滤器:根据日期字段进行过滤(如建立日期,上次活动)和日期范围(如“全部时间”或“上个月”) |
字段过滤 | 字段过滤器可用于报告,列表视图,工做流规则以及应用程序的其余区域。对于每一个过滤器,设置字段,运算符和值。 |
过滤逻辑 | 添加Boolean条件来控制字段过滤器。在使用过滤逻辑以前,至少得有一个字段过滤。 |
交叉过滤 | 使用WITH或WITHOUT条件按子对象过滤报告。添加子过滤器进一步按照子对象上的字段进行过滤。例如:若是有交叉过滤器Account with Opportunity,点击Add filter并建立子过滤器Opportunity Name Equals ACME |
行数过滤 | 对于表格报告,选择要显示的最大行数,而后选择要做为排序依据的字段和排序顺序。若是限制返回的行数,则能够将表格报告用做仪表盘或统计组件的源报表。 |
过滤逻辑:htm
操做 | 定义 |
AND | 与,必须同时知足左右条件 |
OR | 或,只需知足左右任一条件 |
NOT | 否,不知足某条件 |
例如,某表格设置了三个过滤条件,其序号分别为1,2,3,设置过滤逻辑为:1 AND (2 OR 3) ==> 表格中只展现知足条件1和(条件2或者条件3的某一个)的记录。对象
如上面所说,Filters下面为表格的过滤条件,这里设置了5个过滤条件。blog
点击Add Chart按钮,为Report添加表格排序
Visualforce详细内容:http://www.javashuo.com/article/p-tljwxadv-gn.html
<apex:page showHeader="false" controller="MeetingUsagePageController"> <apex:outputPanel > <div style="display:inline-block;width:100%;height:50%;overflow:hidden;padding-left:20%"> <analytics:reportChart reportId="00OK0000000mQaBMAU" rendered="true" showRefreshButton="true" size="huge" id="host_chart" cacheResults="true" filter="[ {column:'Web_Account__c.Id', operator:'equals',value:'{!webAccountId}' }, {column:'Site_Audio__c.Month__c', operator:'equals',value:'{!displayMonth}'}, {column:'Site_Audio__c.Site_Name__c', operator:'equals',value:'{!displaySite}'}]"> </analytics:reportChart> </div> </apex:outputPanel> </apex:page>
public with sharing class MeetingUsagePageController { Id accountId = ApexPages.CurrentPage().getparameters().get('id'); Web_Account__c account = [select Display_Months__c, Display_Site__c from Web_Account__c where Id = :accountId limit 1]; public String webAccountId { get { if(webAccountId == null) { webAccountId = accountId; } return webAccountId; }set; } // filter chart with display month public String displayMonth { get { if(displayMonth == null) { displayMonth = account.Display_Months__c; } return displayMonth; }set; } // filter data with site name public String displaySite { get { if(displaySite == null) { displaySite = account.Display_Site__c; } return displaySite; }set; } }
结果以下
View Report:点击直接跳转至对应的Report页面。
Refresh: 点击右下角的刷新按钮会刷新Visualforce Page中的图表。