一,函数表达式
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
3,CASE WHEN 示例
检索某个字段,当匹配时输出某字段
_function CASE LOCATE('检索文本','{{检索的字段}}') WHEN 0 THEN '{{不匹配时字段A}}' ELSE '{{匹配时的字段}}' END
二,从其他集线器中查询匹配数据
在配置入库单关联关系时必须要原始订单的 FID 与 分录ID ,但是旺店通内的采购入库单我们只能够获取到外部订单号(outer_no) 与 物料编码。此时我们可以从 采购订单同步方案 中去定位金蝶系统的原始 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. FMaterialId_FNumber={{details_list.goods_no}} 可以书写多个查询条件,他们都是 and 关系,不需要另外增加 and 关键字但需要使用空格与上一个条件分隔开
务必留意语法中每一段的分割都必须是一个英文空格