一、Salesforce CPQ 搜索过滤器入门(Get Started with Search Filters in Salesforce CPQ)
在本单元中,你将了解 AW Computing 所面临的庞大产品目录挑战,明确本项目中要构建的各类过滤器,并注册一个带有 Salesforce CPQ 和示例数据的特殊 Developer Edition org。
庞大的产品目录挑战(The Giant Catalog Challenge)
AW Computing 是一家不断成长的公司,一直紧跟最新的技术潮流。随着公司的发展,它的产品目录也在不断膨胀。客户当然喜欢有更多选择,但销售代表却抱怨庞大的目录让在产品选择(Product Selection)页面上查找特定产品变得困难。销售代表固然可以使用产品系列(Product Family)、产品代码(Product Code)和产品名称(Product Name)这些开箱即用的过滤器,但它们只能把列表缩小到一定程度。更多的过滤器会大有帮助。
在本项目中,你将创建出现在产品选择页面上的新过滤器。有些过滤器是可见的,销售代表可以按需设置;另一些则是隐藏的,会根据条件(例如是哪个销售代表在创建报价单)自动移除产品。
此外,你还会在报价行编辑器(Quote Line Editor)中创建一个新按钮,让销售代表只需点击一下,就能看到一个预过滤的、仅包含捆绑产品的列表。
注册带有 Salesforce CPQ 的 Developer Edition org(Sign Up for a Developer Edition Org with Salesforce CPQ)
要完成本项目,你需要一个包含 Salesforce CPQ 和示例数据的特殊 Developer Edition org。请立即获取免费的 Developer Edition 并连接到 Trailhead。请注意,这个 Developer Edition 专为本徽章的挑战而设计,可能不适用于其他徽章。务必使用我们推荐的 Trailhead Playground 或特殊 Developer Edition org。
即使你最近刚注册过一个 CPQ 专用的 Developer Edition org,也请现在重新注册一个——我们一直在添加新数据。另外,Salesforce CPQ 托管包会在 90 天后过期,所以无论如何你可能都需要一个新 org。
注册 Developer Edition org:
- 注册一个免费的带 Salesforce CPQ 的 Developer Edition org。
- 填写表单。Email 填一个有效的邮箱地址;Username 填一个看起来像邮箱、且唯一的用户名——但它不需要是真实有效的邮箱账户(例如 yourname@cpq4ever.com)。
- 填写完表单后,点击 Sign me up,会出现一条确认消息。
- 收到激活邮件(可能需要几分钟)后,打开它并点击 Verify Account。
- 设置密码和密保问题完成注册。提示:记下你的用户名、密码和登录 URL,方便以后访问。
- 此时你就登录进了自己的 Developer Edition。
将新 org 连接到 Trailhead:
- 确保你已登录 Trailhead 账户。
- 在本页底部的 Challenge 区域,从下拉列表中选择 Log into a Developer Edition。
- 在登录界面输入你刚设置的 Developer Edition 的用户名和密码。
- 在 Allow Access? 界面点击 Allow。
- 在 Want to connect this org for hands-on challenges? 界面点击 Yes! Save it。你会被重定向回挑战页面,就可以用新 org 来赢得徽章了。
现在你的 CPQ 专用 org 已经连上 Trailhead,可以开始通过添加搜索过滤器来掌控庞大的产品目录了!
二、重建基础过滤器并创建订阅定价过滤器(Recreate Basic Filters and Make a Subscription Filter)
在本单元中,你将把三个基础过滤器重建为搜索过滤器记录,并新增一个订阅定价过滤器。你将理解 Search Filters 字段集 与 Search Filter 记录 的区别,以及如何向 Target Field 选择列表添加新字段。
为基础过滤器创建搜索过滤器记录(Create Search Filter Records for the Basic Filters)
你的 CPQ 专用 org 已经在产品选择页面上有一些开箱即用的过滤器。点击过滤器按钮打开过滤面板即可查看。
CPQ 决定在过滤面板中显示哪些产品字段的方式有两种。第一种是查看 Product 对象上的 Search Filters 字段集(field set)。Product Code、Product Name 和 Product Family 字段已经在这个字段集里,你创建的任何自定义字段也可以添加进去。
然而,字段集方法有几个很大的局限:CPQ 使用的大部分 Product 字段(如 Subscription Type)无法添加到字段集中;而且你无法控制搜索行为,比如文本如何匹配(是「以…开头」还是「包含」)。
另一种更灵活的方式是创建一条 Search Filter 记录。这种方法让你能把大多数 Product 字段作为过滤器,控制匹配行为,还能做其他稍后会学到的花哨操作。
请注意,Salesforce CPQ 要么使用 Search Filters 字段集,要么使用 Search Filter 记录,二者不可兼用! 一旦你开始使用记录,CPQ 就会忽略字段集中的所有内容。因此,先重建 Product Code、Product Name 和 Product Family 三个过滤器,这样在创建其他 Search Filter 记录时它们仍然存在。
创建 Product Code 的搜索过滤器记录:
- 如果 CPQ org 尚未打开,滚动到 Challenge 区域点击 Launch 打开它。
- 点击 App Launcher,然后点击 Salesforce CPQ 磁贴。
- 在导航栏点击 Search Filters(可能在 More 标签下)。
- 点击 New。
- Filter Name 输入
Product Code(名称会显示在过滤面板中,选一个销售代表能看懂的名字)。 - Target Object 选择 Product。
- Target Field 选择 Product Code(目标对象和字段的组合告诉 CPQ 具体要搜索什么)。
- Operator 选择 contains(运算符告诉 CPQ 如何进行搜索。现在销售代表搜索「usb」时,CPQ 会找到产品代码中任意位置包含 USB 的产品,比如 4PORTUSBHUB;而原来的过滤器只显示以 USB 开头的产品)。
- Display Order 输入
10(过滤器按显示顺序从上到下排列)。 - 点击 Save。
接下来重建 Product Name 和 Product Family 的过滤器:
- 在导航栏点击 Search Filters。
- 点击 New。
- Filter Name 输入
Product Name,Target Object 选 Product,Target Field 选 Name,Operator 选 contains,Display Order 输入20,点击 Save & New。 - Filter Name 输入
Product Family,Target Object 选 Product,Target Field 选 Product Family,Operator 选 equals(这次选 equals 是因为像 Product Family 这样的选择列表值必须精确匹配),Display Order 输入30,点击 Save。
干得好——三个原始产品字段现在都回到了搜索面板中。接下来为 AW Computing 的销售代表添加其他有用的过滤器。
为订阅定价创建搜索过滤器(Create a Search Filter for Subscription Pricing)
Subscription Pricing(订阅定价) 字段是销售团队想要搜索的第一个新字段,它能帮他们只查看基于订阅的产品。但在创建新过滤器之前,你需要先更新 Target Field 选择列表。前面三个过滤器用的是预加载的 Target Field 值,而你的 org 目前还没有 Subscription Pricing 这个选项,所以需要先添加它。
- 点击 Setup 图标并点击 Setup(Setup 页面会在新标签页打开)。
- 在导航栏点击 Object Manager。
- 点击 Search Filter(可以在 Quick Find 框输入 Search Filter 减少滚动)。
- 点击 Fields & Relationships。
- 点击 Target Field。
- 在 Values 表中点击 New。
- 输入
SBQQ__SubscriptionPricing__c(添加字段时始终使用 API 名称。即使字段标签改变,API 名称通常也不会变)。 - 点击 Save。
- 在 Picklist Options 区域找到 Controlling Field 并点击 Change。
- 在 Product 列双击 SBQQ__SubscriptionPricing__c(它会变黄,表示当 Target Object 设为 Product 时它是有效选项)。
- 点击 Save。
关闭 Setup 标签页返回 Salesforce CPQ 标签页。现在 Subscription Pricing 字段已经在选择列表中,可以创建搜索过滤器记录了:
- 在导航栏点击 Search Filters。
- 点击浏览器刷新按钮(不刷新可能会看到缓存页面,其中不包含 SBQQ__SubscriptionPricing__c 这个选择列表值)。
- 点击 New。
- Filter Name 输入
Subscription Pricing,Target Object 选 Product,Target Field 选 SBQQ__SubscriptionPricing__c,Operator 选 equals,Display Order 输入40。 - 点击 Save。
现在可以测试你的工作了:在导航栏点击 Quotes,选择 All 列表视图,点击 Q-00054,点击 Edit Lines(页面首次加载可能需要几分钟),再点击 Add Products。点击 Filter 按钮,你应该能看到过滤面板中全部 4 个字段。为 Subscription Pricing 选择 Fixed Price,点击 Apply——150+ 的产品列表应该缩小到一打多一点。AW Computing 的销售代表会很感谢你让查找订阅产品变得如此轻松!
今后,每当你想把另一个产品字段加到搜索面板中时,都按同样的两步走:先把 API 名称加进 Target Field 字段(记得同时更新 Controlling Field),然后创建搜索过滤器记录。
三、使用隐藏过滤器停用产品(Discontinue Products Using a Hidden Filter)
在本单元中,你将学习如何让产品停止新销售,同时保持其对续订有效。你会先用复选框标记要退役的产品,然后创建一个始终把退役产品从产品选择页面移除的隐藏搜索过滤器。
标记要退役的产品(Flag Products for Retirement)
AW Computing 的销售团队注意到一些较老的技术已不再有需求。例如,90 年代他们销售寻呼机(pager)和寻呼服务,但已经多年没有新的寻呼机销售了。
为了简化销售流程,销售团队想退役寻呼机和寻呼服务产品,把它们从产品选择页面移除。然而,他们还有一些长期客户在使用寻呼服务,并会定期续订寻呼服务合同。因此,AW Computing 需要让这些产品保持活动(active)状态,以便能自动添加到这些客户的续订报价单中。
解决方案是创建一个搜索过滤器,始终把退役产品从产品选择页面过滤掉,同时让它们保持活动状态;再把过滤器隐藏起来,以免被无意中编辑或删除。
那么如何知道哪些产品是「退役」的?首先在 Product 对象上创建一个名为 Retired 的复选框,然后为寻呼机产品勾选它。
- 点击 Setup 图标并点击 Setup,然后点击 Object Manager。
- 点击 Product,再点击 Fields & Relationships。
- 点击 New,选择 Checkbox,点击 Next。
- Field Label 输入
Retired,点击 Next。 - 点击 Next 保持字段级安全性不变,点击 Save。
关闭 Setup 标签页返回 Salesforce CPQ 标签页,标记寻呼机产品退役:
- 在导航栏点击 Products,选择 All Products 列表视图。
- 对 Pager 产品点击 Show Actions 然后点击 Edit,勾选 Retired,点击 Save。
- 对 Pager Service 产品重复同样操作,勾选 Retired,点击 Save。
很好,你已经识别出需要退役的产品,现在可以在搜索过滤器中使用这个信息,把它们从产品选择中移除。
为退役产品创建隐藏搜索过滤器(Create a Hidden Search Filter for Retired Products)
还记得上一单元里,在创建 Subscription Pricing 过滤器之前,你先把 SBQQ__SubscriptionPricing__c 加进了 Target Field 选择列表吗?同样地,你需要再次更新选择列表,为 Retired 字段添加一个值。
- 点击 Setup 图标并点击 Setup,点击 Object Manager。
- 点击 Search Filter,点击 Fields & Relationships,点击 Target Field。
- 在 Values 列表中点击 New,输入
Retired__c,点击 Save。
- 在 Picklist Options 区域,对 Controlling Field 点击 Change,在 Product 列双击 Retired__c,点击 Save。
关闭 Setup 标签页返回 Salesforce CPQ 标签页。现在是重头戏——你要像之前一样创建搜索过滤器,但这次由你告诉 CPQ 如何使用过滤器,而不是让销售代表在过滤面板中修改它:
- 在导航栏点击 Search Filters,点击 New。
- Filter Name 输入
Retired,Target Object 选 Product,Target Field 选 Retired__c(如果看不到 Retired__c,刷新浏览器后回到第 2 步)。 - Operator 选 equals。
- Filter Value 输入
false(这次你不想让销售代表控制过滤,所以告诉 CPQ 要过滤的值是「false」,也就是「未勾选」)。 - 勾选 Hidden(你已经预置了「false」这个过滤值,但要确保销售代表无法撤销你的工作,所以把过滤器隐藏起来,防止查看和篡改;即使看不到,它仍然会生效)。
- Display Order 输入
1(该过滤器不显示,所以这个数字无关紧要,但字段必填,随便填一个数)。 - 点击 Save。
有了这个新的搜索过滤器,任何标记为 Retired 的产品都不会再出现在产品选择中。验证一下:点击 Quotes → Q-00054 → Edit Lines → Add Products,点击 Filter 按钮会发现 Retired 过滤器并不可见;关闭过滤面板向下滚动产品列表,你应该找不到任何寻呼机产品。
干得漂亮!你成功移除了向新销售添加某些产品的能力,同时保持它们对续订报价单有效。这个例子是一个静态过滤器,始终在相同条件下移除产品。下一步你将学习如何让过滤器动态运行,使过滤结果取决于谁在查看列表。
四、根据用户销售区域动态过滤(Filter Dynamically Based on User's Sales Region)
在本单元中,你将构建一个根据销售代表所在区域来显示产品的动态过滤器。你需要创建 Product 上的 Region 选择列表、User 上的 Region 字段、Quote 上的公式字段,以及一个隐藏的搜索过滤器来动态比较它们。
控制产品在哪些区域销售(一):设置(Control Where Products Are Sold)
AW Computing 起初是一家本地企业,随着时间推移不断壮大,现在面向多个区域的客户销售。然而,有些产品只在特定区域销售,AW Computing 必须确保销售代表只销售其所属区域的产品。一种方案是为每个区域创建一个价格手册,只包含该区域销售的产品,然后培训销售代表为每次销售选择正确的价格手册。
但这种方案有几个问题:首先,维护几个相似的价格手册工作量很大;其次,销售代表可能犯错选错价格手册。Salesforce CPQ 的宗旨正是防止这类错误。用搜索过滤器按区域显示产品是更好的办法。
这个方案有几个组成部分。首先是识别哪些产品只在特定区域销售。为节省时间,Team Trailhead 已在 Product 对象上创建了一个名为 Region 的多选选择列表,并赋予 North、South、East、West 值。对于可以在任何地方销售的产品,管理员把该字段留空;如果某产品只在 East 和 West 销售,管理员就在产品记录上添加这些值。
下一个重要组成部分是确定每个销售代表被分配到了哪个区域。为了捕获这个信息,在 User 对象上创建一个名为 Region 的文本字段:点击 Setup → Object Manager → User → Fields & Relationships → New,选择 Text,Field Label 输入 Region,Length 输入 100,一路 Next 并 Save。
现在每个用户都可以有区域了。但要让 CPQ 过滤产品,用户的区域信息必须存在于报价单记录上。为此,在 Quote 对象上创建一个公式字段,把区域从用户记录拉到报价单上:点击 Object Manager → Quote → Fields & Relationships → New,选择 Formula,Field Label 输入 User Region,类型选 Text,在公式区域输入:
IF(ISBLANK($User.Region__c),";Narnia",";"+$User.Region__c)
点击 Check Syntax(检查公式语法是个好习惯),然后 Next、Next、Save。
关于这个公式——要理解它为什么同时包含分号和 Narnia,你首先要理解 CPQ 如何在过滤面板中使用多选选择列表。想象你在产品选择页面为 Region 过滤器选择了 South:
此时你只看到能在 South 销售的产品,看不到任何能在所有地方销售的产品。但销售代表应该同时看到区域专有产品和非专有产品。有一种方法能两者都显示:除了其他值之外,再选中 --None-- 值。
作为人类,你可以用 Ctrl 或 Command 键多选。但要告诉 CPQ 如何选择多个值,就必须使用分号。
回到公式——如果销售代表在 South 区域,公式结果是 ;South。这段文本代表两个值:分号左边(空白)代表 --None-- 值,右边是专有区域。那么为什么公式里会有 Narnia?Narnia 是 C.S. 刘易斯笔下的神话之地,这里用来表示用户没有分配区域的情况。如果我们不给 CPQ 任何 Region 过滤值,就不会应用过滤,它会显示每个产品,甚至包括区域专有产品。相反,我们给它 ;Narnia,让它显示所有 Narnia 专有产品(希望没有)和所有非专有产品。可以放心假设 AW Computing 短期内不会在 Narnia 销售,所以用它作为一个虚假值。
控制产品在哪些区域销售(二):动态过滤器(Control Where Products Are Sold)
此时用户的区域已经存在于报价单记录上。接下来需要更新 Filter Source 字段,让 CPQ 能使用新的 User_Region__c 报价单字段来过滤:
- 在 Setup 标签页点击 Object Manager → Search Filter → Fields & Relationships。
- 点击 Filter Source Field(它告诉 CPQ 从哪里找到用于过滤的数据,这里指向你新建的公式字段)。
- 在 Values 列表点击 New,输入
User_Region__c,点击 Save。
- 在 Picklist Options 区域,对 Controlling Field 点击 Change,双击 User_Region__c,点击 Save。
关闭 Setup 标签页返回 Salesforce CPQ 标签页,创建实际的搜索过滤器记录:
- 在导航栏点击 Search Filters,点击 New。
- Filter Name 输入
Region,Target Object 选 Product,Target Field 选 Region__c(Team Trailhead 已为你预置了这个值)。 - Operator 选 equals。
- Filter Source Object 选 Quote,Filter Source Field 选 User_Region__c(现在 CPQ 知道从哪里找动态过滤值)。
- Display Order 输入
1,勾选 Hidden,点击 Save。
回顾一下这个方案的各个组成部分:Product 记录上的 Region 多选选择列表识别区域专有产品;你在 User 对象上创建的 Region 字段捕获销售代表的区域;你在 Quote 对象上创建的 Region 公式字段拉取并格式化用户的区域信息;你创建了一个比较产品区域与格式化区域的搜索过滤器,并把它隐藏起来。
测试方案。先把几个产品设为区域专有:在导航栏点击 Products,选择 All Products 列表视图。对 5G Antenna 产品点击 Show Actions → Edit,Region 选 East 和 West,点击 Save;对 Satellite Receiver 产品点击 Show Actions → Edit,Region 选 South,点击 Save。
先确认当用户区域为空时区域专有产品不出现:点击 Quotes → Q-00054(注意用户区域显示 ;Narnia)→ Edit Lines → Add Products。此时你应该既看不到 5G Antenna 也看不到 Satellite Receiver,非专有产品仍在列表中,而且打开过滤面板时也看不到 Region 字段。
现在让用户看到专有产品:点击 Setup → 在 Quick Find 输入 Users → 点击 Users → 对你的用户(System Administrator 配置文件的那个)点击 Edit,Region 输入 West,点击 Save。关闭 Setup 返回 CPQ,重新点击 Quotes → Q-00054(Region 字段现在显示 ;West)→ Edit Lines → Add Products。5G Antenna 产品(West 和 East 专有)现在出现在产品列表中,连同所有非专有产品;而你不会找到 Satellite Receiver,因为它是 South 专有。
这个专有性问题的解决方案设置起来颇费工夫,但今后你只需要在特殊产品和用户记录上维护区域信息。如果产品的区域留空,它就被视为非专有;如果用户的区域留空,他们就只能看到非专有产品。作为加分项,可以用分号分隔多个值,让单个用户访问多个区域,例如在 Region 字段填 West;South 即可。
五、创建自定义操作一键显示捆绑产品(Create a Custom Action to Display Bundles in One Click)
在最后一个单元中,你将创建一个自定义操作,在报价行编辑器中添加一个 Add Bundles 按钮。销售代表只需点击一下,就能看到一个仅包含捆绑产品的预过滤列表。
快速添加捆绑产品(Add Bundles Quickly)
你可能在「Configurable Bundles in Salesforce CPQ」徽章中见过捆绑(bundle)——它们是预先打包好、一起销售的产品集合,用于简化 CPQ 报价。AW Computing 很喜欢捆绑产品,销售代表销售得很多,所以快速访问至关重要。如果销售代表能从报价行编辑器一键查看捆绑产品,岂不是更好?通过创建一个自定义操作(Custom Action)来实现吧!
自定义操作是 CPQ 工具箱的一部分,最广为人知的就是你在报价行编辑器中看到的那些按钮。
在这一步中,你要创建一个基础按钮,为销售代表向报价单添加捆绑产品节省几次点击。虽然减少几次点击看起来不算什么,但在高速销售中,每一次点击都很重要。
你创建的按钮可以任意命名,我们叫它 Add Bundles。要让 Add Bundles 作为按钮标签出现在用户界面上,必须先把它加进可用标签。为此更新 Custom Action 对象上的 Label 字段:点击 Setup → Object Manager → Custom Action → Fields & Relationships → Label,在 Values 列表点击 New,输入 Add Bundles,点击 Save。
关闭 Setup 返回 Salesforce CPQ,创建自定义操作记录让按钮出现在报价行编辑器中:
- 在导航栏点击 Custom Actions,点击 New。
- Name 输入
Add Bundles Prefilter(此名称只有管理员可见,可以多加些信息)。 - Display Order 输入
10(决定按钮相对其他按钮的位置。CPQ 开箱即用的按钮都编号在 900 多,所以 10 会让你的按钮出现在最左边)。 - Type 选 Button。
- 勾选 Active。
- 勾选 Brand Button(把按钮涂成蓝色而非白色,让它更醒目)。
- Location 选 Quote/Group(如果使用组,这会让按钮出现在每个报价行组中,否则出现在报价单头部;它也是唯一能让你创建通往产品选择页面按钮的选项)。
- Action 选 Add Products(告诉 CPQ 前往产品选择页面)。
- Label 选 Add Bundles。
- 点击 Save。
你的 Add Bundles 按钮几乎完成了。此时它会出现供用户点击,但显示的产品与 Add Products 按钮完全相同。
最后一步是创建一个只与该按钮关联的搜索过滤器。设置方式与其他几个几乎一样,但这次从自定义操作记录开始:
- 仍停留在 Add Bundles Prefilter 自定义操作记录上,点击 Related 标签。
- 在 Search Filters 区域点击 New。
- Filter Name 输入
Bundles,Target Object 选 Product,Target Field 选 SBQQ__ConfigurationType__c(Team Trailhead 已预置此值。如你在 Configurable Bundles in Salesforce CPQ 中所学,把 Configuration Type 设为 Required、Allowed 或 Disabled 都是告诉 CPQ 把产品当作捆绑产品处理)。 - Operator 选 ends with。
- Filter Value 输入
ed(谁叫 Ed?看起来奇怪,但其实你只是想看看配置类型是否设为 Required、Allowed 或 Disabled——这些值都以「ed」结尾。或者,你也可以把 Operator 设为「not equals」并把 Filter Value 留空,那会检查配置类型是否被选过而非留空)。 - 勾选 Hidden,Display Order 输入
1,点击 Save。
测试一下:点击 Quotes → Q-00054 → Edit Lines → Add Bundles。你应该看到产品选择页面只有一打左右的产品,而不是通常的 150+ 个——它们全是捆绑产品,多亏了附加到自定义操作的搜索过滤器。
注意:如果你删除了 Add Bundles 自定义操作,Bundles 搜索过滤器记录不会一并删除!这意味着 Bundles 过滤器会被泛化,影响其他所有指向产品选择页面的操作。例如,如果删除 Add Bundles 自定义操作时没有先删除 Bundles 过滤器记录,那么点击 Add Products 按钮也会只显示捆绑产品;由于过滤器是隐藏的,就没有办法显示非捆绑产品了。所以如果删除某个自定义操作,务必先删除关联的搜索过滤器。
恭喜!你成功添加了搜索过滤器,帮助 AW Computing 的销售代表以前所未有的速度销售。凭借出色的搜索过滤器技能,你让庞大的产品目录变得易于管理。
文章来源:Trailhead - Create Search Filters to Quickly Find Salesforce CPQ Products













