親オブジェクトがどれかを判断したいときがある
添付ファイル(Attachment)の 参照先 ID(ParentId)
ToDo(Task)の 関連先 ID(WhatId)
行動(Event)の 関連先 ID(WhatId)
など複数の参照先オブジェクトを指定できる項目があります。
トリガ処理などで、特定のオブジェクトの時に動かしたい処理があって、その時には、Id.getSobjectType() で特定ができます。
例えば、顧客の添付ファイルは、Excel以外はエラーにしたいという要件があったとします。
for( Attachment row : Trigger.New ){
if( row.parentid.getSobjectType() == Account.sobjecttype) {
if( row.Name.endsWithIgnoreCase('.xlsx') == false
&& row.Name.endsWithIgnoreCase('.xls') == false ) {
row.addError('Excelファイルを登録してください。');
}
}
}
こんな風にして、参照先のオブジェクトの判断ができます。
この関数を知らなくてオブジェクトのキープレフィックスを取得して、IDの頭3桁で比較したり、その前は、IDをSetにつめこんで、オブジェクトを1回検索して判断していました。
昔書いたコードは大分無理をしていました。。