2011-04-25

Force.com : 操作 - Force.com Connect Offline


操作 - Force.com Connect Offline
  • Force.com Connect Offline の起動



◆ Force.com Connect Offline の起動

  1. [$CONNECT-OFFLINE_HOME\bin\Offline 2 Runtime.exe]を起動する
  2. Offline ランタイム
    • ユーザ名 : ログインするユーザ名
    • パスワード : ログインするユーザのパスワード
    • タブの名称を更新 : Salesforce の項目、オブジェクト、およびタブの名前に対する変更があった場合更新が行われる
    • 私のデータを同期 : Connect Offline ブリーフケースと Salesforce との同期が行われる
  3. [ログイン]ボタンを押下



◇ Force.com Connect Offline の起動のメモ

  • 起動 : 初回ログイン時にはインターネットに接続していること
  • パスワード : 必要であれば、パスワードにセキュリティートークンを付加する



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考

 

Force.com : 設定 - Force.com Connect Offline


設定 - Force.com Connect Offline
  • ライセンスの割り当て
  • クライアントに対しての Force.com Connect Offline のインストール
  • ブリーフケースの設定



◆ ライセンスの割り当て

  1. [管理者設定]→[ユーザの管理]→[ユーザ]
  2. ライセンスを割り当てるユーザの[編集]ボタンを押下
  3. [オフラインユーザ]のチェックボックスを ON にする
  4. [保存]ボタンを押下



◆ クライアントに対しての Force.com Connect Offline のインストール

  1. [個人設定]→[デスクトップ統合]→[Force.com Connect Offline]
  2. [今すぐインストール]ボタンを押下
  3. DL した .exe ファイルからインストールを行う



◆ ブリーフケースの設定

Ex.
  • ブリーフケースを設定するユーザのプロファイルを「OfflineUser」とする


  1. [管理者の設定]→[デスクトップ管理者]→[オフラインブリーフケース構成]
  2. [すべてのオフラインブリーフケース構成]から[新規オフラインブリーフケース構成]ボタンを押下
  3. オフラインブリーフケース構成の編集
    • 名前 : TEST-01
    • 有効 : ON 
    • 説明 : (任意)
    • ユーザとプロファイルの割り当て : プロファイル: OfflineUser
  4. [保存]ボタンを押下
  5. 作成した「TEST-01」の[データセット]から[編集]ボタンを押下
  6. データセットを定義
  7. [完了]ボタンを押下



◇ ブリーフケースの設定のメモ

  • ブリーフケースが割り当てられていないユーザにはデフォルトの Connect Offline ブリーフケースが割り当てられる
  • 1 つのユーザまたはプロファイルに設定できるブリーフケースは 1 つだけとなる
    Ex. 上記で設定したブリーフケースに加え下記を設定する
    1. [すべてのオフラインブリーフケース構成]から[新規オフラインブリーフケース構成]ボタンを押下
    2. オフラインブリーフケース構成の編集
      • 名前 : TEST-02
      • 有効 : ON 
      • 説明 : (任意)
      • ユーザとプロファイルの割り当て : プロファイル: OfflineUser
    3. [保存]ボタンを押下
    「TEST-01」から割り当てたプロファイル(「プロファイル: OfflineUser」)は削除される



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考

 

2011-04-22

Force.com : 特定のオブジェクトに対して、アクセス権を制御したい


特定のオブジェクトに対して、アクセス権を制御したい
  • レコードの所有者に基づいてアクセス権を制限したい
  • 条件基づいてアクセス権を制限したい
  • 所有しているレコードのみアクセス権を制限したい



◆ 準備

■ オブジェクト
  • オブジェクト名 : X
  • オブジェクト名 : Y
    • 項目 : キーワード(選択リスト)
  • オブジェクト名 : Z


■ プロファイル (カスタムオブジェクト権限)
参照 作成 編集 削除 参照 作成 編集 削除 参照 作成 編集 削除
P-企画××××××××
P-開発×××××××××××
P-営業×××××××××××
P-一般×××××××××××
P-その他××××××××


■ ロール
  • R-企画
  • R-開発
  • R-営業
  • R-一般
  • R-その他


■ ユーザ
  • R-企画 ⇔ P-企画
  • R-開発 ⇔ P-開発
  • R-営業 ⇔ P-営業
  • R-一般 ⇔ P-一般
  • R-その他 ⇔ P-その他



○ レコードの所有者に基づいてアクセス権を制限したい

Ex.
  • オブジェクト[X]に対して、ロールが「R-企画」「R-開発」「R-営業」のレコードは、ロールが「R-企画」「R-開発」「R-営業」のみ参照可とする
  • オブジェクト[X]に対して、ロールが「R-企画」「R-開発」「R-営業」のレコードは、ロールが「R-企画」のみ更新可とする
  • それ以外のユーザには参照・更新できないとする


■ 公開グループの作成
  1. [管理者の設定]→[ユーザの管理]→[公開グループ]
  2. [新規]ボタンを押下
  3. 新規グループ
    • グループ名 : グループA
    • 選択済みのユーザ : ロール: R-企画, ロール: R-開発, ロール: R-営業
  4. [保存]ボタンを押下
  5. [新規]ボタンを押下
  6. 新規グループ
    • グループ名 : グループB
    • 選択済みのユーザ : ロール: R-企画
  7. [保存]ボタンを押下


■ 共有ルールの設定
  1. [管理者の設定]→[セキュリティのコントロール]→[共有設定]
  2. [組織の共有設定]の[編集]ボタンを押下
  3. 組織の共有設定の編集
    • X : 非公開
  4. [保存]ボタンを押下
  5. [X共有ルール]の[新規]ボタンを押下
  6. X共有ルール
    • ステップ1: ルールタイプ : レコードの所有者に基づく
    • ステップ2: X: 所有者の所属 : グループ: グループA
    • ステップ3: 共有先 : グループ: グループA
    • ステップ4: アクセス権 : 参照のみ
  7. [保存]ボタンを押下
  8. [X共有ルール]の[新規]ボタンを押下
  9. X共有ルール
    • ステップ1: ルールタイプ : レコードの所有者に基づく
    • ステップ2: X: 所有者の所属 : グループ: グループA
    • ステップ3: 共有先 : グループ: グループB
    • ステップ4: アクセス権 : 参照・更新
  10. [保存]ボタンを押下



○ 条件基づいてアクセス権を制限したい

Ex.
  • オブジェクト[Y]に対して、[キーワード]が「いっぱん」レコードは、ロールが「R-一般」のみ参照可とする
  • それ以外のユーザには参照・更新できないとする


