轻易云
注册体验

自定义函数设置

1 条评论

一、值表达式的高级写法

1.函数表达式

应对复杂的业务场景,属性值窗口支持高级的函数化表达式写法 。在前缀增加 function ,示例:

_function FROM_UNIXTIME({{LAST_SYNC_TIME}}-600 ,'%Y-%m-%d %H:%i:%s' )


# 税率字段*100,例如旺店通系统税率值为 0.13 ,而金蝶的税率值为 13。此时需要进行这样的计算函数
_function  {{details_list.tax}} * 100

# 你也可以书写一段 case when then 的逻辑判断表达式,该语法等同于 MySql 语句中的语法规则,最后只需要 end 结尾,并不需要 as field
_function  case '{{FOrgId}}' when '100' then {{price}}*{{qty}} when '200' then '201' else  '{{FOrgId}}' end

# 也可以使用各种基本函数进行计算 sum avg max min
_function sum({{details_list.qty}})

⚠️ ⚠️ ⚠️
注意必须是_function 前缀
前缀文本开头不要有空格
前缀文本结尾尽量使用空格以保障可阅读性,虽然这并不会对程序造成什么影响
如果这段函数出现计算上的错误(如除 0),那么文本会原样返回

2.更加复杂的 case when then 示例

SELECT                # 表达式函数中并不需要写 SELECT
CASE LEFT('AD0001',2) # 截取左边两位
WHEN 'AD' THEN 100
WHEN 'BB' THEN 101
WHEN 'GG' THEN 102
WHEN 'EE' THEN 103
ELSE 103
END
AS FIELD              # 表达式函数中不需要写最后的 AS FIELD
## 检索某个字段,当匹配时输出某字段 
_function CASE LOCATE('检索文本','{{检索的字段}}')  WHEN 0 THEN '{{不匹配时字段A}}'  ELSE '{{匹配时的字段}}' END

二、自定义函数与联查嵌套

_function _findCollection 两个语句可以组合起来使用。
例如需求: 当查询到物料没启用保质期管理,则生产日期为空。

_function 
  case 
    _findCollection find FIsKFPeriod 
      from 66da8241-98f4-39f9-8fee-cac02e30e532 
      where FNumber={{details.details_item_code}} 
    _endFind
  when true then '{{details.details_detail_batch_validTime}}' 
  else '' end

在case语句后面嵌套使用到了 _findCollection 语句,此时需要额外的 _endFind 对联查语句声明结束。

!!注意!!
以上示例代码为了方便演示,使用了换行符、TAB缩进。正常使用时不能出现这些符号。

_function case _findCollection find FIsKFPeriod from 66da8241-98f4-39f9-8fee-cac02e30e532 where FNumber={{details.details_item_code}} _endFind when true then '{{details.details_detail_batch_validTime}}' else '' end