プログラマ38の日記

主にプログラムメモです。

Salesforce: ページレイアウトの関連リストに条件をつける。

Salesforceの標準ページレイアウトの関連リストは参照可能なレコード全て表示されますが、要望として条件に該当するレコードだけ表示したい時があります。

 

例えば、その顧客の仕掛中の商談だけ表示する、または、現在対応中のケースだけ表示するなどが考えられます。

 

現時点(APIバージョン39)では、ページレイアウトの関連リストに条件を設定することはできませんが、次のように工夫することで対応できます。

 

関連リストに条件をつける方法

[手順概要]

参照関係、(もしくは主従関係)の項目に対応する参照関係項目をもう1つ用意します。

そして、表示する条件に合致した時に、トリガで用意した項目へ元の参照関係、および主従関係の項目の値をセットし、条件に合致しない時はnullをセットする処理を行います。

関連リストには用意した参照関係項目を使って表示します。

 

[手順詳細]

 例として、取引先と商談を使います。Salesforceの標準項目として、商談には、「取引先ID」があり、取引先への参照関係項目があります。

 

手順1.商談に、取引先への参照関係項目を作成します。仮に「取引先 ID(完了したものは除く)」項目とします。

 

手順2.商談にApexトリガを作成し、新規作成、更新時に、フェーズが"Closed Won" , "Closed Lost"以外のときに、「取引先ID」の値を、「取引先 ID(完了したものは除く)」にセットし、"Closed Won" , "Closed Lost"の時は、「取引先 ID(完了したものは除く)」にnullをセットします。

 

手順3.取引先のページレイアウトの関連リストに、取引先 ID(完了したものは除く)」の関連リストを表示します。(関連リストの表示ラベルを「商談 (完了したものは除く)」にします)

 

そうすると、次のように完了したもの以外で関連リストを表示できます。

(商談の関連リストは完了を含んでいて、商談(完了したものは除く)の関連リストは完了は除いています)

f:id:crmprogrammer38:20170405145126p:plain