すべてのレコードタイプで使用可能なピックリスト値についての情報を収集する必要があります。これは、describeLayout APIまたはreadMetadata APIのいずれかを使用して実現できます。しかし、大きなカスタムオブジェクトのためにこの情報を収集しようとすると、問題が発生します。 SalesForce APIは、利用可能なすべての選択リスト値を含むレコードタイプを返します。頂点を使用してレコードタイプのSalesforceのピックリスト値を取得する方法はありますか?
<recordTypeMappings>
<name>Record1</name>
<picklistsForRecordType>
<picklistName>Picklist1</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
<picklistsForRecordType>
<picklistName>Picklist2</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
</recordTypeMappings>
<recordTypeMappings>
<name>Record2</name>
<picklistsForRecordType>
<picklistName>Picklist1</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
<picklistsForRecordType>
<picklistName>Picklist2</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
</recordTypeMappings>
それは私が(200の選択リストと100個のレコードタイプを含む)ラージオブジェクトを持っている場合、私は200 * 100 =2万ピックリストのレコードを取得することを意味します。これにより、API応答が最大80MBまで大きくなります。また、これは非常に非効率的です。ピックリストの値がすべてのレコードタイプで同じであれば、それらはそれぞれのAPIレスポンスに含まれます。
アイデアは、一意のピックリスト値セットを取得し、それらにレコードIDを含めることです。同じピックリストはすべてのレコードタイプと重複しません。
<recordTypeMappings>
<name>Record1, Record2</name>
<picklistsForRecordType>
<picklistName>Picklist1</picklistName>
<picklistValues>
...Values which are the same for Record1 and Record2...
</picklistValues>
</picklistsForRecordType>
<picklistsForRecordType>
<picklistName>Picklist2</picklistName>
<picklistValues>
...Values which are the same for Record1 and Record2...
</picklistValues>
</picklistsForRecordType>
</recordTypeMappings>
これにより応答サイズが小さくなります。 Apexでそれを行う方法はありますか?私はAPIで検索し、適切なものを見つけることができませんでした。すべての処理がSalesforce側で行われるため、Apexは優れたソリューションと思われます。
ありがとうございました。