Wednesday, January 22, 2014

How to get all the required fields of sObject dynamically

How to get all the required fields of sObject dynamically

There is no direct property available in Apex dynamic API to represent the required field. However there is another way to know about it.
If any field have below three properties then it is mandatory field.

If it is Creatable
If it is not nillable and
If it does not have any default value

Map<String, Schema.SObjectType> m  = Schema.getGlobalDescribe() ;
Schema.SObjectType s = m.get(so.apiName) ;
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
                }

}

No comments:

Post a Comment