自定义设置

自定义设置类似于自定义对象。应用程序开发人员可以创建自定义 数据集,并关联组织、配置文件或特定用户的自定义数据。都 自定义设置数据在应用程序缓存中公开,无需 对数据库进行重复查询的开销。公式字段、验证规则、流、Apex 和 然后,SOAP API 可以使用此数据。

警告

保护 仅适用于标记为受保护并安装到订阅者的自定义设置 组织作为托管包的一部分。否则,它们将被视为公共习俗 设置,并且对所有配置文件(包括来宾用户)都是可读的。不要存储机密, 个人身份信息,或这些设置中的任何私人数据。使用受保护的 仅在托管包中自定义设置。在托管包之外,使用命名凭据 或加密的自定义字段来存储机密,如 OAuth 令牌、密码等 机密材料。

注意

虽然自定义设置数据包含在沙盒副本中,但它被视为 Apex 测试隔离的目的。Apex 测试必须用于查看组织中的现有自定义设置数据。作为 最佳做法是在测试设置中创建所需的自定义设置数据。SeeAllData=true有两种类型的自定义设置。列出自定义设置一种自定义设置,它提供一组可重用的静态数据,这些静态数据可以 在整个组织中访问。如果您经常使用一组特定的数据 将该数据放在列表自定义设置中的应用程序可简化对它的访问。 列表设置中的数据不会因配置文件或用户而异,但可用 组织范围。列表数据的示例包括两个字母的状态缩写、 国际拨号前缀和产品目录号。因为数据是 缓存,访问成本低且效率高:您不必使用计数的 SOQL 查询 违反您的调速器限制。层次结构自定义设置一种使用内置分层逻辑的自定义设置,可让您 针对特定配置文件或用户的“个性化”设置。层次结构逻辑 检查当前用户的组织、配置文件和用户设置,并返回 最具体或“最低”的值。在层次结构中,设置 组织被配置文件设置覆盖,而配置文件设置又被用户覆盖 设置。以下示例说明如何使用自定义设置。

  • 运输应用程序要求用户填写国际国家/地区代码 交付。通过创建所有国家/地区代码的列表设置,用户可以快速访问 此数据无需查询数据库。
  • 应用程序显示帐户位置、最佳路线和交通的地图 条件。此信息对销售代表很有用,但客户经理只想 请参阅帐户位置。通过创建具有自定义复选框字段的层次结构设置 路线和流量,您可以仅为“销售代表”启用此数据 轮廓。

您可以在 Salesforce 用户界面中创建自定义设置:在“设置”中,输入“快速查找”框,然后选择“自定义” 设置。创建自定义设置并添加字段后, 通过单击详细信息中的“管理”,将数据提供给自定义设置 页。使用名称标识每个数据集。Custom Settings例如,如果您有一个名为 Foundation_Countries__c 的自定义设置,其中包含一个文本字段 Country_Code__c,您的数据集可能如下所示:

数据集名称国家/地区代码字段值
美国美国
加拿大
英国英国

还可以在包中包含自定义设置。自定义设置的可见性 包取决于“可见性”设置。

注意

包中仅包含自定义设置定义,而不包含数据。要包含数据,您需要 必须在之后使用订阅组织运行的 Apex 代码填充自定义设置 他们已经安装了该软件包。Apex 可以访问两种自定义设置类型(列表和层次结构)。

注意

如果自定义设置的隐私为“受保护”,并且 自定义设置包含在托管包中,订阅组织不能 编辑值或使用 Apex 访问它们。

访问列表自定义设置

以下示例返回自定义设置数据的映射。该方法返回所有自定义字段的值 与列表关联 设置。

getAll

Map<String_dataset_name, CustomSettingName__c> mcs = CustomSettingName__c.getAll();

下面的示例使用该方法执行以下操作 返回与指定数据集关联的所有字段值。可以使用此方法 使用列表和层次结构自定义设置,使用不同的 参数。

getValues

CustomSettingName__c mc = CustomSettingName__c.getValues(data_set_name);

访问层次结构自定义设置

以下示例使用该方法返回组织级别的数据集值:

getOrgDefaults

CustomSettingName__c mc = CustomSettingName__c.getOrgDefaults();

这 下面的示例使用该方法执行以下操作 返回指定配置文件的数据集值。该方法还可以与用户 ID 一起使用。

getInstancegetInstance

CustomSettingName__c mc = CustomSettingName__c.getInstance(Profile_ID);

ref