值表达式的高级写法

函数表达式

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

  1. _function FROM_UNIXTIME({{LAST_SYNC_TIME}}-600 ,'%Y-%m-%d %H:%i:%s' )
  2. # 税率字段*100,例如旺店通系统税率值为 0.13 ,而金蝶的税率值为 13。此时需要进行这样的计算函数
  3. _function {{details_list.tax}} * 100
  4. # 你也可以书写一段 case when then 的逻辑判断表达式,该语法等同于 MySql 语句中的语法规则,最后只需要 end 结尾,并不需要 as field
  5. _function case '{{FOrgId}}' when '100' then {{price}}*{{qty}} when '200' then '201' else '{{FOrgId}}' end
  6. # 也可以使用各种基本函数进行计算 sum avg max min
  7. _function sum({{details_list.qty}})

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

更加复杂的 case when then 示例

  1. SELECT # 表达式函数中并不需要写 SELECT
  2. CASE LEFT('AD0001',2) # 截取左边两位
  3. WHEN 'AD' THEN 100
  4. WHEN 'BB' THEN 101
  5. WHEN 'GG' THEN 102
  6. WHEN 'EE' THEN 103
  7. ELSE 103
  8. END
  9. AS FIELD # 表达式函数中不需要写最后的 AS FIELD

CASE WHEN 示例

## 检索某个字段,当匹配时输出某字段 
_function CASE LOCATE('检索文本','{{检索的字段}}')  WHEN 0 THEN '{{不匹配时字段A}}'  ELSE '{{匹配时的字段}}' END

👩‍💻 从其他集线器中查询匹配数据

在应对以下场景时,我们需要在旺店通的采购入库传入金蝶时与之前的采购订单关联。

自定义函数 - 图1

在配置入库单关联关系时必须要原始订单的 FID分录ID ,但是旺店通内的采购入库单我们只能够获取到外部订单号(outerno) 与 物料编码。此时我们可以从 采购订单同步方案_ 中去定位金蝶系统的原始 ID。

_findCollection find FPOOrderEntry_FEntryId from 8e620793-bebb-3167-95a4-9030368e5262 where FBillNo={{outer_no}} FMaterialId_FNumber={{details_list.goods_no}}

语法释义

  1. _findCollection 必须作为开头的声明,并且使用一个空格作为后面语句的开始分隔
  2. find 作为第一个关键字声明需要查询定位的字段,后面使用一个空格作为分隔
  3. FPOOrderEntry_FEntryId 代表需要定位查询的字段,表头一般是 FID
  4. from 作为第二个关键字,声明需要从那个同步集线器查询。这里使用集线器的 ID
  5. where 关键字后面紧跟定位条件,可以有多个定位条件
  6. FBillNo={{outer_no}} 每个定位条件使用如下写法,中间不要有空格
  7. FMaterialIdFNumber={{details_list.goods_no}} 可以书写多个查询条件,他们都是 _and 关系,不需要另外增加 and 关键字但需要使用空格与上一个条件分隔开

⚠️ 务必留意语法中每一段的分割都必须是一个英文空格 ⚠️