"Custom Settings are hidden gems in Apex that always impresses people, especially bosses!" but the next question that stands is "How?"
As shared by David Liu in his site sfdc99.com
Consider a block of code that is executing and sending out different results for different input types but those inputs are not managed within the code. Its managed outside, by someone else. Being a developer, your task is reduced as all you have to do is to enable your code to understand those external values from some external object and use them for different outputs.
Custom settings are very useful when it comes to storing static or reusable information in Salesforce, plus it also can work as a switch to turn your application rules ON and OFF. Very basically speaking, Custom Settings are much like Custom Objects and are accessible via their own API, but you can’t have triggers on a Custom Setting and the available field types are more limited. They do count towards your Custom Objects governor limit however. So comes the next obvious question. Why should we use em? Custom Settings are stored in the application cache and do not count against SOQL limits when fetched. Also they are much quicker to implement, easier to maintain and they won’t use up one of your precious Custom Tab limits to maintain. They can also only be updated by a System Administrator (or Configure Application profile permission user). Custom Settings have their own methods to access them – we will have a look below at an example on how we can use getInstance() and getAll() methods.
More reasons are mentioned below:
* To hold environment ids
* Use it as a switch for Apex Triggers, validation rules to turn on or off.
* Providing dynamic overrides in the VF pages
* Switching VF components on/off like "Show details checkbox" or "Show history checkbox" and these details would be remembered as we can run CS depending on Org,profile pr user level.
The formal conversation now:
Types of Custom Settings? List and Hierarchical.
Difference? Data in List settings do not vary by user and profile, there is no ownership, field level security or record security, and it is available organisation wide (i.e. public for all).
Example to use a custom setting in the validatuion rule:
AND(NOT($Setup.Opportunity_Web__c.Exclude_Marketing_for_Web__c)
Opportunity_Web__c --> Custom Setting Name
Exclude_Marketing_for_Web__c --> Field in Custom setting
NOTE: Only Hierarchical custom settings can be used as a part of the validation rules/formula fields.
References:
sfdc99.com - David Liu
http://makepositive.com/Salesforce-custom-settings
http://www.verticalcoder.com/2012/07/26/custom-settings/
Comments
Post a Comment