2012年03月05日

【salesforce】レコードタイプIDを取得する


オブジェクトにはレコードタイプっていうのがあって、Apexcodeからinsertやupdateのときに設定したい時があるゼイ。

レコードタイプにはレコードIDを設定するんだが、そのIDは「RecordType」オブジェクトで管理されているゼイ。

ここにsalesforceで使用するすべてのレコードタイプが管理されているゼイ。

AccountやContact、Caseで使用するレコードタイプはここに保存されているゼイ。


取得する方法はざっと2種類あるゼイ。
 

■1つはsoqlをつか方法だゼイ。
 

sobject[] recordTypeList = 
[select SobjectType, NamespacePrefix, Name, LastModifiedDate, LastModifiedById, Id, DeveloperName, Description, BusinessProcessId from RecordType ];

これだと全オブジェクトのレコードタイプが取得されるのでwhere条件でオブジェクトを絞ると使いやすいかな。
絞るときは「SobjectType」をつかう。

例えば、Caseのレコードタイプを取得する場合は

「where SobjectType='Case'」

こんな感じだぜい。



■んでもってもう1個は「Schema Methods」をつかう方法

スマートではない、メソッドを作ってみましたよ。 

オブジェクト名からレコードタイプを取得するやつだゼイ。

Schema.getGlobalDescribe()を使ってるゼイ。



---------------------------------------------------------

public List<Schema.RecordTypeInfo> getRecordTypeByObjectName(String objName) {
List<Schema.RecordTypeInfo> recordTypes;
    if(objName != null ){
        Schema.SObjectType sType = (Schema.SObjectType)Schema.getGlobalDescribe().get(objName);
        if(sType != null){
            Schema.DescribeSObjectResult sObjectResult = sType.getDescribe();
            recordTypes = sObjectResult.getRecordTypeInfos();
        }
    }
    return recordTypes;
}

---------------------------------------------------------
 
例えば、Caseのレコードタイプを取得する場合の呼び出し方はこんな感じだゼイ。

---------------------------------------------------------

List<Schema.RecordTypeInfo> rs = getRecordTypeByObjectName('Case');
for (RecordTypeInfo r : rs){
System.debug('★id='+r.getRecordTypeId());
System.debug('★name='+r.getName());
}

---------------------------------------------------------

Caseにレコードタイプがtestをtest2を作成している場合の出力結果だぜい。

★id=12345678901234567
★name=マスタ
★id=12345678900000000
★name=test
★id=12345678911111111
★name=test2

RecordTypeInfoの詳しい説明はこちら→ URL(英語)


「マスタ」ていうのは必ずあるみたいだゼイ。
デフォルト値なのかな。レコードタイプを何も指定しないとこれがつくのかな。


まーとにかくレコードタイプIdを取る方法はこんな感じかな。

ほかにも良い方法はあるとは思うがね。

さて、それを考えるのはまた今度ってことで次に行こうゼイ俺。








volvic_beer at 14:30│Comments(0)TrackBack(0)salesforce 

トラックバックURL

コメントする

名前
URL
 
  絵文字