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。有用到的或者即将用到的朋友注意这点就好。篇中有错误的地方欢迎指出,有不懂的欢迎留言。
salesforce零基础学习(一百三十四)State And Country/Territory Picklists启用后的趣事的更多相关文章
- salesforce 零基础学习(三十四)动态的Custom Label
custom label在项目中经常用到,常用在apex class或者VF里面用来显示help text或者error message.有的时候我们需要用到的信息是动态变化的,那样就需要动态来显示信 ...
- salesforce 零基础学习(二十四)解析csv格式内容
salesforce中支持对csv格式的内容批量导入,可以使用dataloader,然而有些情况下,当用户没有相关权限使用dataloader导入情况下,就的需要使用VF和apex代码来搞定. 基本想 ...
- salesforce 零基础学习(三十九) soql函数以及常量
在salesforce中,我们做SOQL查询时,往往需要用到计算式,比如求和,求平均值,或者过滤数据时,往往需要通过时间日期过滤,SOQL已经封装了很多的函数,可以更加方便我们的sql查询而不需要自己 ...
- salesforce零基础学习(八十四)配置篇: 自定义你的home page layout
当我们进入salesforce系统或者切换app后,默认第一个看到的就是home页面.home页面简单的来说可以包括左侧(narrow component)和右侧(wide component)两部分 ...
- salesforce 零基础学习(三十六)通过Process Builder以及Apex代码实现锁定记录( Lock Record)
上一篇内容是通过Process Builder和Approval Processes实现锁定记录的功能,有的时候,往往锁定一条记录需要很多的限制条件,如果通过Approval Processes的条件 ...
- salesforce 零基础学习(六十四)页面初始化时实现DML操作
有的时候我们往往会遇到此种类似的需求:用户在访问某个详细的记录时,需要记录一下什么时候哪个用户访问过此页面,也就是说进入此页面时,需要插入一条记录到表中,表有用户信息,record id,sObjec ...
- salesforce 零基础学习(五十四)常见异常友好消息提示
异常或者error code汇总:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_con ...
- salesforce 零基础学习(三十八)Translate 的使用(国际化处理)
本篇参考:http://resources.docs.salesforce.com/200/17/en-us/sfdc/pdf/salesforce_workbench_cheatsheet.pdf ...
- salesforce 零基础学习(三十五) 通过Process Builder和Approval Processes锁定记录(Lock Record)
有的时候我们可能有这样的需求,当某个字段为特定的值情况下,便锁定此条记录,仅允许Profile为System Admin的用户修改或者解锁,其他的用户只能查看此条记录,不能修改此条记录,这种情况下我们 ...
- salesforce 零基础学习(三十)工具篇:Debug Log小工具
开发中查看log日志是必不可少的,salesforce自带的效果显示效果不佳,大概显示效果如下所示: chrome商城提供了apex debug log良好的插件,使debug log信息更好显示.假 ...
随机推荐
- Prompt Playground 7月开发记录
Prompt Playground 2023年7月开发记录 上个月的时候,出于日常工作需求,做了一个简单的提示词调试工具 Prompt Playground. 这个工具的初衷是为了方便测试,所以没有做 ...
- 社区活动 | “中文 AI 微小说大赛”正式开启报名!
️ 我们要求每位参赛选手以 LLM (大语言模型)为工具,将 AI 的能力与选手的创作才华相结合,创造出引人入胜.感人至深或充满疯狂的微小说! 无论你是首次接触 AI 工具还是资深的从业者,我们期待在 ...
- 基于 ASP.NET 的投票系统
OnlineVoting 基于 ASP.NET 的投票系统 功能页面 登录 注册 首页 投票广场 查看别人发布的投票. 个人中心 个人资料 换头像.修改密码和其他信息. 发布投票 项目地址:https ...
- Programming abstractions in C阅读笔记:p91-p106
<Programming Abstractions In C>学习第45天,p91-p102,完成第二章内容学习.总结如下: 一.技术总结 1.垃圾回收 p91,"Some la ...
- DAY001_二进制运算
左移和右移 无符号左移? Java没有无符号左移 无符号右移 左边补0 有符号右移 左边用原符号位补位 即正数补0效果同无符号右移.负数补1 有符号左移 右边补0 import org.junit.T ...
- Luckysheet:一个纯前端的excel在线表格
最近因为项目要求,需要在页面上添加一个在线编辑excel的功能,因此只能在网上找有没有直接用的插件,最后很幸运的是幸好找到了一个 ----luckysheet. 这个是从luckysheet官网上找的 ...
- 11、Spring之基于注解的AOP
11.1.环境搭建 创建名为spring_aop_annotation的新module,过程参考9.1节 11.1.1.配置打包方式和依赖 注意:AOP需要在IOC的基础上实现,因此需要导入IOC的依 ...
- 推荐一款免费好用的远程桌面:Getscreen
因为平时有多台设备要用,所以远程桌面是我经常要使用的工具. 最近,正好看到一款不错的远程桌面软件,马上拿出来推荐给大家,如果有需要的可以看看. 今天要推荐的远程桌面软件就是这款叫Getscreen的软 ...
- 如何使用Grid中的repeat函数
在本文中,我们将探索 CSS Grid repeat() 函数的所有可能性,它允许我们高效地创建 Grid 列和行的模式,甚至无需媒体查询就可以创建响应式布局. 不要重复自己 通过 grid-temp ...
- 如何使用API接口获取Lazada商品详情数据
随着电商市场的不断发展壮大,越来越多的人开始选择在网上购买商品.其中,东南亚地区的Lazada电商平台备受欢迎.如果您是一名电商从业者,或者打算在Lazada上开店,那么获取商品详情信息将是一个非常重 ...