Activity › Forums › Salesforce® Discussions › How to find all required fields of sobject in Salesforce?
Tagged: Custom Object, Salesforce sObject, Schema GetGlobalDescribe, Schema sObjectType, sObject Field, sObject List Type
-
How to find all required fields of sobject in Salesforce?
Posted by Ankit on February 21, 2018 at 9:40 AMHi all,
Is there any way to find all required fields of a Sobject?
Thanks
Parul replied 7 years, 7 months ago 5 Members · 4 Replies -
4 Replies
-
Hi ankit,
you may use following code.
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 field : fields.keyset()) {
Schema.DescribeFieldResult describeResult = fields.get(field).getDescribe();
if (describeResult.isCreateable() && !describeResult.isNillable() && !describeResult.isDefaultedOnCreate()) {
System.debug(field);
}
}hope it helps 🙂
- [adinserter block='9']
-
Hi Ankit,
here 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
Yo can use the below code for finding it out
Map<String, Schema.SObjectType> m = Schema.getGlobalDescribe() ;
Schema.SObjectType s = m.get(‘sObjectName’) ; //give your object name in place of sObjectName
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
system.debug(‘///’ + f );
}
}Hope this helps you more.
-
Schema.DescribeSObjectResult r = systemObjectType.getDescribe();
Map<String,Schema.SObjectField> M = r.fields.getMap();
for(String fieldName : M.keySet())
{
Schema.SObjectField field = M.get(fieldName);
Schema.DescribeFieldResult F = field.getDescribe();
//A nillable field can have empty content. A isNillable Boolean non-nillable field must have a value for the object to be //created or saved.
// if F.isNillable() is false then field is mandatory
Boolean isFieldreq = F.isNillable() -
There is a way to programmatically learn about metadata of your datamodel with in Apex.
Schema Describe calls provides the ability to programitically describe the information about the current org schema such as list of top level objects including custom objects and their fields.Map<String,Schema.SobjectType> gd = Schema.getGlobalDescribe();
We can also use schemaDescribe() to create tree structure of all the objects and fields in the schema browser, to do this we need to use the codemapMap<String,Schema.SobjectType> gd = Schema.getGlobalDescribe();
Returns map of all Sobjects names or Keys to sObject tokens or values for the standard and custom objects defined in the organization.
Log In to reply.