Регистрация  |  Вход

Custom Settings : is-a sObject or not ?

Для хранения настроек можно использовать базу данных (создать специальный объект и создавать записи с определенными параметрами), но в Salesforce о нас уже позаботились и предоставили удобный инструмент Custom Settings (Setup->Develop->Custom Settings).

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 операции и т.д?

[quote]Для хранения настроек можно использовать базу данных (создать специальный объект и создавать записи с определенными параметрами), но в Salesforce о нас уже позаботились и предоставили удобный инструмент  Custom Settings (Setup->Develop->Custom Settings).

Custom Settings очень похожи на обычные объекты базы данных и позволяют создавать различные наборы данных и привязывать эти наборы к оргу, профилю или отдельному пользователю. Все custom settings находятся в кеше приложения, поэтому получить к ним доступ можно без использования запроса к базе данных (не тратятся лимиты).[/quote]

Взято из блога Дмитрия
https://salesforce-developer.ru/hranim-v-salesforce-nastroyki-dlya-prilozheniya

Хотелось бы задать несколько вопросов:

Является ли CustomSettings sObject-ом? Можно ли сказать что CustomSetting - это обычный sObject + плюшки.

То есть у него есть свои методы, они находятся в кеше и получить их можно вызвав MyCustomSetting__c.getAll()
- если это List Settings.

И тем не менее нам можно писать SOQL запросы с CustomSettings и в целом обращаться с ним как с обычным sObject-ом?
Использовать DML операции и т.д?

Michael
Является ли CustomSettings sObject-ом? Можно ли сказать что CustomSetting - это обычный sObject + плюшки.

Скорее - плюшки.

Все остальное верно.

[quote="Michael"]Является ли CustomSettings sObject-ом? Можно ли сказать что CustomSetting - это обычный sObject + плюшки.[/quote]

Скорее - плюшки.

Все остальное верно.

Может с виду он как и sObject - технологии хранения и медоды работы похожи.
Но предназначение разное. Поэтому не вижу смысла в данном вопросе.
Если только не хочется поиздеваться над SF и проверить свои силы в нестандартном программировании.

Может с виду он как и 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" - однозначно да.

Чего мудрствовать лукаво:
[code]
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
[/code]

По большому счёту - "is a SObject" может и нет, "kind of SObject" - однозначно да.