Salesforce学习之路-developer篇(四)Visualforce结合Reports展现图表

Salesforce做为一款CRM系统,我的以为最重要的环境即是在于数据的展现和联动,而Salesforce也自己提供了至关强大的功能,Report在展现图表的方面十分强大,前段时间更是宣布以157亿美圆收购tableau以后更是如虎添翼。虽然,其自己标准组件很强大,可是在实际项目上依旧捉襟见肘。html

话很少说,这里提一提本人在展现图表的心历路程。web


 

1. 什么是报告?

以最简单的形式,报告是知足您定义的条件的记录(如机会或账户)的列表。可是报告不只仅是简单的列表。要获取所需的数据,能够对记录进行过滤,分组和数学运算。您甚至能够在图表中以图形方式显示它们!浏览器

每一个报告都存储在一个文件夹中。报告文件夹肯定如何访问报告,以及谁能够访问它们以查看,编辑或管理。文件夹能够是公共的,隐藏的或共享的。您能够根据角色,权限,公共组,区域和许可证类型来控制谁有权访问文件夹的内容。您能够将文件夹提供给整个组织使用,也能够将其设置为私有,以便只有全部者才能访问。缓存

2. 建立新的报告

建立Reprot Tyep

Report Type就像一个模版,肯定建立Reports时可使用哪些字段和记录。spa

  • 点击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。  

添加过滤条件

过滤类型: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的某一个)的记录。对象

建立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个过滤条件。blog

    • 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详细内容:http://www.javashuo.com/article/p-tljwxadv-gn.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中的图表。

相关文章
相关标签/搜索