セーブポイントが見つからない

【Apex】レコードタイプの取得方法

こんにちは、にいるです。

今日はオブジェクト「RecordType」の取得方法について、見ていきたいと思います。

【ヘルプ】RecordType
【ヘルプ】RecordTypeInfoクラス

1.SOQLを使用したRecordTypeでの取得方法

レコードタイプをApexでもSOQLを使用することで取得することができます。
その取得方法は取引先も取引先責任者の標準オブジェクトもカスタムオブジェクトも各オブジェクトのAPI名を使うのではなく、「RecordType」をFrom句で指定するだけです。
こんな感じですね。

これを開発者コンソールで叩いてみます。

このようにオブジェクト毎に全て取得できます。
各項目を説明すると下記になります。

項目名 説明
SobjectType オブジェクト
Name レコードタイプのラベル名
DeveloperName レコードタイプのAPI名
Description レコードタイプの説明
BusinessProcessId 関連しているビジネスプロセスのID
IsActive Trueなら有効
Falseなら無効

2.RecordTypeInfoクラスでの取得

次にSOQLではなく、RecordTypeInfoクラスを使用した取得についてみたいと思います。
RecordTypeInfoのメソッドである「getRecordTypeInfos」を使用すれば簡単に取得できます。

サンプルが下記になります。
やっていることは、SOQLで取得したものをインスタンス化した「Schema.DescribeSObjectResult」から探しているイメージですね。

最後にデバッグで見てみると同じものが返ってきている結果がわかります。

3.まとめ

いかがでしたでしょうか。

レコードタイプによる分岐って結構、書くことが多いですよね。
僕自身、プロファイル判定や、DMLでInsertやUpdateするときに指定する場面で使ってます。

1年前の僕なら、何を書いてあるかわからなかったですね笑
日々、勉強しているおかげで少しずつ理解できるようになってきました。

知識つけて勘所を鍛えて、もっと早くアウトプットできるようになりたいですね!

ぜひ、みなさんも書いてみてください!

他にも色々と標準機能やSalesforce機能について紹介しています。
そのまとめ一覧ページはこちらになりますので、よければ見てみてください。

ではでは!