セールスフォースお助け隊ブログ | Salesforce
セールスフォース開発者のブログRSS
Apexから、レコードタイプを更新するにはどうすればよいか?

Apexから、レコードタイプを更新するにはどうすればよいか?

2010年12月 7日 18:05
みなさんこんにちは。
salesforceお助け隊の加藤です。

レコードタイプを使用しているオブジェクトに対して、
Apexクラスやトリガから更新処理を行う場合に、
条件によって任意のレコードタイプを更新したい場合があるかと思います。

レコードタイプのデータ型はID型です。
よって、対象のレコードタイプのIDを更新しなくてはいけません。
そこで、レコードタイプのIDをどように取得すればよいか悩んだことはありませんか?

あらかじめ、登録してあるレコードタイプのIDを調べておき、
プログラムにハードコーディングするという方法もあるかと思いますが、
これでは、テスト環境から本番環境に移行するなど、
環境が変わってしまった場合に、IDが変わってしまうので正常に動作しません。

では、どうすればよいのでしょうか?

この場合、他のオブジェクトのレコードを参照するのと同様に、
レコード名で情報を取得すれば、IDに依存することなく、
レコードタイプの情報を取得することができます。
以下に、具体例を記載しておくので、参考にしてください。

例)
取引先責任者に、「代表取締役」というレコードタイプがあったとして、
そのレコードタイプのIDを取得する方法です。

// 取引先責任者に設定されているレコードタイプのリストを取得します
Schema.DescribeSObjectResult R = Contact.SObjectType.getDescribe();
List<Schema.RecordTypeInfo> RT = R.getRecordTypeInfos();

String sRecTypeName = '代表取締役';
Id sRetId;

// 取得したリストにレコードタイプ名が「代表取締役」のレコードがあるかを検索し、
// 対象のレコードのレコードタイプIDを取得します
for (RecordTypeInfo i : RT){
    System.debug(i.getName());
    if (i.getName() == sRecTypeName) {
         sRetId = i.getRecordTypeId();
         System.debug(sRetId);
         break;
    }
}

「セールスフォースお助け隊ブログ」へのコメントやご意見等ありましたら
ファンページまでお願いします。  Facebookのファンページ

Yahoo!ブックマークに登録 Google ブックマーク はてなブックマーク Livedoorクリップ

← 前のエントリー     次のエントリー →

顧客管理システム Salesforce CRM