エンティティ定義(EntityDefinition)の子オブジェクトに、項目定義(FieldDefinition )があります。項目定義(FieldDefinition )をselectすると、編集画面で初期値をセットする時に使う項目IDが取得できます。
Select
EntityDefinitionId
,DurableId
,QualifiedApiName
,Label
,Length
,DataType
From
FieldDefinition
where EntityDefinition.QualifiedApiName='Opportunity'
取得するとこんな結果がとれます。
取得結果の"DurableId"のピリオド以降が項目IDです。
新規ボタンクリック後の編集画面や、編集ボタンクリック後の編集画面で、初期値をセットする時に、URLパラメータで項目IDを指定すると初期値がセットできますが、項目IDを動的に取ることができます。(参照関係、主従関係の項目IDの頭には、"CF"はついていないので、自分でつける必要があります)
※そもそもURLパラメータで項目IDを使って初期値をセットすることが正式にサポートされているやり方ではないのですが、使わざるをえない場面もあると思います。
環境依存の項目IDが多いとリリース時の作業が大変なので動的に項目IDを取得することで多少は楽になるかなと思います。
注意点としては、
・APIバージョンは33以上で使えます。
・項目レベルセキュリティが設定されてないとselect結果に含まれません。
・必ずオブジェクトの検索条件が必要です。(一度に複数オブジェクトの検索が可能です)
・項目定義(FieldDefinition )には他にも便利な項目がたくさんありますが、一部オブジェクトで、ServiceDataTypeId , ValueTypeId をselectすると内部エラーが発生します。うっかり全項目selectするとはまります。
(今のところContactとOpportunityでエラーとなりました)