Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Salesforce Spring’16
輪読会
株式会社チームスピリット 古川 久勝
今回の内容
• 制限付き選択リスト
• グローバル選択リスト
予め言っておこう
Spring16 リリースノートより
制限付き選択リストとは?
Spring16 リリースノートより
選択リスト値以外の値を入れれなくことができるよー
どうすれば設定されるの?
※適用から適用外はできるが、適用外から適用はできない
どんなエラーが出るの?
試してみました
Account acc = new Account();
acc.Name = 'test2';
acc.SelectLimitTest__c = 'test';
insert acc;
System.D...
既に選択されていた場合のリスト値削除は?
グローバル選択リストとは何ぞ?
Winter16 リリースノートより
ようするに選択リスト値を一元管理することが可能になったって事
設定とかどうなんでしょ
設定内容はほぼ選択リストと同じ感じです。
設定とかどうなんでしょ
選択リストや複数選択リストの両方で使用できる
設定とかどうなんでしょ
一度設定するとグローバル選択リストを変更することは出来ない!
もちろん型変換やグローバル選択リストから戻す、という甘えは許されない
設定とかどうなんでしょ
当然の権利のようにグローバル選択リストが使用されている場合は削除不可!
また選択リスト値が使用されている場合は選択リスト値も消せない!
設定とかどうなんでしょ
カスタムメタデータ設定ではグローバル選択リストは使えなかった
メタデータとかどんな感じ
使用したもの:EclipseとForce.com IDE
Ver36未満の場合は…
<fields>
<fullName>SingleGlobalTest__c</fullName>
<externalId>false...
メタデータとかどんな感じ
使用したもの:EclipseとForce.com IDE
Ver36の場合は…
<fields>
<fullName>SingleGlobalTest__c</fullName>
<externalId>false</...
Apexとかではどう?
使用した処理:
Account.SObjectType.fields.SingleGlobalTest__c.getDescribe().getPickListValues()
API Ver36未満の場合は…
DEBU...
Apexとかではどう?
使用した処理:
Account.SObjectType.fields.SingleGlobalTest__c.getDescribe().getPickListValues()
API Ver36の場合は…
DEBUG|...
Apexとかではどう?
Account acc = new Account();
acc.Name = 'test';
acc.SingleGlobalTest__c = 'testaa';
insert acc;
存在しない選択リスト値を入れ...
Apexとかではどう?
教えて 先生!
Spring16 リリースノートより
終制作・著作
Upcoming SlideShare
Loading in …5
×

Spring16の選択リストに対して浅く掘り下げてみる

1,239 views

Published on

Tokyo Salesforce DG Meetup #11 輪読会

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Spring16の選択リストに対して浅く掘り下げてみる

  1. 1. Salesforce Spring’16 輪読会 株式会社チームスピリット 古川 久勝
  2. 2. 今回の内容 • 制限付き選択リスト • グローバル選択リスト
  3. 3. 予め言っておこう Spring16 リリースノートより
  4. 4. 制限付き選択リストとは? Spring16 リリースノートより 選択リスト値以外の値を入れれなくことができるよー
  5. 5. どうすれば設定されるの? ※適用から適用外はできるが、適用外から適用はできない
  6. 6. どんなエラーが出るの? 試してみました Account acc = new Account(); acc.Name = 'test2'; acc.SelectLimitTest__c = 'test'; insert acc; System.DmlException: Insert failed. First exception on row 0; first error: INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST, テスト制限リスト: 制限つき 選択リスト項目の値が不適切: test: [SelectLimitTest__c]
  7. 7. 既に選択されていた場合のリスト値削除は?
  8. 8. グローバル選択リストとは何ぞ? Winter16 リリースノートより ようするに選択リスト値を一元管理することが可能になったって事
  9. 9. 設定とかどうなんでしょ 設定内容はほぼ選択リストと同じ感じです。
  10. 10. 設定とかどうなんでしょ 選択リストや複数選択リストの両方で使用できる
  11. 11. 設定とかどうなんでしょ 一度設定するとグローバル選択リストを変更することは出来ない! もちろん型変換やグローバル選択リストから戻す、という甘えは許されない
  12. 12. 設定とかどうなんでしょ 当然の権利のようにグローバル選択リストが使用されている場合は削除不可! また選択リスト値が使用されている場合は選択リスト値も消せない!
  13. 13. 設定とかどうなんでしょ カスタムメタデータ設定ではグローバル選択リストは使えなかった
  14. 14. メタデータとかどんな感じ 使用したもの:EclipseとForce.com IDE Ver36未満の場合は… <fields> <fullName>SingleGlobalTest__c</fullName> <externalId>false</externalId> <label>単一グローバルテスト</label> <trackFeedHistory>false</trackFeedHistory> <type>Picklist</type> </fields> <fields> <fullName>SingleSelectTest__c</fullName> <externalId>false</externalId> <label>単一選択リスト</label> <picklist> <picklistValues> <fullName>select1</fullName> <default>false</default> </picklistValues> <sorted>false</sorted> </picklist> <trackFeedHistory>false</trackFeedHistory> <type>Picklist</type> </fields> 「picklist」タグが存在しないため、 ある前提の仕組みは要注意!
  15. 15. メタデータとかどんな感じ 使用したもの:EclipseとForce.com IDE Ver36の場合は… <fields> <fullName>SingleGlobalTest__c</fullName> <externalId>false</externalId> <globalPicklist>GlobalTest</globalPicklist> <label>単一グローバルテスト</label> <trackFeedHistory>false</trackFeedHistory> <type>Picklist</type> </fields> <fields> <fullName>SingleSelectTest__c</fullName> <externalId>false</externalId> <label>単一選択リスト</label> <picklist> <picklistValues> <fullName>select1</fullName> <default>false</default> </picklistValues> <sorted>false</sorted> </picklist> <trackFeedHistory>false</trackFeedHistory> <type>Picklist</type> </fields> 「globalPicklist」タグが付いたよ! ※選択リスト値は取れません
  16. 16. Apexとかではどう? 使用した処理: Account.SObjectType.fields.SingleGlobalTest__c.getDescribe().getPickListValues() API Ver36未満の場合は… DEBUG|(Schema.PicklistEntry[getLabel=test1;getValue=test1;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=test2;getValue=test2;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=test3;getValue=test3;isActive=true;isDefaultValue=false;]) 取れる!
  17. 17. Apexとかではどう? 使用した処理: Account.SObjectType.fields.SingleGlobalTest__c.getDescribe().getPickListValues() API Ver36の場合は… DEBUG|(Schema.PicklistEntry[getLabel=test1;getValue=test1;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=test2;getValue=test2;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=test3;getValue=test3;isActive=true;isDefaultValue=false;]) 取れるぞ!
  18. 18. Apexとかではどう? Account acc = new Account(); acc.Name = 'test'; acc.SingleGlobalTest__c = 'testaa'; insert acc; 存在しない選択リスト値を入れてみたらどんなエラーになるのかな? 成功しちゃいました
  19. 19. Apexとかではどう? 教えて 先生! Spring16 リリースノートより
  20. 20. 終制作・著作

×