什么是公式?

公式是一种数学表达式,用于描述数学关系、规律或运算。他能通过基本的算术运算实现单元格之间的数学关系,帮助客户解决单位换算,绩效计算,工资计算等复杂功能。

如何使用公式?

1、实现计算工资

工资=良品数*工资单价

使用下面的公式实现该功能:${报工.良品数} *${报工.工序.工资单价}

2、实现单位换算功能

例如把KG换算成G,使用下面的方式来实现:

首先,我们先在加工单列表创建一个扩展字段名字叫做千克,然后创建一个公式类型的扩展字段,在其中输入下面的公式:

${加工单.千克}*1000

3、使用函数

  • 支持函数
    • case函数
      • 表达式:
        • (expression1,result1;expression2,result2…)
        • (条件表达式1,条件表达式1为true返回该值,条件表达式2,条件表达式2为true返回该值,…)
        • 介绍:判断是否满足一个或多个条件,且返回符合第一个TRUE条件的值,CASE可以取代多个IF语句嵌套
      • 表达式规则:
        • 错误校验
          • case语法的多条件中,按表达式顺序执行,满足即执行规则,后面的表达式正确或错误都不生效
  • 表达式校验错误时,显示tips提示“请检查公式是否正确”
  • 兜底逻辑:
    • 如果输入的规则不合法,或者无法计算出有效结果,统一认为该校验规则错误,不执行此规则

例如:

  • 输入的规则不合法
  • 自定义字段变量被删除
  • 规则不构成一个判断条件,或者无法判断出有效结果
  • 无法计算出数值,例如除以0

示例:

结合良品数和不良品数计算工资

计件计算工资 当良品数大于2000并且不良品数小于50时 工资计算为 良品数减去不良品数乘9.5元 当良品数大于2000并且不良品数大于100时 工资计算为 良品数减去不良品数乘5.5元

公式为:

case(

${报工.良品数}>2000 && ${报工.不良品数}<50,(${报工.良品数} – ${报工.不良品数})*9.5;

${报工.良品数}>2000 && ${报工.不良品数}>100,${报工.良品数}*5.5

)

支持符号(英文模式下)

  • 校验字符白名单(英文模式)
    • 运算符号:加 (+)、减 (-)、乘 (*)、除 (/)
    • 判断符号:等于 (==)、不等于 (!=)、大于 (>)、小于 (<)、大于等于 (>=)、小于等于 (<=)
    • 条件符号:且 (&&)、或(||)
    • 语法符号:小括号 (())、dollar符 ($)、逗号 (,)、分号 (;)、双引号 (“)、单引号 (‘)
+解释说明+是算术运算符,表示加法
使用方式number1+number2

 

  • 返回值为实数
  • number必需,目前支持字段类型为数字型的相加或者数字型字段和实数之间的相加
示例${报工.良品数}+${报工.不良品数}
解释说明-是算术运算符,表示减法
使用方式number1-number2

 

  • 返回值为实数
  • number必需,目前支持字段类型为数字型的相减或者数字型字段和实数之间的减法
示例${报工.良品数}-${报工.不良品数}
*解释说明*是算术运算符,表示乘法
使用方式number1*number2

 

  • 返回值为实数
  • number必需,目前支持字段类型为数字型的相乘或数字型字段和实数相乘
示例${报工.良品数}*2
/解释说明/是算术运算符,表示除法
使用方式number1/number2

 

  • 返回值为实数
  • number必需,目前支持字段类型为数字型的相除或数字型字段和实数之间的除法
示例${报工.良品数}/${报工.报工数}
==解释说明==是关系判断符,表示是否相等,返回结果是布尔类型,若相等返回true,若不相等返回结果false
使用方式logical1==logical2

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字、文本、单选类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1==2返回结果为false
!=解释说明!=是关系判断符,表示是否相等,返回结果是布尔类型,若相等返回false,若不相等返回结果true
使用方式logical1!=logical2

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字、文本、单选类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1!=2返回结果为true
>解释说明>是关系判断符,表示是否大于,返回结果是布尔类型,若大于返回true,若小于返回结果false
使用方式logical1>logical2

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1>2结果为false
<解释说明<是关系判断符,表示是否小于,返回结果是布尔类型,若小于返回true,若大于返回结果false
使用方式logical1<logical2

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1<2结果为true
>=解释说明>=是关系判断符,表示是否大于等于,返回结果是布尔类型,若大于等于返回true,若小于等于返回结果false
使用方式logical1>=logical2

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1>=2结果为false
<=解释说明<=是关系判断符,表示是否小于等于,返回结果是布尔类型,若小于等于返回true,若大于等于返回结果false
使用方式logical1<=logical2

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1<=2结果为true
&&解释说明&&是条件符号,表示用户设置多个逻辑表达式是否同时满足,若同时满足返回true,若不是同时满足。返回false
使用方式logical1<=logical2&& logical1>logical3

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1<=2&&1>0结果为true
||解释说明||是条件符号,表示用户设置多个逻辑表达式是否满足任意一个,若满足任意一个返回true,若不是满足任意一个。返回false
使用方式logical1<=logical2 || logical1>logical3

 

  • 返回结果为布尔型,返回true或者false
  • logical:必需。表示逻辑表达式
  • 支持数字类型字段的判断
  • 若参与计算的逻辑表达式有其他型,返回false
