Custom Settings очень похожи на обычные объекты базы данных и позволяют создавать различные наборы данных и привязывать эти наборы к оргу, профилю или отдельному пользователю. Все custom settings находятся в кеше приложения, поэтому получить к ним доступ можно без использования запроса к базе данных (не тратятся лимиты).
Взято из блога Дмитрия
https://salesforce-developer.ru/hranim-v-salesforce-nastroyki-dlya-prilozheniya
Хотелось бы задать несколько вопросов:
Является ли CustomSettings sObject-ом? Можно ли сказать что CustomSetting - это обычный sObject + плюшки.
То есть у него есть свои методы, они находятся в кеше и получить их можно вызвав MyCustomSetting__c.getAll()
- если это List Settings.
И тем не менее нам можно писать SOQL запросы с CustomSettings и в целом обращаться с ним как с обычным sObject-ом?
Использовать DML операции и т.д?
Скорее - плюшки.
Все остальное верно.
Может с виду он как и sObject - технологии хранения и медоды работы похожи.
Но предназначение разное. Поэтому не вижу смысла в данном вопросе.
Если только не хочется поиздеваться над SF и проверить свои силы в нестандартном программировании.
Чего мудрствовать лукаво:
Custom_Setting__c setting = Custom_Setting__c.getAll().values().get(0);
System.debug(System.LoggingLevel.ERROR, ((Object) setting) instanceof SObject);//true
System.debug(System.LoggingLevel.ERROR, setting instanceof SObject);//Operation instanceof is always true since an instance of Custom_Setting__c is always an instance of SObject
По большому счёту - "is a SObject" может и нет, "kind of SObject" - однозначно да.