Activity Forums Salesforce® Discussions How to get all the required fields of sObject dynamically in Salesforce? Reply To: How to get all the required fields of sObject dynamically in Salesforce?

  • Manpreet

    Member
    April 28, 2017 at 1:20 pm

    Hi saurabh,

    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() ;
    List<String> lstrequiredfields=new List<String>();

    for(String f : fields.keyset())
    {
    Schema.DescribeFieldResult desribeResult = fields.get(f).getDescribe();
    if( desribeResult.isCreateable() && !desribeResult.isNillable() && !desribeResult.isDefaultedOnCreate() )
    {
    //This is mandatory / required field
    lstrequiredfields.add(f);

    }
    }

    Thanks.