You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多选择枚举自定义字段取值异常求助:工作项YES/NO输出问题

问题描述

需要在报表中为每个工作项,从多选择枚举自定义字段取值:若字段包含指定值则输出YES,否则输出NO,但以下代码无法正常工作:

#foreach($ref in $refList)

  #set($refWi = $transaction.workItems().getBy().oldApiObject($ref))
  #set($arr=[$refWi.fields().get("Values")])

  #foreach($item in $arr)   
    #if($item == "Tablets")
      #set($isTablet = "YES")
    #else
      #set($isTablet = "NO")
    #end
  #end
#end

Printing the YES/No value .
问题分析
  1. 错误包装字段值:$refWi.fields().get("Values")本身已经是多选择字段的集合(列表/数组),你用[$...]把它包裹成了单元素数组,导致内层循环只遍历一次,且是拿整个集合和字符串"Tablets"做比较,永远不会匹配。
  2. 逻辑覆盖问题:如果字段有多个值,只要最后一个值不是"Tablets",$isTablet就会被设为NO,哪怕前面有符合条件的值。
  3. 未输出结果:代码末尾仅注释了输出说明,没有实际打印$isTablet的值。
修正后的代码
#foreach($ref in $refList)
  #set($refWi = $transaction.workItems().getBy().oldApiObject($ref))
  #set($isTablet = "NO")
  #set($values = $refWi.fields().get("Values"))
  
  #if($values)
    #foreach($item in $values)   
      #if($item == "Tablets")
        #set($isTablet = "YES")
        #break // 找到目标值后直接跳出循环,避免被后续值覆盖
      #end
    #end
  #end
  
  // 输出当前工作项的判断结果
  $isTablet
#end
修正说明
  • 直接将多选择字段的集合赋值给$values,不再额外包装数组。
  • 初始化$isTablet为NO,仅在找到匹配值时改为YES,避免后续值覆盖正确结果。
  • 找到目标值后用#break终止循环,提升处理效率。
  • 增加$values的空值判断,避免字段为空时触发循环错误。
  • 在循环内直接输出每个工作项的判断结果,确保结果能正常显示。

内容的提问来源于stack exchange,提问作者Devi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:33:31