Salesforce Flow更新记录Formula异常:满足条件仍返回False分支
问题排查:Salesforce Formula始终返回False分支值
我写了下面这个Formula,但调试时明明满足所有设定条件,记录却一直被更新为False分支的"Copy Needed"值,已经试过调试操作,怀疑Formula本身有问题。
Formula代码如下:
IF( AND( OR( {!$Record.RecordType.DeveloperName} = "Hotel Opportunity", {!$Record.RecordType.DeveloperName} = "Hotel Opportunity - Approved" ), OR( ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "New Copy Loaded"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "Copy Received"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "Ready to Go"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "Copy Already Held") ), OR( ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "BE"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "CH"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "DE"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "DK"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "IT"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "NL"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "NO"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "SE"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "UK") ) ), "Copy Already Held", "Copy Needed" )
排查方向与修正建议
- 匹配值空格问题:代码中
"New Copy Loaded"包含多个连续空格,需检查系统内该Picklist选项的实际值是否完全一致。很多时候配置或输入时是单个空格,会导致ISPICKVAL匹配失败,这是最常见的原因。 - RecordType取值验证:新增临时Formula字段,直接输出
{!$Record.RecordType.DeveloperName}的内容,确认其返回值是否确实是"Hotel Opportunity"或"Hotel Opportunity - Approved",避免引用路径错误。 - 循环变量上下文检查:如果该Formula用于Flow等循环场景,确认
Loop_through_Copy_Requirement_Records是否在当前循环上下文正确引用了目标记录,变量名是否拼写无误。 - 逻辑条件确认:确认业务逻辑是否要求AND中的三个OR条件必须同时满足,有没有误将OR逻辑写成AND的情况。
修正后的示例代码(修正空格问题)
IF( AND( OR( {!$Record.RecordType.DeveloperName} = "Hotel Opportunity", {!$Record.RecordType.DeveloperName} = "Hotel Opportunity - Approved" ), OR( ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "New Copy Loaded"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "Copy Received"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "Ready to Go"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Status__c}, "Copy Already Held") ), OR( ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "BE"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "CH"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "DE"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "DK"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "IT"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "NL"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "NO"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "SE"), ISPICKVAL({!Loop_through_Copy_Requirement_Records.Territory__c}, "UK") ) ), "Copy Already Held", "Copy Needed" )
内容的提问来源于stack exchange,提问作者Shafique Islam
相关产品推荐
相关产品推荐

