Salesforce技術ブログ(ルックアップ検索画面での最近参照したデータ表示について)
こんにちは!祥子姉さんです。
ルックアップ検索(虫眼鏡ボタン)を押し、参照/主従関係のデータを検索する際、
お客様から良く、「最近参照したデータに予めデータが表示されていないと、
何で検索すればいいかよくわからないよ~」と言われることはありませんか?
1度でも参照したことのあるデータであれば、当然、「最近参照したデータ」に表示され
ますが、1度も参照したことが無い場合、下記のような画面となってしまいます。
上記赤枠の通り、中身が空っぽとなります。
これを(少々強引ですが)一気に解決してしまおうというのが、今回のブログ内容となります。
★FOR VIEWの使用方法について
SOQLのFOR VIEW句を使用することで、該当オブジェクトのデータを、一気に参照
したことにすることができます。
<FOR VIEW句とは>
①FOR VIEWを使用し、Selectしたレコードの LastViewedDate 項目を自動的に更新することができます。
②レコードが RecentlyViewed オブジェクトに追加され、取得されたレコードに最近参照したデータが反映されます。
<Force.com SOQL および SOSL リファレンスより>
https://developer.salesforce.com/docs/atlas.ja-jp.200.0.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_for_view.htm
リファレンスに記載されている通り、「FOR VIEW」句を使用してクエリを実行することで、
最近参照したデータが表示されるようになります。
※SOQLを実行することで、参照したことのないデータでも表示されるようになります。
※ただし、表示されるユーザは「FOR VIEWを実行したユーザのみ」なので、注意が必要です。
<以下使用例>
システム開発ユーザの場合は、開発者コンソールより、SOQLを実行させることで、FOR VIEW
句の利用が可能です。
開発者コンソールを使用できない場合は、下記サンプルソースをホームページコンポーネントに追加し、
データを見せたいユーザに代理ログインした上で、ボタンをクリックするという方法で「FOR VIEW」句を
実行することもできます。
<サンプルソース>
<apex:page >
<script src=""../../soap/ajax/36.0/connection.js"" type=""text/javascript""></script><script>
sforce.connection.sessionId='{!GETSESSIONID()}';
</script>
<head>
<script type=""text/javascript"">
function forView() {
var result = sforce.connection.query(""SELECT Id, Name FROM Account For View"");
var records = result.getArray(""records"");
if(records.length > 0){
alert(""処理が完了しました。"");
}else{
alert(""エラーが発生しました。"");
}
}
</script>
</head>
<apex:form >
<apex:commandButton value=""For View"" onclick=""forView();""/>
</apex:form>
</apex:page>
上記、ホームページコンポーネントに追加したイメージです。
FOR VIEWボタンを押すことで、上記のように、「最近参照したデータ」が表示されるようになります。
これを利用すると、ユーザごとにデータを一つ一つ参照するという手間を省くことができるようになります。
ただし、閲覧権限により、見えてはいけないデータが表示される可能性はありますので、そこは十分にご注意
ください。