tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:州/国/テリトリー選択リストとApexを試してみました

州/国/テリトリー選択リストを有効化するとApexで国や州のコードも取得できるようになります。例えば下記のような感じです。
f:id:tyoshikawa1106:20190323095849p:plain

SELECT Id, Name, BillingCountry, BillingCountryCode
                ,BillingState, BillingStateCode FROM Account 


取得が可能。ということで登録も可能か試してみました。
f:id:tyoshikawa1106:20190323100545p:plain

List<Account> accounts = new List<Account>();
// 都道府県コードで作成
Account account1 = new Account(
Name = 'テスト取引先1'
,BillingStateCode = '10'
);
// 都道府県の値で作成
Account account2 = new Account(
Name = 'テスト取引先2'
,BillingState = '愛知県'
);
// リスト追加
accounts.add(account1);
accounts.add(account2);
// 登録
insert accounts;


下記のように都道府県コードでも都道府県の値でもどちらでも問題なく取得可能でした。
f:id:tyoshikawa1106:20190323100631p:plain


選択リスト型になるのでリスト値取得できるかと試してみました。Codeの方にするとリスト値が取得できるようです。
f:id:tyoshikawa1106:20190323101709p:plain

Schema.DescribeFieldResult F = Account.BillingStateCode.getDescribe();
List<Schema.PicklistEntry> P = F.getPicklistValues();

for (Schema.PicklistEntry pick : P) {
    System.debug(pick.getLabel() + ':' + pick.getValue());
}


実行結果はこちら。
f:id:tyoshikawa1106:20190323101736p:plain


取得できる順番はあいうえお順になってしまうのでちょっと不便そうでした。州/国/テリトリー選択リストとApexについてはこんな感じです。

追記

州/国/テリトリー選択リストを有効化するとき国の値をセットしないとDML Exceptionエラーが発生するので有効化後は必ず値をセットするようにしたほうが良いみたいです。
f:id:tyoshikawa1106:20190324125325p:plain

参考