自定义 Salesforce 对象

动手实践自定义 Salesforce 对象:创建标准与自定义字段、选项列表与依赖、查找筛选器、公式字段、记录类型、记录页面、字段历史跟踪和验证规则,构建完整的数据模型。...

📅 2026/10/4 ✍️ ponybai 🏷️ salesforce, admin, headless

使用标准与自定义字段

slide_2

本单元是项目的第一步:创建标准字段和自定义字段,配置配置文件(Profile),并为对象做好数据录入准备。

介绍与设置

slide_3

AW Computing 已经建立了一个 Salesforce 环境,用户、配置文件和权限都已配置好。但还需要进一步自定义,确保用户拥有捕获业务信息所需的字段——这就是你这位管理员的任务。

第一个请求来自销售运营负责人 Yuko Ishikawa:她的团队用 Account Rating 字段做销售线索挖掘,但担心客户负责人因为没有理解字段用途而填错。为帮助她的团队正确使用该字段,你需要:

  • 把 Rating 字段重命名为 Prospect Rating。
  • 给字段添加帮助文本(Help Text),说明「Hot/Warm/Cold」分别代表什么。
  • 在 Account Rating 选项列表中添加一个新值 Not Known。
  • 通过字段级安全(Field-Level Security)限制谁能编辑。

动手前,先为销售团队和支持团队创建配置文件:从 Setup 进入 Profiles,克隆 Standard User,分别创建 Sales User 和 Support User 两个配置文件。

接着创建两个自定义字段:

  • Has Support Plan(复选框):销售用户用来告知支持团队哪些客户拥有支持计划。
  • Support Plan Expiration Date(日期):记录当前支持计划的到期日。

两个字段都只对 Sales User 和 Support User 可编辑,其余用户只读。

创建选项列表与字段依赖

slide_4

本单元创建选项列表(Picklist)字段和字段依赖(Field Dependencies),用受控的值和级联筛选提升数据质量。

创建选项列表

slide_5

选项列表(Picklist)为字段提供一组预定义的选项,用户从列表中选择单个值,而不是直接输入,从而减少错误、保持数据干净。

销售运营把销售区域划分为多个 Region(区域)和 Zone(片区)。你需要:

  • 创建一个全局选项列表值集(Global Picklist Value Set) Region,包含 APAC、EMEA、LATAM、US、Canada 五个值。
  • 在 Lead 和 Account 对象上创建自定义选项列表字段 Region,引用这个全局值集。
  • 在 Account 上创建自定义选项列表字段 Zone,手动录入 21 个片区值(如 East Asia、Europe、Midwest US、Northern Canada 等)。

副总裁 Allison Wheeler 还想跟踪商机赢单/丢单的原因。在 Opportunity 上创建一个多选选项列表(Picklist Multi-Select)字段 Close Reason,包含以「Won:」「Lost:」开头的值(如 Won: Competitor、Lost: Price、Lost: Product Features 等),并把可见行数设为 6。

创建字段依赖

slide_6

字段依赖(Field Dependencies)是一个过滤器,可以根据另一个字段的值来改变某个选项列表显示的内容。例如选择某个 Region 后,Zone 字段只显示该区域下的片区,帮助用户更快找到正确选项。

在 Account 上创建 Region → Zone 的依赖关系:

  • APAC → East Asia、Oceania、Southeast Asia
  • EMEA → Africa、Europe、Middle East、UK + Ireland
  • LATAM → Mexico、Caribbean、Central America、South America
  • US → Midwest US、Northeast US、Southeast US、Southwest US、West US
  • Canada → Northern Canada、Mountains and the West、The Prairies、Central Canada、East Coast

再在 Opportunity 上创建 Stage → Close Reason 的依赖:当 Stage 为 Closed Won 时只显示以「Won」开头的值,Closed Lost 时只显示以「Lost」开头的值。注意不是所有 Stage 值都有对应的 Close Reason。

创建查找筛选器

slide_7

本单元创建查找关系(Lookup Relationship),并添加查找筛选器(Lookup Filter)限制用户可选的相关记录。

创建查找关系

slide_8

查找关系(Lookup Relationship)把一条记录链接到另一条记录。例如 Case 上的 Backup Agent 字段查找(Lookup)到 User 对象,代表当 Case 负责人外出时的备份支持代表。

服务副总裁 Noah Larkin 想让代表能在外出时记录备份代表的名字,并确保新 Case 只能关联到同一客户账户下的联系人。你需要:

  • 在 Case 上创建 Backup Agent 字段,查找关系指向 User 对象,并用查找筛选器限制只能选择 Profile = Support User 的用户。
  • 给 Case 的 Contact Name 字段添加查找筛选器:Contact Name: Account ID 等于 Case: Account ID,这样用户只能选择与 Case 中 Account 相关联的联系人。

查找筛选器能引用同一记录上的字段(源)、查找对象记录上的字段(目标)、用户/配置文件/角色上的字段,以及与目标对象直接关联的记录字段,从而在数据录入时就执行业务规则。

创建公式字段

slide_9

本单元创建公式字段(Formula Fields),用声明式计算自动生成值——无需触发器、无需 Apex。

计算佣金与自定义公式

slide_10

公式字段(Formula Fields)是只读字段,根据其他字段、表达式和函数计算值,当源数据变化时自动更新。