■ 公開グループの作成
  1. [管理者の設定]→[ユーザの管理]→[公開グループ]
  2. [新規]ボタンを押下
  3. 新規グループ
    • グループ名 : グループC
    • 選択済みのユーザ : ロール: R-一般
  4. [保存]ボタンを押下


■ 共有ルールの設定
  1. [管理者の設定]→[セキュリティのコントロール]→[共有設定]
  2. [組織の共有設定]の[編集]ボタンを押下
  3. 組織の共有設定の編集
    • Y : 非公開
  4. [保存]ボタンを押下
  5. [Y共有ルール]の[新規]ボタンを押下
  6. Y共有ルール
    • ステップ1: ルールタイプ : 条件に基づく
    • ステップ2: 項目「キーワード」, 演算子「次の文字と一致する」, 値「いっぱん」
    • ステップ3: 共有先 : グループ: グループA
    • ステップ4: アクセス権 : 参照のみ


□ 共有ルールの設定のメモ
  • 各オブジェクトに、最大 50 件の条件が指定可能
  • 共有の条件として使用できる項目
    • レコードタイプ
      • 標準項目:
      • 名前
      • 所有者 ID
      • 作成者 ID
      • 最終更新者 ID
    • カスタム項目:
      • 自動採番
      • チェックボックス
      • 日付
      • 日付/時間
      • 電子メール
      • 数値
      • パーセント
      • 電話
      • 選択リスト
      • テキスト
      • テキストエリア
      • URL
      • 参照関係 (ユーザ ID またはキュー ID に対して)



○ 所有しているレコードのみアクセス権を制限したい

Ex.
  • オブジェクト[Z]に対して、所有しているレコードのみのみ参照・更新とする
  • それ以外のユーザには参照・更新できないとする


■ 共有ルールの設定
  1. [管理者の設定]→[セキュリティのコントロール]→[共有設定]
  2. [組織の共有設定]の[編集]ボタンを押下
  3. 組織の共有設定の編集
    • X : 非公開
  4. [保存]ボタンを押下






◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考

 

2011-04-15

Force.com : Visualforce のページから承認プロセスを行いたい


@TODO 一旦投稿。



Visualforce のページから承認プロセスを行いたい



○ Visualforce のページから承認プロセスを行いたい

Ex. @TODO 適当に(あとで修正する
  1. [設定]→[アプリケーションの設定]→[作成]→[ワークフローと承認申請]→[承認プロセス]から[取引先]オブジェクトに対して適当な承認プロセスを作成し、有効にしておく
  2. [取引先]レコードはどこかで作成しておく
  3. [取引先]レコードの[申請][承認][却下][取消]処理を行う画面を作成し、処理を行う

■ Visualforce ページ
<apex:page controller="AccountController" tabStyle="Account">
    <apex:sectionHeader title="[取引先]" subtitle="申請・承認・却下・取消" />
    <apex:pageMessages />
    <apex:form >
        <apex:pageBlock title="xx" mode="edit">
            <apex:pageBlockButtons >
                <apex:commandButton action="{!apply}" value="申請" />
                <apex:commandButton action="{!approve}" value="承認"  />
                <apex:commandButton action="{!reject}" value="却下"  />
                <apex:commandButton action="{!cancel}" value="取消"  />
            </apex:pageBlockButtons>
            <apex:pageBlockSection title="取引先情報">
                <apex:outputField value="{!dto.account.name}"/>
                <apex:outputText value="ステータス( {!dto.status} )" id="status" />
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>


■ AccountController クラス
public with sharing class AccountController {

    /** 画面表示クラス */
    public class DTO {
        public Account account { get; set; }
        public String status { get; set; }

        public DTO(){
            account = new Account();
            status = '';
        }
    }
    public DTO dto { get; set; }

    /**  コンストラクタ */
    public AccountController() {
        Id id = ApexPages.currentPage().getParameters().get('id');
        dto = new DTO();
        dto.account = [SELECT Id, Name FROM Account WHERE Id = :id];

        Integer cnt = [SELECT COUNT() FROM ProcessInstance WHERE TargetObjectId = :id AND Status = 'Pending'];
        if(cnt != 0) {
            dto.status = '申請中';
        }
    }

    /** 申請 */
    public PageReference apply() {
        Id id = ApexPages.currentPage().getParameters().get('id');

        Approval.ProcessSubmitRequest request =  new Approval.ProcessSubmitRequest();
        request.setNextApproverIds(new Id[]{UserInfo.getUserId()});
        request.setObjectId(id);
        Approval.ProcessResult result;
        try {
            result = Approval.process(request);
        } catch (System.DmlException e) {
            if(e.getMessage().contains('NO_APPLICABLE_PROCESS')) {
                ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '承認プロセスに該当するレコードではありませんでした.'));
                return null;
            }
        }

        if(result.isSuccess()) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.CONFIRM, '申請に成功しました.'));
            dto.status = '申請中';
        } else {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '申請に失敗しました.'));
        }
        return null;
    }

    /** 承認 */
    public PageReference approve() {
        Id id = ApexPages.currentPage().getParameters().get('id');

        Integer cnt = [SELECT COUNT() FROM ProcessInstance WHERE TargetObjectId = :id AND Status = 'Pending'];
        if(cnt == 0) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '申請済みのレコードではありません.'));
            return null;
        }
        Id processId = [SELECT Id FROM ProcessInstance WHERE TargetObjectId = :id AND Status = 'Pending' LIMIT 1].Id;
        Id workitemId = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstanceId= :processId LIMIT 1].Id;

        Approval.ProcessWorkitemRequest request = new Approval.ProcessWorkitemRequest();
        request.setAction('Approve');
        request.setNextApproverIds(new Id[]{UserInfo.getUserId()});
        request.setWorkitemId(workitemId);
        Approval.ProcessResult result = Approval.process(request);

        if(result.isSuccess()) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.CONFIRM, '承認に成功しました.'));
            dto.status = '';
        } else {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '承認に失敗しました.'));
        }
        return null;
    }

    /** 却下 */
    public PageReference reject() {
        // @TODO
        return null;
    }

    /** 取消 */
    public PageReference cancel() {
        // @TODO
        return null;
    }
}



◆ ProcessInstance オブジェクト

  • ID
  • TARGETOBJECTID
  • STATUS
  • ISDELETED
  • CREATEDDATE
  • CREATEDBYID
  • LASTMODIFIEDDATE
  • LASTMODIFIEDBYID
  • SYSTEMMODSTAMP
  • @TODO