示例1<=2 || 1>3结果为true
()解释说明小括号,使用时必须成对出现
使用方式配合其他运算符使用,代表计算优先级
,解释说明逗号,当一个case语句由多个公式组成,中间用逗号分隔
;解释说明分号,当公式编辑器有多个函数,函数之间用分号隔开
“”、”解释说明双引号和单引号,当一个表达式有常量时,需将常量置于双引号内

支持字段

模块字段变量
加工单项目编号${加工单.项目.编号}
加工单号${加工单.加工单号}
合同编号${加工单.合同.编号}
计划数${加工单.计划数}
完成数量${加工单.完成数量}
状态${加工单.状态}
已完成工序数量${加工单.已完成工序数量}
优先级${加工单.优先级.名称}
交货日期${加工单.交货日期}
工序总数量${加工单.工序总数量}
入库数量${加工单.入库数量}
开始时间${加工单.开始时间}
结束时间${加工单.结束时间}
商品${加工单.商品.名称}
商品编号${加工单.商品.编号}
商品规格${加工单.商品.规格}
加工单扩展字段${加工单.扩展字段}
加工单商品扩展字段${加工单.商品.扩展字段}
报工工序名${报工.工序.名称}
车间${报工.工序.车间.名称}
报工产线${报工.工序.产线.名称}
良品数${报工.良品数}
不良品数${报工.不良品数}
报工配比${报工.工序.报工配比}
计价方式${报工.工序.计价方式}
工资单价${报工.工序.工资单价}
报工时长${报工.报工时长}
生产人员${报工.生产人员.名称}
生产人员扩展字段${报工.生产人员.扩展字段}
报工扩展字段${报工.扩展字段}
采购入库单明细采购单号${采购入库单明细.采购单.编号}
商品名称${采购入库单明细.商品.名称}
商品编号${采购入库单明细.商品.编号}
商品规格${采购入库单明细.商品.规格}
单位${采购入库单明细.商品.单位.名称}
数量${采购入库单明细.数量}
单价${采购入库单明细.单价}
金额${采购入库单明细.金额}
扩展字段${采购入库单明细.扩展字段}
成品入库单明细加工单号${成品入库单明细.加工单.编号}
商品名称${成品入库单明细.商品.名称}
商品编号${成品入库单明细.商品.编号}
商品规格${成品入库单明细.商品.规格}
成品入库单明细计划数量${成品入库单明细.加工单.计划数}
已入库数量${成品入库单明细.加工单.入库数量}
入库数量${成品入库单明细.入库数量}
单位${成品入库单明细.商品.单位.名称}
扩展字段${成品入库单明细.扩展字段}
其他入库单明细商品名称${其他入库单明细.商品.名称}
商品编号${其他入库单明细.商品.编号}
商品规格${其他入库单明细.商品.规格}
数量${其他入库单明细.数量}
单价${其他入库单明细.单价}
商品金额${其他入库单明细.金额}
单位${其他入库单明细.商品.单位.名称}
扩展字段${其他入库单明细.扩展字段}
销售出库单明细商品名称${销售出库单明细.商品.名称}
商品编号${销售出库单明细.商品.编号}
商品规格${销售出库单明细.商品.规格}
数量${销售出库单明细.数量}
单价${销售出库单明细.单价}
金额${销售出库单明细.金额}
单位${销售出库单明细.商品.单位.名称}
合同编号${销售出库单明细.合同.编号}
扩展字段${销售出库单明细.扩展字段}
其他出库单明细商品名称${其他出库单明细.商品.名称}
其他出库单明细商品编号${其他出库单明细.商品.编号}
商品规格${其他出库单明细.商品.规格}
数量${其他出库单明细.数量}
单位${其他出库单明细.商品.单位.名称}
扩展字段${其他出库单明细.扩展字段}
合同明细金额${合同明细.金额}
数量${合同明细.数量}
单价${合同明细.单价}
折扣${合同明细.折扣}
优惠金额${合同明细.优惠金额}
折后金额${合同明细.折后金额}
销售数量${合同明细.销售数量}
商品编号${合同明细.商品编号}
商品名称${合同明细.商品名称}
规格${合同明细.规格}
单位${合同明细.单位}