Сustom settings VS Сustom metadata

Рассмотрим Сustom settings и Сustom metadata объекты и их свойства, чтобы определить разницу. Грубо говоря Сustom metadata это тот же Salesforce объект со своими Custom Fields, Validation Rules, Page Layouts. И у него также есть стандартные поля (Id, Created By, Last Modified By и т. д.), как и у обычного Salesforce объекта. Обращаться к объекту Сustom metadata можно с помощью SOQL запросов.

Сustom settings — это ,можно сказать, упрощенный объект Сustom metadata, у которого присутствуют только свои собственные поля и больше ничего. Так как объект Сustom setting хранится в кэше приложения, обращаться к нему можно через специальные методы например: CustomSettingName__c mc = CustomSettingName__c.getInstance(Profile_ID);

Так как Сustom metadata это метаданные, их можно деплоить вместе из значениями в записях, чего нельзя сделать с Сustom settings.

Для наглядности приведу таблицу отличия свойств объектов:

Свойство Сustom settings Сustom metadata
Место хранения Кэш приложения Org Data Storage
Deployment со значениями - +
Типы полей Ограниченно количество типов Все что у Salesforce объекта
Page Layouts - +
Validation Rules - +
lookup relationship между объектами - +
Метод обращения С помощью метода (без запроса) Через SOQL запрос
Обновление через Managed Package - +
Использование через API - Metadata API
Shield Platform Encryption - -
Редактирование записи через Apex + -

Сustom metadata. Примеры использования.

Очень удобно использовать для хранения предустановленных пользовательских данных или настроек. Так как Сustom metadata деплоятся вместе со значениями, не нужно писать каких-либо Apex классов для заполнения значений после деплоя. Можно редактировать эти значения с помощью Managed Package из Sandbox.

Если это нужно - можно создавать Lookup relationship между объектами Сustom metadata.

Сustom metadata имеют множество дополнительных функций, характерных для разработки Managed Package. Вы можете настроить видимость и возможность редактирования полей и объектов как с помощью организации, которая устанавливает пакет, так и путем обновления пакета.

Сustom settings. Примеры использования.

При помощи Сustom settings можно варьировать значения в зависимости от пользователей и профилей в организации; это значит, что при создании объекта Сustom settings его можно назначить определенному пользователю или профилю.

На Сustom settings также можно ссылаться в формулах, поэтому их можно использовать в полях формул, validation rules, workflow rules, и visualforce. Еще Сustom settings удобно использовать в Sandbox для хранения тестовых логинов и паролей, если они не будут переноситься на продакшин.

Значения Сustom settings можно редактировать из Apex, а вот значения Сustom metadata - нет.

Если по какой-либо причине вам потребуется программно изменить конфигурацию, то с Сustom metadata у вас это не получится. Хотя на практике это можно сделать через REST Callout.

2 Likes

В першому абзаці вказано наступне: " Обращаться к объекту Сustom metadata можно с помощью SOQL запросов.". А в порівняльні таблиці інша інформація. У зв’язку з цим не зрозуміло наскільки коректно і правильно подана дана інформація і чи взагалі можна брати її за основу. Якщо є можливість внесіть, будь ласка, корективи, для того аби інформація була коректною. Дякую!

Добрый день! Спасибо за комментарий, я исправил, это была опечатка при оформлении статьи. Если у вас есть еще что добавить пишите буту корректировать.

Дякую за оперативність))) ще здається потрібно поправити “Типы полей”.

Да исправил. Хотя перечитывал несколько раз и не увидел)

Насчёт деплоя Custom settings, если полям присвоить default значение, то после деплоя достаточно открыть эти Custom setting --> Manage --> Edit --> Save.

После нажатия Edit SF сам заполнит поля default значениями, удобно если Custom setting содержит много полей.