Salesforce作為一款CRM系統,個人覺得最重要的環境便是在於數據的展示和聯動,而Salesforce也本身提供了相當強大的功能,Report在展示圖表的方面十分強大,前段時間更是宣布以157億美元收購tableau之后更是如虎添翼。雖然,其本身標准組件很強大,但是在實際項目上依舊捉襟見肘。
話不多說,這里提一提本人在展示圖表的心歷路程。
1. 什么是報告?
以最簡單的形式,報告是滿足您定義的條件的記錄(如機會或帳戶)的列表。但是報告不僅僅是簡單的列表。要獲取所需的數據,可以對記錄進行過濾,分組和數學運算。您甚至可以在圖表中以圖形方式顯示它們!
每個報告都存儲在一個文件夾中。報告文件夾確定如何訪問報告,以及誰可以訪問它們以查看,編輯或管理。文件夾可以是公共的,隱藏的或共享的。您可以根據角色,權限,公共組,區域和許可證類型來控制誰有權訪問文件夾的內容。您可以將文件夾提供給整個組織使用,也可以將其設置為私有,以便只有所有者才能訪問。
2. 創建新的報告
創建Reprot Tyep
Report Type就像一個模版,確定創建Reports時可以使用哪些字段和記錄。
- 點擊Setup--> Report Types
- 點擊New Custom Report Type
-
- Primary Object: 這里指Report數據的對象,這里選擇的是Account。注意,這里不能選utilization對象,因為utilization被Account關聯,所以主對象是Account。如果分不清,可以查看記錄的Related。例如:對象A記錄的Realted列表中含有對象B,那么對象A便為Primary object。
- Store in Category: 是指該Report Type存放的目錄,在創建新Report時會用到。
- 點擊Next,創建自定義數據集合。
-
- Each "A" record must have at least one related "B" record: 對象A的記錄必須有對象B的關聯信息,即選擇對象A的Related列表中對象B不為空的記錄。
- "A" records may or may not have related "B" records: 選擇對象A的所有數據,無論對象A的Related列表中是否包含對象B。
添加過濾條件
過濾類型:
過濾類型 | 描述 |
標准過濾 | 默認情況下, 標准過濾應用於大多數對象。不同的對象具有不同的標准過濾器,但是大多數對象都包括標准過濾器Show Me和Date Field。Show Me過濾器:可根據常見分組(例如“我的賬號”或“所有賬號”)過濾對象。 Date Field過濾器:根據日期字段進行過濾(如創建日期,上次活動)和日期范圍(如“所有時間”或“上個月”) |
字段過濾 | 字段過濾器可用於報告,列表視圖,工作流規則以及應用程序的其他區域。對於每個過濾器,設置字段,運算符和值。 |
過濾邏輯 | 添加Boolean條件來控制字段過濾器。在使用過濾邏輯之前,至少得有一個字段過濾。 |
交叉過濾 | 使用WITH或WITHOUT條件按子對象過濾報告。添加子過濾器進一步按照子對象上的字段進行過濾。例如:如果有交叉過濾器Account with Opportunity,點擊Add filter並創建子過濾器Opportunity Name Equals ACME |
行數過濾 | 對於表格報告,選擇要顯示的最大行數,然后選擇要作為排序依據的字段和排序順序。如果限制返回的行數,則可以將表格報告用作儀表盤或統計組件的源報表。 |
過濾邏輯:
操作 | 定義 |
AND | 與,必須同時滿足左右條件 |
OR | 或,只需滿足左右任一條件 |
NOT | 否,不滿足某條件 |
例如,某表格設置了三個過濾條件,其序號分別為1,2,3,設置過濾邏輯為:1 AND (2 OR 3) ==> 表格中只展示滿足條件1和(條件2或者條件3的某一個)的記錄。
創建Reprot
- 點擊九宮格(App Launcher),在All Items下找到Reports並點擊
- 點擊New Report
- 選擇Report Type
- 這里選擇上面創建的Account & utilization數據集,然后點擊Continue,進入Report的創建界面
-
- Columns: 點擊左側的Fields,可以看到所有可選擇的字段,但是在我們的實際需求中,可能Report中只需要展示部分字段,那么將需要展示的字段添加到Columns字段下,添加的方法很簡單,1)在左側選中字段后拖拽到Columns下面;2)在Columns的搜尋框中搜尋相應字段,並選擇。
- Groups: 如果需要針對某個字段進行分組,例如創建直方圖時需要選擇橫坐標進行分組,可將對應字段拖拽至Group Rows下,或者在Group Rows的搜尋框中添加。
- 添加過濾條件
如上面所說,Filters下面為表格的過濾條件,這里設置了5個過濾條件。
-
- Show Me和Create Date為標准過濾,分別設置為:All accounts 和All Time
- 條件1,條件2,條件3為自定義過濾,並為自定義條件加上過濾邏輯(默認為所有條件AND)
添加表格
點擊Add Chart按鈕,為Report添加表格
- 右邊選擇Chart展示的類型,Salesforce自帶有8中類型:Bar, Column, Stacked Bar, Stacked Column, Line, Donut, Funnel, Scatter plot,可根據需求自行設置不同格式圖標。
- X-Axis: 橫坐標,對應Outline中Groups下的字段。
- Y-Axis: 縱坐標,對應Columns下的number或Currency類型的字段(可計數字段,並且在字段前會加上#符號)。
- Plot on Second Axis: 第二坐標。
3. 創建Visualforce Page
Visualforce詳細內容:https://www.cnblogs.com/cloudman-open/p/11635346.html
Markup-視圖
<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>
- Controller:綁定的類名稱。
- analytics:reportChart:該組件可將Salesforce報告圖表添加到Visualforce頁面。該組件在API版本29.0或更高版本中可用。
- reportId:Report的ID,找到對應表格並打開,瀏覽器中URL為https://***.force.com/lightning/r/Report/00OK0000000mQaBMAU/view, Report后面的便是reportId。
- showRefreshButton: 是否展示刷新按鈕,true表展示刷新按鈕,false表不展示刷新按鈕。
- Size:表格展示的尺寸,分為:tiny, small, medium, large, huge。
- cacheResults:顯示圖表時是否使用緩存的數據。當該屬性設置為true時,數據將緩存24小時,但是您可以使用cacheAge屬性修改時間長度。如果該屬性設置為false,則每次刷新頁面時都會運行報告。
- filter:除報表中已有的字段過濾器外,還按字段過濾報表圖表以獲取特定數據。請注意,一個報告最多可以包含20個字段過濾器。過濾器具有以下JSON字符串形式的屬性:
- 列:您要過濾的字段的API名稱。
- 運算符:您要用來過濾字段的條件的API名稱。例如,要按“不等於”進行過濾,請使用API名稱“ notEqual”。
- 值:過濾條件。
Controller-控制類
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中的圖表。