tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:RecentlyViewedオブジェクトで最近参照したレコードにアクセス

f:id:tyoshikawa1106:20141110221607p:plain


Salesforceの最近参照したレコードにアクセスしたいときのため、RecentlyViewedオブジェクトが用意されています。このオブジェクトを使うことで取引先や取引先責任者などの任意のオブジェクトの最近参照したレコードにアクセスできます。

f:id:tyoshikawa1106:20141110221948p:plain


RecentlyViewedオブジェクトはType項目に各オブジェクトの情報を保持しています。WHEREで条件指定することで対象のオブジェクトのみ取得できます。IN句で複数オブジェクトを対象にすることも可能です。


LastNameやFirstNameのように特定オブジェクト専用の項目を持っていますが、関係ないオブジェクトを取得する際にはNULLとなっています。また対象オブジェクトの全ての項目にアクセスできるわけではないので、RecentlyViewedに存在しない項目の情報が欲しい場合は、それぞれのオブジェクトに対して別途クエリを実行する必要があります。


最終参照日は『LastViewedDate』項目に保持されています。この項目をORDER BYのソート条件に指定することで最近のレコードから順に表示できます。


この『LastViewedDate』項目ですが、取引先などそれぞれのオブジェクト自身にも存在します。そのためRecentlyViewedオブジェクトを使わなくても最終参照日を条件にすることで最近参照したレコードを取得することも可能です。

f:id:tyoshikawa1106:20141110222805p:plain


RecentlyViewedオブジェクトはSalesforceのシステム情報となります。なのでテストクラス内でテストデータとして用意しなくても既存の組織に存在していればアクセスが可能です。

f:id:tyoshikawa1106:20141110223046p:plain

f:id:tyoshikawa1106:20141110223113p:plain


しかし、最近参照したレコード情報は他のシステム情報のようにリリース先の組織に存在しているとは限らないため、既存のレコード情報を使用したテストクラスは作成しない方がいい気がしました。


また、テストデータを作成することもできないみたいなので、テストクラスの処理か判定する『Test.isRunningTest()』を使用して何か対応を考えるか、レコードが存在しない状態でもテストが通るような対処が必要になるかと思います。


RecentlyViewedを使った処理のサンプルコードはこちらです。

RecentlyViewedオブジェクトの参照ページ