Contents
可能な原因
①API参照名が誤っている
②ユーザ(特にシステム管理者)が当該の項目に対する参照権を持っていない
③当該の項目がPolymorphic Fieldである
チェックすべきこと
①API参照名が間違っていないか
②当該項目の項目レベルセキュリティにおいて、必要なユーザのプロファイル(特にシステム管理者)に対して参照権限が付与されているか
③当該の項目がPolymorphic Fieldではないか
項目レベルセキュリティの付与方法
①「右上の歯車ボタン>オブジェクトマネージャ>当該のオブジェクト>項目とリレーション>当該の項目>項目レベルセキュリティの設定」の順にクリック
②システム管理者を含め、権限が必要なユーザに対して「参照可能」権限を付与
Polymorphic Fieldであるかどうかの確認方法
①「右上の歯車ボタン>オブジェクトマネージャ>当該のオブジェクト>項目とリレーション」の順にクリック
②当該の項目のデータ型として、複数オブジェクトへの参照が記載されている場合、当該項目はPolymorphic Fieldである。
SOQLを用いたPolymorphic Fieldの値の取得方法
SOQL内でTYPEOFを利用してPolymorphic Fieldの値を取得した上で、必要なsObjectのインスタンスを作成してそれを利用する。
例:Task(日本語訳:ToDo笑)の参照先ContactのFirstNameを取得したい場合
List<Task> taskList = [SELECT TYPEOF WhoId WHEN Contact THEN FirstName END FROM Task];
for(Task task: taskList){
if(task.WhoId instanceOf Contact){
Contact con = task.WhoId;
system.debug(con.FirstName);
}
}
↓ポイントとなる部分を抽出したver.
Task task = [SELECT TYPEOF WhoId WHEN Contact THEN FirstName END FROM Task LIMIT 1];
Contact con = task.WhoId;
system.debug(con.FirstName);