Ottieni l'elenco di tutti i campi obbligatori di sObject in modo dinamico in Salesforce
Aug 23 2020
Voglio creare un elenco di campi contrassegnati come obbligatori a livello di schema. Ho provato sotto lo snippet, funziona benissimo ma fallisce per il campo con valori predefiniti.
Map<String, Schema.SObjectType> m = Schema.getGlobalDescribe() ;
Schema.SObjectType s = m.get('contact') ;
Schema.DescribeSObjectResult r = s.getDescribe() ;
Map<String,Schema.SObjectField> fields = r.fields.getMap() ;
for(String f : fields.keyset())
{
Schema.DescribeFieldResult desribeResult = fields.get(f).getDescribe();
if( desribeResult.isCreateable() && !desribeResult.isNillable() && !desribeResult.isDefaultedOnCreate())
{
//This is mandatory/required field
}
}
Nota : deve includere campi con valori predefiniti impostati.
Risposte
1 HengkyIlawan Aug 26 2020 at 23:13
La condizione non è necessaria !desribeResult.isDefaultedOnCreate()
perché determina se un campo avrà un valore predefinito alla creazione del record.
Se non hai bisogno di campi definiti dal sistema, usaisCustom()
if (desribeResult.isCreateable()
&& !desribeResult.isNillable()
&& describeResult.isCustom()) {
//This is mandatory/required field
}