本篇參考: 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
部落格地址:http://www.cnblogs.com/zero-zyq/
本文歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線
如果文章的內容對你有幫助,歡迎點贊~
為方便手機端檢視部落格,現正在將部落格遷移至微信公眾號:Salesforce零基礎學習,歡迎各位關注。