前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >salesforce零基础学习(一百三十四)State And Country/Territory Picklists启用后的趣事

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

作者头像
Zero-Zhang
发布2023-12-01 09:44:25
1430
发布2023-12-01 09:44:25
举报
文章被收录于专栏:salesforce零基础学习

本篇参考: 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日志内容。

代码语言:javascript
复制
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 :

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

*** before Trigger.old :

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

*** after Trigger.new : 

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

*** after Trigger.old : 

代码语言:javascript
复制
[ {
  "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。有用到的或者即将用到的朋友注意这点就好。篇中有错误的地方欢迎指出,有不懂的欢迎留言。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档