みなさんこんにちは。
salesforceお助け隊の加藤です。
レコードタイプを使用しているオブジェクトに対して、
Apexクラスやトリガから更新処理を行う場合に、
条件によって任意のレコードタイプを更新したい場合があるかと思います。
レコードタイプのデータ型はID型です。
よって、対象のレコードタイプのIDを更新しなくてはいけません。
そこで、レコードタイプのIDをどように取得すればよいか悩んだことはありませんか?
あらかじめ、登録してあるレコードタイプのIDを調べておき、
プログラムにハードコーディングするという方法もあるかと思いますが、
これでは、テスト環境から本番環境に移行するなど、
環境が変わってしまった場合に、IDが変わってしまうので正常に動作しません。
では、どうすればよいのでしょうか?
この場合、他のオブジェクトのレコードを参照するのと同様に、
レコード名で情報を取得すれば、IDに依存することなく、
レコードタイプの情報を取得することができます。
以下に、具体例を記載しておくので、参考にしてください。
例)
取引先責任者に、「代表取締役」というレコードタイプがあったとして、
そのレコードタイプのIDを取得する方法です。
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のファンページ