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中的圖表。