如何描述(枚举)对Salesforce中特定记录类型有效的选项列表?

Dav*_*vid 7 reflection salesforce

在顶点代码中,我想枚举一个选项列表字段的合法值.要做到这一点,我可以调用Account.Foobar__c.getDescribe().getPickListValues(),我有一个Schema.PickListEntry值列表.

但是,可以为给定的sObject设置多个记录类型.例如,帐户可能具有"制造商","分销商"和"零售商"记录类型.在Salesforce设置中,可以根据记录类型编辑(限制)每个字段的选项列表条目.因此,零售商类型帐户可能仅使用Foobar字段的选项列表值的子集.

所以基本上我想要的Account.Foobar__c.getDescribe().getPickListValues('Retailer')不过这不是语法.validFor方法看起来很有希望,但看起来它只适用于字段相关的选项列表 - 仅按记录类型过滤的选项列表返回false isDependentPicklist.

小智 6

我知道这是一个老帖子,但是下面的信息可能会帮助那些仍然需要答案的人.

我在这里发现,通过进行describeLayout()调用,实际上可以获得记录类型特定选项列表值的列表.

使用您的示例(C#):

DescribeLayoutResult result = binding.describeLayout("Account", new string[] { "01230000000xxXxXXX" } );
PicklistEntry[] values = result.recordTypeMappings[0].picklistsForRecordType[12345].picklistValues;
  • "01230000000xxXxXXX"替换为零售商记录类型对象的RecordTypeId.使用查询"SELECT Id FROM RecordType WHERE Name ='Retailer'"来获取值.
  • 12345替换为您希望获取其值的选项列表对象的索引.


jkr*_*ill 3

不幸的是,你不能在纯粹的 Apex 中做到这一点。元数据 API 确实公开了它。

相关意见:http://boards.developerforce.com/t5/Apex-Code-Development/Any-way-to-obtain-picklist-values-by-record-type/td-p/287563