◆ ProcessInstanceWorkitem オブジェクト

  • ID
  • PROCESSINSTANCEID
  • ORIGINALACTORID
  • ACTORID
  • ISDELETED
  • CREATEDDATE
  • CREATEDBYID
  • SYSTEMMODSTAMP
  • @TODO



◆ Approval オブジェクト

  • ID
  • ISDELETED
  • PARENTID
  • OWNERID
  • CREATEDDATE
  • CREATEDBYID
  • LASTMODIFIEDDATE
  • LASTMODIFIEDBYID
  • STATUS
  • REQUESTCOMMENT
  • APPROVECOMMENT
  • SYSTEMMODSTAMP
  • @TODO



◆ ProcessSubmitRequest クラス

  • @TODO



◆ ProcessWorkitemRequest クラス

  • @TODO



◇ @TODO

  • @TODO な箇所諸々
  • レコードのロック?
  • [申請][承認]処理は確認済み



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


Force.com : 標準の salesforce の詳細ページと同じ画面を Visualforce ページで表示したい[Visualforceタグ]


標準の salesforce の詳細ページと同じ画面を Visualforce ページで表示したい (<apex:detail>)



◆ <apex:detail> コンポーネント

<apex:page>
    <apex:detail />
</apex:page>

属性備考
inlineEdit="(true|false)"
  • インライン編集が可能を指定する
  • <apex:form> コンポーネント内で使用可能
  • デフォルト : false
  • 型 : Boolean
relatedList="(true|false)"
  • 関連リスト等を表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
rendered="(true|false)"
  • ページ上に表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
showChatter="(true|false)"
  • Chatter を表示するかを指定する
  • <apex:page> コンポーネントの[showHeader]属性が「true」であること
    かつ
    <apex:page> コンポーネントの[title]属性が「true」であること
  • デフォルト : false
  • 型 : Boolean
subject="(ID)"
  • レコードの ID を指定する
  • 型 : String
title="(true|false)"
  • タイトル(<apex:sectionHeader> コンポーネントあたり)を表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
※ 詳細は apex:detail を参照



○ 標準の salesforce の詳細ページと同じ画面を Visualforce ページで表示したい

Ex.
  1. [取引先]オブジェクトの[タイトル]欄と[取引先の詳細]欄のみをインライン編集を可能な状態で表示する

■ Visualforce ページ
<apex:page standardController="Account">
    <apex:form>
        <apex:detail subject="{!account.Id}" relatedList="false" inlineEdit="true" />
    </apex:form>
</apex:page>
※ レコードの id が存在しない場合は、真っ白のページとなる



◇ @TODO

  • ページレイアウトの割り当てが行われている時の表示



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


Force.com : 任意のテキストを表示したい[Visualforceタグ]


任意のテキストを表示したい (<apex:outputText>)
  • 任意の日付を表示したい
  • 任意の数値を表示したい



◆ <apex:outputText> コンポーネント

<apex:page>
    <apex:outputText value="(表示文字列)" />
</apex:page>

属性備考
rendered="(true|false)"
  • ページ上に表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
value="(表示文字列)"
※ 詳細は apex:outputText を参照



○ 任意の日付を表示したい

Ex.
  1. 今の日付時刻を表示する
  2. 今の日付時刻を[yyyy-MM-dd HH:mm:ss]の形式で表示する

■ Visualforce ページ
<apex:page>
    <-- 1. -->
    <apex:outputText value="只今の日付時刻 : {!NOW()}" />
    <p />

    <-- 2. -->
    <apex:outputText value="只今の日付時刻 : {0, date, yyyy-MM-dd HH:mm:ss}">
        <apex:param value="{!NOW()}" />
    </apex:outputText>
    <p />
</apex:page>



○ 任意の数値を表示したい

Ex.
  1. 「1234567890123」を[金額]の形式で表示する
  2. 「0.10」を[%]の形式で表示する

■ Visualforce ページ
<apex:page>
    <-- 1. -->
    <-- 表示:$1,234,567,890,123.00 -->
    <apex:outputText value="{0, number, currency}">
        <apex:param value="{!VALUE('1234567890123')}" />
    </apex:outputText>
    <p />
    <-- 表示:1,234,567,890,123 -->
    <apex:outputText value="{0, number, ###,###,###}">
        <apex:param value="{!VALUE('1234567890123')}" />
    </apex:outputText>
    <p />

    <-- 2. -->
    <-- 表示:10% -->
    <apex:outputText value="{0, number, percent}">
        <apex:param value="{!VALUE('0.10')}" />
    </apex:outputText>
</apex:page>



◇ @TODO

  • Locale の設定の仕方



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


2011-04-13

Force.com : 任意のチェックボックスを作成したい[Visualforceタグ]


任意のチェックボックスを作成したい (<apex:selectCheckboxes>)



◆ <apex:selectCheckboxes> コンポーネント

<apex:page controller="SampleController">
    <apex:form>
        <apex:selectCheckboxes value="{!(選択値)}" >
            <apex:selectOptions value="{!(選択オプション)}"/>
        </apex:selectCheckboxes>
    </apex:form>
</apex:page>

属性備考
disabled="(true|false)"
  • 無効の状態で表示するかを指定する
  • デフォルト : false
  • 型 : Boolean
disabledClass="(CSS クラス名)"
  • 無効な状態での CSS を指定する
  • 型 : String
enabledClass="(CSS クラス名)"
  • 有効な状態での CSS を指定する
  • 型 : String
readonly="(true|false)"
  • 読み取りのみにするか指定する
  • デフォルト : false
  • 型 : Boolean
rendered="(true|false)"
  • ページ上に表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
required="(true|false)"
  • 必須のフィールドであるかを指定する
  • デフォルト : false
  • 型 : Boolean
value="{!(選択値)}"
  • 選択値を指定する
  • 型 : String[]
※ 詳細は apex:selectCheckboxes を参照



○ 任意のチェックボックスを作成したい

Ex.
  1. 色のチェックボックスを作成する
  2. 色を選択し、ボタンを押下する
  3. 画面を再描画する
  4. 選択したすべての色[value]値を選択した色で表示する

