州/国/テリトリー選択リストを有効化するとApexで国や州のコードも取得できるようになります。例えば下記のような感じです。
SELECT Id, Name, BillingCountry, BillingCountryCode ,BillingState, BillingStateCode FROM Account
取得が可能。ということで登録も可能か試してみました。
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;
下記のように都道府県コードでも都道府県の値でもどちらでも問題なく取得可能でした。
選択リスト型になるのでリスト値取得できるかと試してみました。Codeの方にするとリスト値が取得できるようです。
Schema.DescribeFieldResult F = Account.BillingStateCode.getDescribe(); List<Schema.PicklistEntry> P = F.getPicklistValues(); for (Schema.PicklistEntry pick : P) { System.debug(pick.getLabel() + ':' + pick.getValue()); }
実行結果はこちら。
取得できる順番はあいうえお順になってしまうのでちょっと不便そうでした。州/国/テリトリー選択リストとApexについてはこんな感じです。
追記
州/国/テリトリー選択リストを有効化するとき国の値をセットしないとDML Exceptionエラーが発生するので有効化後は必ず値をセットするようにしたほうが良いみたいです。