Salesforce复合地址字段验证规则异常问题求助
问题与解决方案
问题描述
我为自定义复合地址字段创建了一条验证规则,其中国家字段默认已填充。规则预期满足以下两个条件时触发错误提示:
lived_since__c字段值为「少于2年」;Previous_Address_StateCode_s、Previous_Address_Street_s、Previous_Address_PostalCode_s和Previous_Address_City_s四个字段全为空。
但实际效果异常:只有Previous_Address_StateCode_s为空时会触发规则,删掉这个字段的判断后,也仅其他字段中的某一个生效。所用验证规则公式如下:
AND( ISPICKVAL(lived_since__c, 'Less than 2 years'), ISBLANK(Previous_Address_StateCode_s), ISBLANK(Previous_Address_Street_s), ISBLANK(Previous_Address_PostalCode_s), ISBLANK(Previous_Address_City_s) )
问题原因
Salesforce的复合地址子字段并非完全独立。当复合地址的国家字段有默认值时,系统可能为其他子字段自动填充空字符串('')而非真正的null值。而ISBLANK()函数仅识别null,碰到空字符串会返回false,导致你的AND逻辑无法同时满足所有条件。
修复方法
把公式中的ISBLANK()替换为LEN(TRIM(字段名)) = 0,该判断可同时识别null、空字符串及带空格的无效内容。修改后的公式如下:
AND( ISPICKVAL(lived_since__c, 'Less than 2 years'), LEN(TRIM(Previous_Address_StateCode_s)) = 0, LEN(TRIM(Previous_Address_Street_s)) = 0, LEN(TRIM(Previous_Address_PostalCode_s)) = 0, LEN(TRIM(Previous_Address_City_s)) = 0 )
额外注意点
- 测试前需确认四个子字段确实未输入任何有效内容(包括空格),可通过查看字段原始值验证;
- 若
Previous_Address_StateCode_s为选择型字段,需确保其选项中无空值选项,避免干扰判断。
内容的提问来源于stack exchange,提问作者shafi jan
相关产品推荐
相关产品推荐