■ Visualforce ページ
<apex:page controller="SampleController">
    <apex:form >
        <apex:selectCheckboxes value="{!selections}" >
            <apex:selectOptions value="{!options}"/>
        </apex:selectCheckboxes>
        <p />
        <apex:commandButton value="button" action="{!redraw}" rerender="out" />
    </apex:form>
    <p />
    <apex:outputPanel id="out">
        <apex:outputText value="▼ selected options" />
        <hr />
        <apex:outputPanel >
            <apex:dataList value="{!selections}" var="s">
                <apex:outputText style="color:{!s}" value="{!s}" />
            </apex:dataList>
        </apex:outputPanel>
    </apex:outputPanel>
</apex:page>


■ SampleController クラス
public with sharing class SampleController {

    /** 選択値 */
    public String[] selections = new String[]{};

    /** 再描画処理 */
    public PageReference redraw() {
        return null;
    }

    /** 選択オプション取得 */
    public List<SelectOption> getOptions() {
        List<SelectOption> options = new List<SelectOption>();
        options.add(new SelectOption('Red', '赤'));
        options.add(new SelectOption('Yellow ', '黄'));
        options.add(new SelectOption('Green', '緑'));
        options.add(new SelectOption('Blue', '青'));
        options.add(new SelectOption('Purple', '紫'));
        return options;
    }

    /** 選択値取得 */
    public String[] getSelections() {
        return selections;
    }

    /** 選択値設定 */
    public void setSelections(String[] values) {
        this.selections = values;
    }
}
※ <apex:selectList>, <apex:selectRadio> コンポーネントの場合は
    /** 選択値 */
    public String[] selections { get; set; }
でもいけたのに、 <apex:selectCheckboxes> コンポーネントだとだめだった


■ 画面イメージ



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


Force.com : 任意のラジオボタンを作成したい[Visualforceタグ]


任意のラジオボタンを作成したい (<apex:selectRadio>)



◆ <apex:selectRadio> コンポーネント

<apex:page controller="SampleController">
    <apex:form>
        <apex:selectRadio value="{!(選択値)}">
            <apex:selectOptions value="{!(選択オプション)}"/>
        </apex:selectRadio>
    </apex:form>
</apex:page>

属性備考
disabled="(true|false)"
  • 無効の状態で表示するかを指定する
  • デフォルト : false
  • 型 : Boolean
disabledClass="(CSS クラス名)"
  • 無効な状態での CSS を指定する
  • 型 : String
enabledClass="(CSS クラス名)"
  • 有効な状態での CSS を指定する
  • 型 : String
readonly="(true|false)"
  • 読み取りのみにするか指定する
  • デフォルト : false
  • 型 : Boolean
rendered="(true|false)"
  • ページ上に表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
required="(true|false)"
  • 必須のフィールドであるかを指定する
  • デフォルト : false
  • 型 : Boolean
value="{!(選択値)}"
  • 選択値を指定する
  • 型 : String
※ 詳細は apex:selectRadio を参照



○ 任意のラジオボタンを作成したい

Ex.
  1. 色のラジオボタンを作成する
  2. 色を選択し、ボタンを押下する
  3. 画面を再描画する
  4. 選択した色の[value]値を選択した色で表示する

■ Visualforce ページ
<apex:page controller="SampleController">
    <apex:form >
        <apex:selectRadio value="{!selection}">
            <apex:selectOptions value="{!options}"/>
        </apex:selectRadio>
        <p />
        <apex:commandButton value="button" action="{!redraw}" rerender="out" />
    </apex:form>
    <p />
    <apex:outputPanel id="out">
        <apex:outputText value="▼ selected options" />
        <hr />
        <apex:outputPanel >
            <apex:outputText style="color:{!selection}" value="{!selection}" />
        </apex:outputPanel>
    </apex:outputPanel>
</apex:page>


■ SampleController クラス
public with sharing class SampleController {

    /** 選択値 */
    public String selection { get; set; }

    /** 再描画処理 */
    public PageReference redraw() {
        return null;
    }

    /** 選択オプション取得 */
    public List<SelectOption> getOptions() {
        List<SelectOption> options = new List<SelectOption>();
        options.add(new SelectOption('Red', '赤'));
        options.add(new SelectOption('Yellow ', '黄'));
        options.add(new SelectOption('Green', '緑'));
        options.add(new SelectOption('Blue', '青'));
        options.add(new SelectOption('Purple', '紫'));
        return options;
    }
}


■ 画面イメージ



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


Force.com : 任意の選択リストを作成したい[Visualforceタグ]


任意の選択リストを作成したい (<apex:selectList>)
  • 任意の単一選択リストを作成したい
  • 任意の複数選択リストを作成したい



◆ <apex:selectList> コンポーネント

<apex:page controller="SampleController">
    <apex:form>
        <apex:selectList value="{!(選択値)}" size="(表示数)" multiselect="(true|false)">
            <apex:selectOptions value="{!(選択オプション)}"/>
        </apex:selectList>
    </apex:form>
</apex:page>

属性備考
disabled="(true|false)"
  • 無効の状態で表示するかを指定する
  • デフォルト : false
  • 型 : Boolean
disabledClass="(CSS クラス名)"
  • 無効な状態での CSS を指定する
  • 型 : String
enabledClass="(CSS クラス名)"
  • 有効な状態での CSS を指定する
  • 型 : String
multiselect="(true|false)"
  • 複数選択可能かを指定する
  • デフォルト : false
  • 型 : Boolean
readonly="(true|false)"
  • 読み取りのみにするか指定する
  • デフォルト : false
  • 型 : Boolean
rendered="(true|false)"
  • ページ上に表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
required="(true|false)"
  • 必須のフィールドであるかを指定する
  • デフォルト : false
  • 型 : Boolean
size="(表示数)"
  • 表示するオプションのサイズを指定する
  • 指定がない場合は、選択可能なすべてのオプションが表示される
  • 型 : String
value="{!(選択値)}"
  • 選択値を指定する
  • multiselect="true" の場合の型 : String[]
  • multiselect="false" の場合の型 : String
※ 詳細は apex:selectList を参照



○ 任意の単一選択リストを作成したい

Ex.
  1. 色の選択リストを作成する
  2. 色を選択し、ボタンを押下する
  3. 画面を再描画する
  4. 選択した色の[value]値を選択した色で表示する

■ Visualforce ページ
<apex:page controller="SampleController">
    <apex:form >
        <apex:selectList value="{!selection}" size="1" style="width:120px;">
            <apex:selectOptions value="{!options}"/>
        </apex:selectList>
        <p />
        <apex:commandButton value="button" action="{!redraw}" rerender="out" />
    </apex:form>
    <p />
    <apex:outputPanel id="out">
        <apex:outputText value="▼ selected options" />
        <hr />
        <apex:outputPanel >
            <apex:outputText style="color:{!selection}" value="{!selection}" />
        </apex:outputPanel>
    </apex:outputPanel>
