Custom settings methods are all instance methods, that is, they are called by and operate on a particular instance of a custom setting. There are two types of custom settings: hierarchy and list. The methods are divided into those that work with list custom settings, and those that work with hierarchy custom settings.
The following are the instance methods for list custom settings.
The following are the instance methods for hierarchy custom settings:
| Name | Arguments | Return Type | Description |
|---|---|---|---|
| getInstance | CustomSetting__c | Returns a custom setting data set record for the running user.
The fields returned in the custom setting record are merged based
on the lowest level fields that are defined in the hierarchy. If no custom setting data is defined for the user, this method returns a new custom setting record with the ID set to a null and with merged fields from higher in the hierarchy. You can add this new custom setting record for the user by using insert or upsert. If no data is defined for this custom setting, this method returns null. Examples:
This method is equivalent to a method call to getInstance(User_Id) for the running user. |
|
| getInstance | ID User_Id | CustomSetting__c | Returns the custom setting data set record for the specified User_Id. The lowest level custom setting record and fields
are returned. Use this when you want to explicitly retrieve data for
the custom setting at the user level. If no custom setting data is defined for the user, this method returns a new custom setting record with the ID set to a null and with merged fields from higher in the hierarchy. You can add this new custom setting record for the user by using insert or upsert. If no data is defined for this custom setting, this method returns null. |
| getInstance | ID Profile_Id | CustomSetting__c | Returns the custom setting data set record for the specified Profile_Id. The lowest level custom setting record and
fields are returned. Use this when you want to explicitly retrieve
data for the custom setting at the profile level. If no custom setting data is defined for the profile, this method returns a new custom setting record with the ID set to null and with merged fields from your organization's default values. You can add this new custom setting for the profile by using insert or upsert. If no data is defined for this custom setting, this method returns null. |
| getOrgDefaults | CustomSetting__c | Returns the custom setting data set record for the organization. If no data is defined for this custom setting, this method returns null. |
|
| getValues | ID User_Id | CustomSetting__c | Returns the custom setting data set record for the specified User_Id. Use this if you only want the subset of custom setting data that has been defined at the user level. For example, suppose you have a custom setting field that has been assigned a value of "foo" at the organizational level, but has no value assigned at the user or profile level. Using getValues(User_Id) returns null for this custom setting field. |
| getValues | ID Profile_Id | CustomSetting__c | Returns the custom setting data set for the specified Profile_Id. Use this if you only want the subset of custom setting data that has been defined at the profile level. For example, suppose you have a custom setting field that has been assigned a value of "foo" at the organizational level, but has no value assigned at the user or profile level. Using getValues(Profile_Id) returns null for this custom setting field. |
For more information on custom settings, see “Custom Settings Overview” in the Salesforce online help.
The following example uses a list custom setting called Games. Games has a field called GameType. This example determines if the value of the first data set is equal to the string PC.
List<Games__C> mcs = Games__c.getall().values(); boolean textField = null; if (mcs[0].GameType__c == 'PC') { textField = true; } system.assertEquals(textField, true);
Foundation_Countries__c myCS1 = Foundation_Countries__c.getValues('United States'); String myCCVal = myCS1.Country_code__c; Foundation_Countries__c myCS2 = Foundation_Countries__c.getInstance('United States'); String myCCInst = myCS2.Country_code__c; system.assertEquals(myCCinst, myCCVal);
In the following example, the hierarchy custom setting GamesSupport has a field called Corporate_number. The code returns the value for the profile specified with pid.
GamesSupport__c mhc = GamesSupport__c.getInstance(pid); string mPhone = mhc.Corporate_number__c;
The following example shows how to use hierarchy custom settings methods. For getInstance, the example shows how field values that aren't set for a specific user or profile are returned from fields defined at the next lowest level in the hierarchy. The example also shows how to use getOrgDefaults.
Hierarchy__c CS = Hierarchy__c.getInstance(); System.Assert(CS.OverrideMe__c == 'Fluffy'); System.assert(CS.DontOverrideMe__c == 'World');
Hierarchy__c CS = Hierarchy__c.getInstance(RobertId); System.Assert(CS.OverrideMe__c == 'Fluffy'); System.assert(CS.DontOverrideMe__c == 'World');
Hierarchy__c CS = Hierarchy__c.getInstance(SysAdminID); System.Assert(CS.OverrideMe__c == 'Goodbye'); System.assert(CS.DontOverrideMe__c == 'World');
Hierarchy__c CS = Hierarchy__c.getOrgDefaults(); System.Assert(CS.OverrideMe__c == 'Hello'); System.assert(CS.DontOverrideMe__c == 'World');
Hierarchy__c CS = Hierarchy__c.getValues(RobertId); System.Assert(CS.OverrideMe__c == 'Fluffy'); // Note how this value is null, because you are returning // data specific for the user System.assert(CS.DontOverrideMe__c == null);
Hierarchy__c CS = Hierarchy__c.getValues(SysAdminID); System.Assert(CS.OverrideMe__c == 'Goodbye'); // Note how this value is null, because you are returning // data specific for the profile System.assert(CS.DontOverrideMe__c == null);
This example illustrates using two custom setting objects for storing related information, and a Visualforce page to display the data in a set of related picklists.
In the following example, country and state codes are stored in two different custom settings: Foundation_Countries and Foundation_States.



