Memos About SalesForce

Salesforceにハマってたこと!

Salesforce 選択リスト Apexで取得

こんにちは、管理人の@Salesforce.Zです。

Salesforceには選択リストがあり

この選択リストの値を画面で使うとかよくあります。

しかし、ラベルとか、オブジェクトの設定で変更すると、開発側にも影響するため

Apexでオブジェクトの選択リスト設定を取得し、画面に設定するのがベスト

今回、Apex側でその取得する方法を共有します。

目次

選択リスト取得

Apex側で取得

コード

//選択リスト型の選択できる値を取得
public List<Schema.PicklistEntry> getPicklist(String sObjName, String fieldName){
    List<Schema.PicklistEntry> pickList;
    Schema.SObjectType sObjType = (Schema.SObjectType) Schema.getGlobalDescribe().get(sObjName);
    if(sObjType != null){
        Map<String, Schema.SObjectField> fieldmap = sObjType.getDescribe().fields.getMap();
        Schema.SObjectField f = (Schema.SObjectField) fieldmap.get(fieldName);
        if(f != null){
            Schema.DescribeFieldResult r = f.getDescribe();
            pickList = r.getPicklistValues();
            System.debug('値' + pickList);
        }
    }
    return pickList;
}

コード使用例

//取引先の種別という選択リストの取得
List<Schema.PicklistEntry> picklist = getPicklist('Account', 'Type');

//ログで中身を確認する
for(Schema.PicklistEntry pick : picklist){
    System.debug('-----------------');
    System.debug('Label :' + pick.getLabel());
    System.debug('Value :' + pick.getValue());
    System.debug('Active:' + pick.isActive());
}