</apex:page>


■ SampleController クラス
public with sharing class SampleController {

    /** 選択値 */
    public String selection { get; set; }

    /** 再描画処理 */
    public PageReference redraw() {
        return null;
    }

    /** 選択オプション取得 */
    public List<SelectOption> getOptions() {
        List<SelectOption> options = new List<SelectOption>();
        options.add(new SelectOption('Red', '赤'));
        options.add(new SelectOption('Yellow ', '黄'));
        options.add(new SelectOption('Green', '緑'));
        options.add(new SelectOption('Blue', '青'));
        options.add(new SelectOption('Purple', '紫'));
        return options;
    }
}


■ 画面イメージ



○ 任意の複数選択リストを作成したい

Ex.
  1. 色の複数選択リストを作成する
  2. 色を選択し、ボタンを押下する
  3. 画面を再描画する
  4. 選択したすべての色[value]値を選択した色で表示する

■ Visualforce ページ
<apex:page controller="SampleController">
    <apex:form >
        <apex:selectList value="{!selections}" size="5" multiselect="true" style="width:120px;">
            <apex:selectOptions value="{!options}"/>
        </apex:selectList>
        <p />
        <apex:commandButton value="button" action="{!redraw}" rerender="out" />
    </apex:form>
    <p />
    <apex:outputPanel id="out">
        <apex:outputText value="▼ selected options" />
        <hr />
        <apex:outputPanel >
            <apex:dataList value="{!selections}" var="s">
                <apex:outputText style="color:{!s}" value="{!s}" />
            </apex:dataList>
        </apex:outputPanel>
    </apex:outputPanel>
</apex:page>


■ SampleController クラス
public with sharing class SampleController {

    /** 選択値 */
    public String[] selections { get; set; }

    /** 再描画処理 */
    public PageReference redraw() {
        return null;
    }

    /** 選択オプション取得 */
    public List<SelectOption> getOptions() {
        List<SelectOption> options = new List<SelectOption>();
        options.add(new SelectOption('Red', '赤'));
        options.add(new SelectOption('Yellow ', '黄'));
        options.add(new SelectOption('Green', '緑'));
        options.add(new SelectOption('Blue', '青'));
        options.add(new SelectOption('Purple', '紫'));
        return options;
    }
}


■ 画面イメージ



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


Force.com : 任意の選択オプションを作成したい[Visualforceタグ]


任意の選択オプションを作成したい (<apex:selectOptions>)



◆ <apex:selectOptions> コンポーネント

<apex:page controller="SampleController">
    <apex:form>
        <apex:selectList value="{!(選択値)}" size="(表示数)" multiselect="(true|false)">
            <apex:selectOptions value="{!(選択オプション)}"/>
        </apex:selectList>
    </apex:form>
</apex:page>

備考
<apex:selectCheckBoxes>, <apex:selectRadio>, <apex:selectList> コンポーネント内で使用可能
属性備考
rendered="(true|false)"
  • ページ上に表示するかを指定する
  • デフォルト : true
  • 型 : Boolean
value="{!(選択値)}"
  • 必須項目
  • 選択オプションを指定する
  • 型 : Object(SelectOption クラスのリスト)
※ 詳細は apex:selectOptions を参照



○ 任意の選択オプションを作成したい

下記を参照



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


2011-04-12

Force.com : 標準の salesforce のページから Visualforce のページへ遷移したい

 
標準の salesforce のページから Visualforce のページへ遷移したい
  • カスタムボタン・リンクの設定
  • [controller]属性を指定した Visualforce ページを表示したい



○ カスタムボタン・リンクの設定

■ 準備
  • [standardController]属性を指定した Visualforce ページを用意する
  • [standardController]属性のオブジェクトとVisualforce のページを表示したいオブジェクトは一緒のこと

■ 設定
  1. [設定]→[アプリケーションの設定]→[(Visualforce のページを表示したいオブジェクト)]を押下
  2. オブジェクトのカスタムボタンとカスタムリンクの[新規]ボタンを押下
  3. カスタムボタン・リンクの設定
    • 表示ラベル : 画面で表示される名称
    • 名前 : システムで使われる名称
    • 説明 : ボタン・リンクの任意の説明
    • 表示の種類 : ボタン・リンクを表示する場所を指定
      • 詳細ページリンク
      • 詳細ページボタン
      • リストボタン
    • 動作 : 画面の表示方法を指定 
      • 新規ウィンドウに表示
      • 現在のウィンドウにサイドバー付きで表示
      • 現在のウィンドウにサイドバーなしで表示
      • 現在のウィンドウにサイドバーおよびヘッダなしで表示
      • JavaScript を実行 : [内容のソース]で「Visualforce ページ」を選択できない
      (※ サイドバー、ヘッダの表示・非表示は <apex:page> タグで指定したほうがよさ気)
    • 内容のソース : 「Visualforce ページ」を選択
    • コンテンツ : 準備した Visualforce ページを選択
  4. カスタムボタンまたはカスタムリンクの編集の[保存]ボタンを押下
  5. 必要があればオブジェクトのカスタムボタンとカスタムリンク欄の[作成したボタン・リンク]を押下し、[ウィンドウオープンプロパティ]ボタンからウィンドウのプロパティの設定を行う
  6. オブジェクトのページレイアウトにボタン・リンクを配置する



○ [controller]属性を指定した Visualforce ページを表示したい

  • Ex. [取引先]オブジェクトの標準 salesforce のページに[ContactListController]クラスを呼び出すカスタムボタン・リンクを作成したい
■ Visualforce ページ
<apex:page standardController="Account" extensions="ConatctListController" tabStyle="Contact" action="{!view}">
    <apex:sectionHeader title="取引先責任者一覧" />
    <apex:pageMessages id="messagearea" showDetail="false" />
    <apex:outputpanel >
        <apex:pageBlock title="" rendered="{!(dtos.size == 0)}">レコードはありません。</apex:pageBlock>
        <apex:pageBlock title="{!pageBlockTitle}" rendered="{!(dtos.size > 0)}">
            <apex:pageblockTable value="{!dtos}" var="d">
                <apex:column style="width:120px;">
                    <apex:facet name="header"><apex:outputText value="{!$ObjectType.Contact.fields.Name.label}"  /></apex:facet>
                    <apex:outputLink value="/{!d.contact.Id}"><apex:outputField value="{!d.contact.Name}" /></apex:outputLink>
                </apex:column>
            </apex:pageblockTable>
        </apex:pageBlock>
    </apex:outputpanel>
