通常在Salesforce的Apex代碼和測試中方灾,都會不可避免的需要用到sObject的RecordTypeID,一般情況下碌更,有兩種方式來獲仍3ァ:
方式一:
如果足夠熟悉RecordType表的話,通過SOQL痛单,定義一個方法嘿棘,通過傳入sObjectType和你需要的Record Type
Name就可以獲取對應的RecordType的ID了。
public Id getRecordTypeIdBySobjectTypeAndName(String sObjType,String recordTypeName){
return [select Id, Name from RecordType where SobjectType = :sObjType and Name = :recordTypeName].Id;
}
方式二:
對于方式一旭绒,其實無形之中會增加在Salesforce中的Too many queries的概率鸟妙,畢竟你增加了一個Query,本來query都是要省著用的挥吵,而且有時候會不小心放在for-loop里面圆仔,就很尷尬了。所以蔫劣,其實是有方法不通過Query來獲取ID的:
Id devRecordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByName().get('Development').getRecordTypeId();
解析:
Schema.SObjectType.(sObjectd API name).getRecordTypeInfosByName().get('recordType的Name').getRecordTypeId();
這樣就可以動態(tài)的在任何時候,任何地方个从,獲取你想要的RecordType的ID脉幢,進而進行后續(xù)操作了,而且沒有占用query次數(shù)嗦锐。