salesforce零基础学习(一百三十四)State And Country/Territory Picklists启用后的趣事

本篇参考: https://help.salesforce.com/s/articleView?id=sf.admin_state_country_picklists_overview.htm&type=5

背景:提起 State And Country/Territory Picklist这个功能,想必大部分人都不会陌生,其好处是可以让用户更好的选择Country以及State的信息,而不是用户手填,这可以很大程度上保证数据质量,针对后续的Report/Dashboard的数据过滤也会更友好,并且针对集成平台,也可以更好的沟通。 下图中的Address是一个compound field,其中就包括了 Country 和State。

为了方便后续内容的展开,我们先对Lead表创建一个Trigger,针对Before Update / After Update打出一下Trigger.new 以及Trigger.old日志内容。

复制代码
trigger LeadTrigger on Lead (before update, after update) {
    if(Trigger.isUpdate) {
        if(Trigger.isBefore) {
            system.debug('*** before Trigger.new : ' + JSON.serializePretty(Trigger.new));
            system.debug('*** before Trigger.old : ' + JSON.serializePretty(Trigger.old));
        } else if(Trigger.isAfter) {
            system.debug('*** after Trigger.new : ' + JSON.serializePretty(Trigger.new));
            system.debug('*** after Trigger.old : ' + JSON.serializePretty(Trigger.old));
        }
    }
}

我们在启用功能以前,大家可以猜到如何运行,这里不再做测试,接下来我们进行展开,这里先启用中国和美国以及相关的城市或者州。启用步骤可以基于上方的参考链接,因为这个不是本篇重点,所以暂不演示,直接跳到成功画面。通过下图中,我们可以看到Country以及State已经配置完成。

我们对Country以及State字段进行修改。从 China -> Beijing修改成 United States -> New York.

我们通过Debug Log获取主要的一些信息,其他不重要的信息省略。

*** before Trigger.new :

复制代码
[ {
  "StateCode" : "NY",
  "State" : "Beijing",
  "Country" : "China",
  "Id" : "00Q5g00000SfwnHEAR",
  "LastName" : "test",
  "CountryCode" : "US"
} ]

*** before Trigger.old :

复制代码
[ {
  "StateCode" : "11",
  "State" : "Beijing",
  "Country" : "China",
  "Id" : "00Q5g00000SfwnHEAR",
  "LastName" : "test",
  "CountryCode" : "CN"
} ]

*** after Trigger.new :

复制代码
[ {
  "StateCode" : "NY",
  "State" : "New York",
  "Country" : "United States",
  "Id" : "00Q5g00000SfwnHEAR",
  "LastName" : "test",
  "CountryCode" : "US"
} ]

*** after Trigger.old :

复制代码
[ {
  "StateCode" : "11",
  "State" : "Beijing",
  "Country" : "China",
  "Id" : "00Q5g00000SfwnHEAR",
  "LastName" : "test",
  "CountryCode" : "CN"
} ]

我们基于上方的log可以看到,尽管我们已经从 China -> Beijing 修改成了 United States -> New York,然而Before Trigger中的Trigger.new却呈现出了很迷惑的操作,如果程序中使用 Country/ State作为判断逻辑,当启用这个功能会造成很大的问题,因为Country / State在before的节点,值是错的,其他的节点是正确的。 所以实际项目中,如果启用这个功能,一定要检查当前系统中是否有trigger的before是否有针对这个字段的逻辑,如果有,需要修改成 CountryCode和StateCode,否则会造成逻辑问题。

**总结:**翻了一下官方文档,目前没有说过这个Consideration/Limitation,估计是一个bug。有用到的或者即将用到的朋友注意这点就好。篇中有错误的地方欢迎指出,有不懂的欢迎留言。

相关推荐
zero.zhang5 天前
Salesforce AI Specialist篇之 Einstein Trust Layer
salesforce学习·ai 学习
zero.zhang2 个月前
Salesforce Sales Cloud 零基础学习(五) My Labels的使用
salesforce学习·admin学习·sales cloud
zero.zhang2 个月前
salesforce零基础学习(一百四十)Record Type在实施过程中的考虑
salesforce学习·self learning·admin学习
zero.zhang4 个月前
salesforce零基础学习(一百三十九)Admin篇之Begins/Contains/Starts With 是否区分大小写
salesforce学习·admin学习
zero.zhang5 个月前
salesforce零基础学习(一百三十八)零碎知识点小总结(十)
salesforce学习·self learning·admin学习
zero.zhang5 个月前
salesforce零基础学习(一百三十七)零碎知识点小总结(九)
salesforce学习·admin学习
zero.zhang5 个月前
salesforce零基础学习(一百三十六)零碎知识点小总结(八)
lightning学习·lwc·salesforce学习·admin学习
zero.zhang6 个月前
salesforce零基础学习(一百三十五)项目中的零碎知识点小总结(七)
lwc·salesforce学习·self learning
zero.zhang7 个月前
Salesforce LWC学习(四十九) RefreshView API实现标准页面更新,自定义组件自动捕捉更新
lightning学习·lwc·salesforce学习
zero.zhang9 个月前
Salesforce LWC学习(四十六) record-picker组件浅谈
lightning学习·lwc·salesforce学习