<apex:page controller="CountryStatePicker"> <apex:form > <apex:actionFunction name="rerenderStates" rerender="statesSelectList" > <apex:param name="firstParam" assignTo="{!country}" value="" /> </apex:actionFunction> <table><tbody> <tr> <th>Country</th> <td> <apex:selectList id="country" styleclass="std" size="1" value="{!country}" onChange="rerenderStates(this.value)"> <apex:selectOptions value="{!countriesSelectList}"/> </apex:selectList> </td> </tr> <tr id="state_input"> <th>State/Province</th> <td> <apex:selectList id="statesSelectList" styleclass="std" size="1" value="{!state}"> <apex:selectOptions value="{!statesSelectList}"/> </apex:selectList> </td> </tr> </tbody></table> </apex:form> </apex:page>
public with sharing class CountryStatePicker { // Variables to store country and state selected by user public String state { get; set; } public String country {get; set;} // Generates country dropdown from country settings public List<SelectOption> getCountriesSelectList() { List<SelectOption> options = new List<SelectOption>(); options.add(new SelectOption('', '-- Select One --')); // Find all the countries in the custom setting Map<String, Foundation_Countries__c> countries = Foundation_Countries__c.getAll(); // Sort them by name List<String> countryNames = new List<String>(); countryNames.addAll(countries.keySet()); countryNames.sort(); // Create the Select Options. for (String countryName : countryNames) { Foundation_Countries__c country = countries.get(countryName); options.add(new SelectOption(country.country_code__c, country.Name)); } return options; } // To generate the states picklist based on the country selected by user. public List<SelectOption> getStatesSelectList() { List<SelectOption> options = new List<SelectOption>(); // Find all the states we have in custom settings. Map<String, Foundation_States__c> allstates = Foundation_States__c.getAll(); // Filter states that belong to the selected country Map<String, Foundation_States__c> states = new Map<String, Foundation_States__c>(); for(Foundation_States__c state : allstates.values()) { if (state.country_code__c == this.country) { states.put(state.name, state); } } // Sort the states based on their names List<String> stateNames = new List<String>(); stateNames.addAll(states.keySet()); stateNames.sort(); // Generate the Select Options based on the final sorted list for (String stateName : stateNames) { Foundation_States__c state = states.get(stateName); options.add(new SelectOption(state.state_code__c, state.state_name__c)); } // If no states are found, just say not required in the dropdown. if (options.size() > 0) { options.add(0, new SelectOption('', '-- Select One --')); } else { options.add(new SelectOption('', 'Not Required')); } return options; } }