読者です 読者をやめる 読者になる 読者になる

crmprogrammer38の日記

プログラマのメモ

【Salesforce】編集ページで初期値をセットする際の項目IDの一覧を取得する。

エンティティ定義(EntityDefinition)の子オブジェクトに、項目定義(FieldDefinition )があって、項目定義(FieldDefinition )をselectすると、編集画面で初期値をセットする時に使う項目IDが取得できます。

 

Select
EntityDefinitionId
,DurableId
,QualifiedApiName
,Label
,Length
,DataType
From
FieldDefinition
where EntityDefinition.QualifiedApiName='Opportunity'

 取得するとこんな結果がとれます。

f:id:crmprogrammer38:20170330175419p:plain

取得結果の"DurableId"のピリオド以降が項目IDです。これで新規ボタンクリック後の編集画面や、編集ボタンクリック後の編集画面で、初期値をセットする時に、動的に項目IDを取ることができます。(参照関係、主従関係の項目IDの頭にCFをついていないので、自分でつける必要があります)

 

※そもそもサポートされているやり方ではないのがつらいですが、環境依存の項目IDが散乱するとリリース時に大変なことになるよりはましといったところだと思います。

 

注意点としては、

APIバージョンは33以上で使えます。

・項目レベルセキュリティが設定されてないとselect結果に含まれません。

・必ずオブジェクトの検索条件が必要です。(一度に複数オブジェクトの検索が可能です)

項目定義(FieldDefinition )には他にも便利な項目がたくさんありますが、一部オブジェクトで、ServiceDataTypeId , ValueTypeId をselectすると内部エラーが発生します。うっかり全項目selectするとはまります。
(今のところContactとOpportunityでエラーとなりました)