Allison Wheeler 想让销售和管理层看到赢单商机的佣金,还想在商机上显示账户的 Region/Zone,以及折扣后的金额。你需要创建三个公式字段:

  • Commission(货币):计算 10% 佣金。基础公式是 Amount * 0.1,再用高级公式限定只在赢单时计算:IF( ISPICKVAL( StageName, "Closed Won"), Amount * 0.1, 0)。
  • Region/Zone(文本):从账户记录拼接区域和片区:TEXT(Account.Region__c) & "/" & TEXT(Account.Zone__c)。
  • Amount After Discount(货币):先创建一个百分比字段 Discount Percentage,再写公式 Amount * ( 1 - Discount_Percentage__c )。

公式支持算术运算、文本拼接、日期计算、条件逻辑和跨对象引用,是平台最强大的声明式功能之一。

创建记录类型

slide_11

本单元创建记录类型(Record Types),为不同类别的记录提供不同的业务流程、选项列表值和页面布局。

创建记录类型

slide_12

记录类型(Record Types)让同一个对象在不同业务流程下有不同的表现。Noah 希望咨询团队查看客户账户时不会看到合作伙伴账户,也不要在 Industry 字段里翻找一大堆无关值。

在 Account 对象上创建两个记录类型:

  • Customer Account:面向客户和潜在客户,Industry 选项列表移除 Consulting 和 Education。
  • Partner Account:面向咨询合作伙伴,Industry 只保留 Consulting 和 Education;Type 选项列表只保留 Channel Partner/Reseller、Installation Partner、Technology Partner、Other。

每个记录类型都可以拥有不同的选项列表值、页面布局和必填字段。这样既保持了数据模型的干净(一个 Account 对象),又支持不同类型的账户走不同的业务流程。

自定义记录页面

slide_13

本单元用 Lightning App Builder 和页面布局自定义记录页面——调整字段位置、配置相关列表,并为不同记录类型创建专属页面。

调整字段与相关列表

slide_14

Noah 担心咨询团队看到的账户页面里有些字段不适用于合作伙伴账户,希望移除所有销售相关信息;Allison 则希望把新增的账户字段按主题分到不同分区,方便团队查找。

在 Lightning App Builder 中编辑账户页面:

  • 把页面升级到 Dynamic Forms,这样就能单独添加、移除和调整每个字段的位置。
  • 创建 Sales Region 和 Support Plan Information 两个字段分区,把 Region、Zone、Has Support Plan、Support Plan Expiration Date 分别拖入。
  • 把这两个分区移到页面右侧更显眼的位置,并把 Prospect Rating 设为必填。

相关列表的调整要在页面布局编辑器(Page Layout Editor)里做:给 Contacts 相关列表添加 Do Not Call 列,并把 Opportunities 相关列表移到最上方。

激活并创建记录专属页面

slide_15

页面保存后不会自动推送给用户,必须激活(Activate)才能生效。把 Customer Account Page 分配给 Sales 应用下的 Customer Account 记录类型,以及 Sales User 和 Support User 两个配置文件。

再为合作伙伴创建一个专属页面 Partner Account Page:克隆 Customer Account Page,然后移除 Prospect Rating、Region、Zone、Has Support Plan、Support Plan Expiration Date 这些销售相关字段,保存并激活到 Partner Account 记录类型。

「记录类型 + 页面布局」的组合提供了量身定制的体验:客户用户看到客户字段,合作伙伴经理看到合作伙伴字段——同一个对象,不同的视图,展示正确的信息。

启用字段历史跟踪

slide_16

本单元启用字段历史跟踪(Field History Tracking),维护关键字段的审计轨迹——谁在何时把什么改成了什么。

启用字段历史跟踪

slide_17

字段历史跟踪会记录对所选字段的每一次变更:旧值、新值、变更人和时间。Noah 想知道每周哪些账户被标记为拥有支持计划,以跟踪哪些账户缺少支持计划到期日。

在 Account 上启用字段历史跟踪,跟踪 Has Support Plan 和 Support Plan Expiration Date 两个字段(一个对象最多可跟踪 20 个标准或自定义字段)。

然后把 Account History 相关列表添加到 Customer Account Page 的页面布局中,用户就能在记录页面的 History 相关列表或历史报表中查看变更轨迹。

字段历史跟踪常用于合规审计、问题排查和数据治理——但要有策略地选择字段,只跟踪对合规和审计真正重要的字段,否则会消耗大量存储。

创建验证规则

slide_18

最后一个单元创建验证规则(Validation Rules),在数据录入时就强制数据质量。

创建验证规则

slide_19

验证规则(Validation Rules)在满足指定条件时阻止记录保存。公式描述的是「什么情况是无效的」——公式为 TRUE 就阻止保存并显示错误。

Noah 希望今后所有用户在勾选 Has Support Plan 时都必须填写支持计划到期日;Allison 则希望销售代表在商机丢单时必须填写 Close Reason。创建两条验证规则:

  • 账户验证规则:Has_Support_Plan__c = True && ISBLANK(Support_Plan_Expiration_Date__c),错误提示「账户拥有支持计划时必须填写到期日」。
  • 商机验证规则:ISPICKVAL( StageName, "Closed Lost") && ISBLANK(Close_Reason__c),错误提示「商机标记为 Closed Lost 时必须填写关闭原因」。

最佳实践:写清晰的错误消息(既说明问题又说明如何修正)、把错误定位到具体字段、用有效和无效数据都测试一遍,并且不要过度验证——每条规则都会增加数据录入的摩擦,要在数据质量和用户体验之间取得平衡。


文章来源:Trailhead - Customize a Salesforce Object