</apex:page>

<apex:page controller="ConatctListController" tabStyle="Contact" action="{!view}">
としたいところを、
<apex:page standardController="Account" extensions="ConatctListController" tabStyle="Contact" action="{!view}">
とすればよいらしい。

■ ContactListController クラス
public with sharing  class ConatctListController {

    /** コンストラクタ */
    public ConatctListController(ApexPages.StandardController controller) {
    }

    /** 画面表示用クラス */
    public class DTO {
        public Contact contact { get; set; }
        public DTO() {
            contact = new Contact();
        }
    }
    public List<DTO> dtos { get; set; }

    /** タイトル */
    public String pageBlockTitle { get; set; }

    /** 処理 */
    public void view() {
        String paramId = ApexPages.currentPage().getParameters().get('id');
        Id id;
        try {
            id = paramId;
        } catch (System.StringException e) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'ID の取得に失敗'));
        }
        pageBlockTitle = [SELECT Name FROM Account WHERE Id = :id].Name;
        Contact[] contacts = [SELECT Id, Name FROM Contact WHERE AccountId = :id ORDER BY Name LIMIT 200];
        dtos = new List<DTO>();
        for(Contact c : contacts) {
            DTO d = new DTO();
            d.contact = c;
            dtos.add(d);
        }
    }
}
※ 下記のコンストラクタを追加すればよいらしい
    /** コンストラクタ */
    public ConatctListController(ApexPages.StandardController controller) {
    }
※ パラメータの[id]は[取引先]オブジェクトの ID がやってきた

■ 設定
  • 上記(○ カスタムボタン・リンクの設定)を参照



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考

 

Force.com : 静的リソースを Visualforce で指定したい

 
静的リソースを Visualforce で指定したい
  • 静的リソースへデータをアップロードしたい
  • 静的リソースの CSS を Visualforce で指定したい (<apex:stylesheet>)
  • 静的リソースの JavaScript を Visualforce で指定したい (<apex:includeScript>)
  • 静的リソースの画像を Visualforce で指定したい (<apex:image>)



○ 静的リソースへデータをアップロードしたい

■ アップロードできるファイル
  • アーカイブ (.zip や .jar ファイルなど)
  • 画像
  • スタイルシート
  • JavaScript
  • その他のファイルなど、Visualforce ページ内で参照できるコンテンツ

■ アップロード
  1. [設定]→[アプリケーションの設定]→[開発]→[静的リソース]を押下
  2. 静的リソースの[新規]ボタンを押下
  3. 静的リソースの情報の設定
    • 名前 : Visualforce で使われる名称
      • 英数字・アンダースコアが使用可能
      • 英字で始まること
      • アンダースコアで終わらないこと
      • アンダースコアを 2 つ続けて使用しないこと
    • 説明 : リソースの任意の説明
    • ファイル : アップロードするファイル
      • 1 つの静的リソースの最大は 5MB まで
    • キャッシュコントロール : Salesforce サーバにキャッシュされた静的リソースを他のユーザと共有するかを指定
  4. 静的リソース編集の[保存]ボタンを押下



○ 静的リソースの CSS を Visualforce で指定したい (<apex:stylesheet>)

■ 静的リソースのファイルを指定する場合
<apex:page>
    <apex:stylesheet value="{$Resource.(静的リソースのファイル名)}">
</apex:page>

■ 静的リソースのアーカイブを指定する場合
<apex:page>
    <apex:stylesheet value="{!URLFOR{$Resource.(静的リソースのアーカイブ名), '(ファイル名)'}}">
</apex:page>



○ 静的リソースの JavaScript を Visualforce で指定したい (<apex:includeScript>)

■ 静的リソースのファイルを指定する場合
<apex:page>
    <apex:includeScript value="{$Resource.(静的リソースのファイル名)}">
</apex:page>

■ 静的リソースのアーカイブを指定する場合
<apex:page>
    <apex:includeScript value="{!URLFOR{$Resource.(静的リソースのアーカイブ名), '(ファイル名)'}}">
</apex:page>



○ 静的リソースの画像を Visualforce で指定したい (<apex:image>)

■ 静的リソースのファイルを指定する場合
<apex:page>
    <apex:image value="{$Resource.(静的リソースのファイル名)}" width="50" height="50">
</apex:page>

■ 静的リソースのアーカイブを指定する場合
<apex:page>
    <apex:image url="{!URLFOR{$Resource.(静的リソースのアーカイブ名), '(ファイル名)'}}" width="50" height="50">
</apex:page>



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考

 

2011-04-08

Force.com : 標準の salesforce のページに似たページを作成したい[Visualforceタグ]


標準の salesforce のページに似たページを作成したい (<apex:pageBlock>, <apex:pageBlockSection>, <apex:pageBlockTable>)
  • 子要素のデフォルトのユーザモードを指定したい (<apex:pageBlock>)
  • カラム数を指定したい (<apex:pageBlockSection>)
  • 一覧を表示したい (<apex:pageBlockTable>)



◆ <apex:pageBlock> コンポーネント

<apex:page>
    <apex:pageBlock></apex:pageBlock>
</apex:page>

備考
  • 標準の salesforce の詳細ページに似た領域
属性備考
mode="(detail|maindetail|edit)"
  • 子要素のユーザモードを指定する
  • デフォルト : detail
  • 型 : String
title="(タイトル)"
  • page block のタイトルを指定する
  • 型 : String
※ 詳細は apex:pageBlock を参照



◆ <apex:pageBlockSection> コンポーネント

<apex:page>
    <apex:pageBlock>
        <apex:pageBlockSection></apex:pageBlockSection>
    </apex:pageBlock>
</apex:page>

備考
  • 標準の salesforce のページレイアウト定義のセクションに似た領域
  • <apex:pageBlock> コンポーネント内で使用可能
属性備考
columns="(カラム数)"
  • セクションのカラム数を指定する
  • デフォルト : 2
  • 型 : Integer
title="(タイトル)"
  • page block section のタイトルを指定する
  • 型 : String
※ 詳細は apex:pageBlockSection を参照



◆ <apex:pageBlockTable> コンポーネント

<apex:page>
    <apex:pageBlock>
        <apex:pageBlockSection>
            <apex:pageBlockTable value="{!(リスト)}" var="(変数名)"></apex:pageBlockTable>
        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:page>

