Memos About Salesforce

Salesforceにハマってたこと!

Apex クラスでのカスタム設定レコードの取得

こんにちは、管理人の@Salesforce.Zです。

カスタム設定について共有したい思います。

目次

カスタム設定

カスタム設定の定義

f:id:jude2016:20190412110818p:plain

1.[設定] から、[クイック検索] ボックスに「カスタム設定」と入力し、[カスタム設定] を選択します。

2.新しいカスタム設定を作成するには、[新規] をクリックし、カスタム設定の名前の横にある [編集] をクリックするか、カスタム設定の詳細を表示して [編集] をクリックします。

3.次を定義します。

 ・表示ラベル — アプリケーションに表示されるラベルを入力します。

 ・オブジェクト名 — 数式項目、入力規則、Apex、または SOAP API でカスタム設定が参照されるときに使用される名前を入力します。

 ・設定種別 — [リスト] または [階層] を選択します。[リスト] は、国コードや州の省略名など、アプリケーションレベルのデータを定義します。[階層] は、階層の下位レベルで上書き可能なデフォルトの項目値などのカスタマイズ設定を定義します。

 ・表示 — [保護] または [公開] を選択します。

  ○保護 — カスタム設定が管理パッケージに含まれる場合、登録側組織はカスタム設定を参照できません。カスタム設定は、パッケージリストの一部としては表示されません。また、登録側組織が Apex および API のどちらを使用してもカスタム設定にはアクセスできませんが、開発側組織はアクセスできます。カスタム設定が未管理のパッケージに含まれている場合、カスタム設定はカスタムオブジェクトと同様に ([表示] が [公開] に設定されているかのように) Enterprise WSDL を通して利用できます。

  ○公開 — カスタム設定はカスタムオブジェクトと同様に Enterprise WSDL を通して利用できます。公開として定義されたカスタム設定をパッケージできます。登録側組織はパッケージのタイプ (管理または未管理) に関係なく値を編集し、Apex および API を使用してアクセスできます。 重要

4.必要に応じてカスタム設定の説明を入力します。わかりやすい説明を入力しておくと、カスタム設定をリストで表示するときにカスタム設定の違いを把握しやすくなります。

5.[保存] をクリックします。

カスタム設定の項目の追加

オブジェクトの項目追加と同じなので、略します。

カスタム設定のオブジェクト(カスタム設定のレコードのイメージ)を追加する

カスタム設定項目にデータを追加する手順は、次のとおりです。

1.[設定] から、[クイック検索] ボックスに「カスタム設定」と入力し、[カスタム設定] を選択してから、カスタム設定の横にある [管理] をクリックします。またはカスタム設定の詳細ページで、[管理] をクリックします。

2.[新規] をクリックするか、既存のデータセットの横にある [編集] をクリックします。

3.データを追加または変更します。

リストのカスタム設定の場合は、次の設定を行います。

 ・データセットの名前を指定または変更します。

 ・この名前は、Apex、数式項目などで使用されます。

 ・すべての項目のデータを入力または変更します。

 ・[保存] をクリックします。

※ リスト型を選択できない場合下記のように設定をすれば、可能になります。

f:id:jude2016:20190412130755j:plain
選べない

有効にする手順は下記です。

1.設定画面から、スキーマ設定を選択

f:id:jude2016:20190412130920j:plain
スキーマ
2.スキーマ設定の画面から、トグルボタンをスライドして、設定を有効化
f:id:jude2016:20190412130940j:plain
設定前

f:id:jude2016:20190412130955j:plain
設定後

3.再度カスタム設定の定義画面に戻って、設定種別にリストが選択出来るようになってるのを確認

f:id:jude2016:20190412131022j:plain
確認

階層のカスタム設定の場合は、次の設定を行います。

 ・デフォルトの組織レベルの値には、項目のデータを入力または変更します。デフォルトの組織の場所が自動的に取り込まれます。

 ・プロファイルまたはユーザレベルの値には、[場所] 選択リストから [プロファイル] または [ユーザ] のいずれかを選択します。プロファイルまたはユーザの名前を入力するか、ルックアップダイアログ検索を使用します。次に、項目のデータを入力または変更します。

 ・[保存] をクリックします。

カスタム設定へのアクセス

数式項目

数式項目は階層カスタム設定でのみ機能し、リストカスタム設定には使用できません。

{!$Setup.CustomSettingName__c.CustomFieldName__c}

Apex

Apex はどちらのカスタム設定にもアクセスできます。

リストカスタム設定のサンプル

カスタム設定のデータを追加する場合は、各データセットに名前を付ける必要があります。このデータセット名によって、各データセットを区別できます。次の例では、カスタム設定データの対応付けが返されます。getAll メソッドは、リスト設定に関連付けられているすべてのカスタム項目の値を返します。

Map<String_dataset_name, CustomSettingName__c> mcs = CustomSettingName__c.getAll();

次の例では、指定したデータセットに関連付けられているすべての項目値を返す getValues メソッドを使用します。このメソッドは、異なるパラメータを使用して、リストと階層のどちらのカスタム設定でも使用できます。

CustomSettingName__c mc = CustomSettingName__c.getValues(data_set_name);
階層カスタム設定のサンプル

次の例では、組織レベルのデータセット値を返す getOrgDefaults メソッドを使用します。

CustomSettingName__c mc = CustomSettingName__c.getOrgDefaults();

次の例では、指定したプロファイルのデータセット値を返す getInstance メソッドを使用します。getInstance メソッドは、ユーザ ID で使用することもできます。

CustomSettingName__c mc = CustomSettingName__c.getInstance(Profile_ID);

カスタム設定の特定データを取得する場合(リスト型の場合

f:id:jude2016:20190412131356p:plain
カスタム設定(リスト型)のデータの1つ

CustomSettingName__c.getAll().get('CSVImport');

参考サイト

公式サイト