Hello Account (Visualforce Remote Objects)

Visualforce Remote Objects で Hello Account。

<apex:page>
  <apex:remoteObjects >
    <apex:remoteObjectModel name="Account" jsShorthand="Acct" fields="Id, Name">
      <apex:remoteObjectField name="Text1__c" jsShorthand="txt"/>
    </apex:remoteObjectModel>
  </apex:remoteObjects>

  <script>
    var doGetAccounts = function() {
      new SObjectModel.Acct().retrieve({ limit: 5 }, function(err, records, event) {
        if(err) {
          console.log(err.message);
        } else {
          records.forEach(function(record) {
            console.log(record.get("Name"));
          });
        }
      });
    };
  </script>

<button onclick="doGetAccounts()">Hello Account</button>

</apex:page>

Hello Account (JavaScript Remoting)

JavaScript Remoting で Hello Account。

<apex:page controller="HelloAccountRemoter">
    
<script type="text/javascript">
  function doGetAccounts() {
      HelloAccountRemoter.getAccounts(
        function(result, event) {
            for (var i = 0; i < result.length; i++) {
                console.log(result[i].Id, result[i].Name);
            }
        },
        {escape: true}
      );
  } 
</script>
    
<apex:form id="formId">
	<apex:commandButton onclick="doGetAccounts()" value="hello" rerender="formId" />
</apex:form>
    
</apex:page>

Hello Account (Ajax Toolkit)

Ajax Toolkit で Hello Account。

<apex:page >

<script src="/soap/ajax/31.0/connection.js" type="text/javascript"></script>
<script src="/soap/ajax/31.0/apex.js" type="text/javascript"></script>  

<script type="text/javascript">
  function getAccounts() {
    sforce.connection.sessionId = "{!$Api.Session_ID}";
    var accounts = sforce.connection.query("SELECT Id, Name FROM Account").getArray("records");
    for (var i = 0; i < accounts.length; i++) {
      console.log(accounts[i].Id, accounts[i].Name);
    }
  }
</script>

<apex:form >
    <apex:commandButton value="hello" onclick="getAccounts();"/>
</apex:form>

</apex:page>

Hello Account (Apex and Visualforce)

Apex と Visualforce で Hello Account。

public with sharing class HelloAccountController {

  public List<Account> acctList {get; set;}

  public PageReference getAccounts() {
    acctList = [SELECT Id, Name FROM Account];
    return null;
  }
}
<apex:page controller="HelloAccountController">
    
    <apex:form >
        <apex:commandButton value="hello" action="{!getAccounts}" rerender="dtb" />
    </apex:form>
    
    <apex:dataTable var="acct" value="{!acctList}" id="dtb">
        <apex:column value="{!acct.Id}" />
		<apex:column value="{!acct.Name}" />
    </apex:dataTable>
    
</apex:page>

Visualforce でレポート表示

analytics:reportChart コンポーネントを利用することで、既存のレポートを表示することができる。

cap1

<apex:page >
    <analytics:reportChart reportId="00OO0000000G1hd" />
    <analytics:reportChart reportId="00OO0000000G1hd" filter="{column:'STAGE_NAME', operator:'equals', value:'Closed Won'}" />
    <analytics:reportChart reportId="00OO0000000G1hd" filter="{column:'Opportunity.Text1__c', operator:'equals', value:'test'}" />
</apex:page>

reportId は、00OO0000000G1hd といったレポートの Salesforce ID。
filter で指定する column は API 名だが、カスタムフィールドの場合はオブジェクト名が Namespace のようになる。正確には Analytics API で確認できる。

Workbench の REST Explore で確認する:

Workbench にログインして、[utilities] | [REST Explore] で実行。

/services/data/v29.0/analytics/reports/00OO0000000G1hd/describe

cap2

Opportunity Information.columns… に標準フィールド
Opportunity: Custom Info.columns… にカスタムフィールド


Apex で確認する:

Reports.ReportDescribeResult rdr = Reports.ReportManager.describeReport('00OO0000000G1hd');
for (String columnStr : rdr.getReportMetadata().getDetailColumns()) {
  System.debug(columnStr);
}
09:45:41.433 (433238000)|USER_DEBUG|[3]|DEBUG|AMOUNT
09:45:41.433 (433290000)|USER_DEBUG|[3]|DEBUG|Opportunity.Number1__c
09:45:41.433 (433322000)|USER_DEBUG|[3]|DEBUG|Opportunity.Text1__c
09:45:41.433 (433353000)|USER_DEBUG|[3]|DEBUG|Opportunity.Formula1__c