備考
  • 標準の salesforce の関連リスト、リストビューに似た領域
  • <apex:pageBlock>, <apex:pageBlockSection> コンポーネント内で使用可能
属性備考
value="{!(リスト)}"
  • 一覧を指定する
  • 必須項目
  • 型 : Object
var="(変数名)"
  • 一覧のオブジェクトの変数名を宣言する
  • 必須項目
  • 型 : String
※ 詳細は apex:pageBlockTable を参照



○ 子要素のデフォルトのユーザモードを指定したい (<apex:pageBlock>)

Ex. 詳細モード

■ Visualforce ページ
<apex:page standardController="Account" >
    <apex:sectionHeader title="sectionHeader - title" subtitle="sectionHeader - subtitle" />
    <apex:pageBlock title="page block - mode : detail" mode="detail">
        <apex:pageBlockSection title="page block section">
            <apex:outputField value="{!account.name}"/>
            <apex:outputField value="{!account.site}"/>
            <apex:outputField value="{!account.Website}"/>
            <apex:outputField value="{!account.Industry}"/>
        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:page>


■ 画面イメージ


Ex. メイン詳細モード

■ Visualforce ページ
<apex:page standardController="Account" >
    <apex:sectionHeader title="sectionHeader - title" subtitle="sectionHeader - subtitle" />
    <apex:pageBlock title="page block - mode : maindetail" mode="maindetail">
        <apex:pageBlockSection title="page block section">
            <apex:outputField value="{!account.name}"/>
            <apex:outputField value="{!account.site}"/>
            <apex:outputField value="{!account.Website}"/>
            <apex:outputField value="{!account.Industry}"/>
        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:page>


■ 画面イメージ


Ex. 編集モード

■ Visualforce ページ
<apex:page standardController="Account" >
    <apex:sectionHeader title="sectionHeader - title" subtitle="sectionHeader - subtitle" />
    <apex:form >
        <apex:pageBlock title="page block - mode : edit" mode="edit">
            <apex:pageBlockButtons >
                <apex:commandButton action="{!save}" value="save"/>
                <apex:commandButton action="{!cancel}" value="cancel"/>
            </apex:pageBlockButtons>
            <apex:pageBlockSection title="page block section - column : 3" columns="3">
                <apex:inputField value="{!account.name}"/>
                <apex:inputField value="{!account.site}"/>
                <apex:inputField value="{!account.Website}"/>
                <apex:inputField value="{!account.Industry}"/>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>


■ 画面イメージ



○ カラム数を指定したい (<apex:pageBlockSection>)

Ex. 3 カラム

■ Visualforce ページ
<apex:page standardController="Account">
    <apex:sectionHeader title="sectionHeader - title" subtitle="sectionHeader - subtitle" />
    <apex:pageBlock title="page block" mode="detail">
        <apex:pageBlockSection title="page block section" columns="3"></apex:pageBlockSection>
    </apex:pageBlock>
</apex:page>



○ 一覧を表示したい (<apex:pageBlockTable>)

Ex.
  1. [取引先]オブジェクトの[取引先責任者]一覧を表示

■ Visualforce ページ
<apex:page standardController="Account">
    <apex:sectionHeader title="section header - title" subtitle="section header - subtitle" />
    <apex:outputpanel>
        <apex:pageBlock title="page block - title">
            <apex:pageBlockTable value="{!account.Contacts}" var="contact">
                <apex:facet name="caption">table caption</apex:facet>
                <apex:facet name="header">table header</apex:facet>
                <apex:facet name="footer">table footer</apex:facet>
                <apex:column style="width:120px;">
                    <apex:facet name="header">column header [取引先責任者名]</apex:facet>
                    <apex:outputLink value="/{!contact.Id}"><apex:outputField value="{!contact.Name}" /></apex:outputLink>
                    <apex:facet name="footer">column footer [取引先責任者名]</apex:facet>
                </apex:column>
                <apex:column style="width:120px;">
                    <apex:facet name="header">column header [取引先名]</apex:facet>
                    <apex:outputLink value="/{!contact.Account.Id}"><apex:outputField value="{!contact.Account.Name}" /></apex:outputLink>
                    <apex:facet name="footer">column footer [取引先名]</apex:facet>
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:outputpanel>
</apex:page>


■ 画面イメージ



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考


Force.com : Visualforceタグ <apex:page>

 
<apex:page>
  • コントローラを指定したい
  • salesforce のヘッダ及びサイドバーの表示・非表示を指定したい
  • salesforce の標準のスタイルシートを指定したい・したくない(※ [showHeader]属性が「false」の場合)
  • ページのスタイルを統一したい
  • ページが要求された時に表示される前に何かの処理を行いたい
  • キャッシュ



○ コントローラの指定したい

■ オブジェクト名を指定
standardController="(オブジェクト名)"
Ex. [取引先]オブジェクトを指定する
<apex:page standardController="Account"></apex:page>

■ カスタムコントローラクラス名を指定
controller="(カスタムコントローラクラス名)"
Ex. 作成した[FooController]クラスを指定する
<apex:page controller="FooController"></apex:page>

※ [standardController]属性と[controller]属性を両方指定することは不可



○ salesforce のヘッダ及びサイドバーの表示・非表示を指定したい

■ ヘッダの表示・非表示
showHeader="{true|false}"
  • default : true
Ex. ヘッダを表示しない
<apex:page standardController="Account" showHeader="false"></apex:page>

■ サイドバーの表示・非表示
sidebar="(true|false)"
  • default : true
Ex. サイドバーを表示しない
<apex:page standardController="Account" sidebar="false"></apex:page>



○ salesforce の標準のスタイルシートを指定したい・したくない([showHeader]属性が「false」の場合)

standardStylesheets="(true|false)"
  • default : false
  • [showHeader]属性が「false」の場合に、標準のスタイルシートを使用するか設定を行う
  • ※ [showHeader]属性が「true」の場合は、ページのヘッダに標準のスタイルシートが追加されるため指定は無効となる
Ex. ヘッダは表示しないけど、スタイルシートは標準のスタイルシートを使用する
<apex:page standardController="Account" showHeader="false" standardStylesheets="true"></apex:page>
※ 標準のスタイルシート以外を使用する場合は <apex:stylesheet> を指定する



○ ページのスタイルを統一したい

tabStyle="(オブジェクト名|タブ名)"
Ex. [取引先]オブジェクトと一緒
  • [取引先]タブを選択した状態で表示させたい
  • [取引先]タブで使用しているアイコンをセクションのヘッダに表示させたい
  • ... etc
  • ※ 上記を満たすためにはヘッダが表示されている必要がある
<apex:page controller="FooController" showHeader="true" tabStyle="Account"></apex:page>



○ ページが要求された時に表示される前に何かの処理を行いたい

action="{!(アクション名)}"
  • ページがサーバによって要求された時に呼び出される
  • アクションを指定しない場合は、単にページが返される
  • 初期化のために使用しない
Ex. [FooController]クラスの[init]メソッドを指定する
<apex:page controller="FooController" action="{!init}"></apex:page>
public class FooController {
    public void init() {
        // 何かの処理
    }
}



○ キャッシュ

cache="(true|false)"
  • default : true
Ex. ブラウザのキャッシュページに指定しない
<apex:page standardController="Account" cache="false"></apex:page>



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考

 

Force.com : タイトル、サブタイトルを表示したい[Visualforceタグ]

 
タイトル、サブタイトルを表示したい (<apex:sectionHeader>)



◆ <apex:sectionHeader> コンポーネント

<apex:page standardController="Account">
    <apex:sectionHeader />
</apex:page>

属性備考
title="(タイトル)"
  • タイトルを指定
  • 型 : String
subtitle="(サブタイトル)"
  • サブタイトルを指定
  • 型 : String



○ タイトルとサブタイトルを表示したい

Ex.
  1. タイトルとサブタイトルを指定

■ Visualforce ページ
<apex:page standardController="Account">
    <apex:sectionHeader title="sectionHeader - title" subtitle="sectionHeader - subtitle" />
</apex:page>


■ 画面イメージ



○ タイトルを表示したい

Ex.
  1. タイトルを指定

■ Visualforce ページ
<apex:page standardController="Account">
    <apex:sectionHeader title="sectionHeader - title only" />
</apex:page>


■ 画面イメージ



○ サブタイトルを表示したい

Ex.
  1. サブタイトルを指定

■ Visualforce ページ
<apex:page standardController="Account">
    <apex:sectionHeader subtitle="sectionHeader - subtitle only" />
</apex:page>


■ 画面イメージ



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考

 

2011-04-05

Force.com : Date クラスのメモ

 
Date クラスのメモ



○ static メソッド

  • static Integer daysInMonth(Integer year, Integer month)
    指定した年の月の日数を返す。
    • 引数
         year : 年
         month : 月(1 = Jan)
    • 戻り値
         引数の年月の日数
  • static Boolean isLeapYear(Integer year)
    閏年か否かを返す。
    • 引数
         year : 年
    • 戻り値
         true : 閏年
  • static Date newInstance(Integer year, Integer month, Integer day)
    整数(年月日)から Date を生成する。
    • 引数
         year : 年
         month : 月(1 = Jan)
         day : 日
    • 戻り値
         日付
  • static Date parse(String s)
    文字列から Date を生成する。
    • 引数
         s : 日付文字列(形式:ローカルの日付形式に依存)
    • 戻り値
         日付
  • static Date today(String str)
    ユーザのタイムゾーンの現在日付を返す。
    • 戻り値
         日付
  • static Date valueOf(String s)
    文字列から Date を生成する。
    • 引数
         s : 日付文字列(形式:yyyy-MM-dd HH:mm:ss)
    • 戻り値
         日付
  • static Date valueOf(anyType x)
    ???から Date を生成する。
    • 引数
         x : ???
    • 戻り値
         日付
    ※ anyType 型は [Web Services API Developer's Guide] の [Field Types] を見ればわかるらしいけれどもわからなかった。



○ インスタンスメソッド

  • Date addDays(Integer addDays)
    日数を追加する。
    • 引数
         addDays : 日数
    • 戻り値
         日付
    Ex.
    Date d = Date.newInstance(2011, 3, 1);
    System.debug(d);               // 2011-03-01 00:00:00
    System.debug(d.addDays(10));   // 2011-03-11 00:00:00
    System.debug(d.addDays(-10));  // 2011-02-19 00:00:00
    
  • Date addMonths(Integer addMonths)
    月数を追加する。
    • 引数
         addMonths : 月数
    • 戻り値
         日付
    Ex.
    Date d = Date.newInstance(2011, 3, 1);
    System.debug(d);                 // 2011-03-01 00:00:00
    System.debug(d.addMonths(6));   // 2010-09-01 00:00:00
    System.debug(d.addMonths(-6));  // 2011-09-01 00:00:00
    
  • Date addYears(Integer addYears)
    年数を追加する。
    • 引数
         addYears : 年数
    • 戻り値
         日付
    Ex.
    Date d = Date.newInstance(2011, 3, 1);
    System.debug(d);                // 2011-03-01 00:00:00
    System.debug(d.addYears(15));   // 2026-03-01 00:00:00
    System.debug(d.addYears(-15));  // 1996-02-01 00:00:00
    
  • Integer day()
    day of month
    日を返す。
    • 戻り値
         日数
  • Integer dayOfYear()
    day of year
    呼び出したメソッドの日付の年が始まってから何日目かを返す。
    • 戻り値
         日数
  • Integer daysBetween(Date compDate)
    呼び出したメソッドの日付から、引数の日付まで何日あるかを返す。
    • 引数
         compDate : 日付
    • 戻り値
         日数
    Ex.
    Date d = Date.newInstance(2011, 3, 1);
    System.debug(d.daysBetween(d.addDays(10)));    // 10
    
  • String format()
    日付を文字列として返す。
    • 戻り値
         日付文字列
  • Boolean isSameDay(Date compDate)
    呼び出したメソッドの日付と、引数の日付が同じか否かを返す。
    • 戻り値
         true : 同じ
  • Integer month()
    月を返す。
    • 戻り値
         月(1 = Jan)
  • Integer monthsBetween(Date compDate)
    呼び出したメソッドの日付から、引数の日付まで何ヶ月あるかを返す。
    • 引数
         compDate : 日付
    • 戻り値
         月数
    Ex.
    Date d = Date.newInstance(2011, 3, 1);
    System.debug(d.monthsBetween(d.addDays(10)));     // 0
    System.debug(d.monthsBetween(d.addMonths(1)));    // 1
    
  • Date toStartOfMonth()

    • 戻り値
         日付
  • Date toStartOfWeek()

    • 戻り値
         日付
  • Integer year()
    年を返す。
    • 戻り値
         年



◇ 環境

  • Salesforce - Developer Edition - API バージョン 21.0



◇ 参考