1、简介
在文本、数值、日期、时间、进度条、评分等多种字段中,均支持通过设置计算公式进行自动计算。
计算公式,支持使用基本运算符 + - * / ( ) 对字段进行基础运算、对子表进行统计计算,也支持使用函数进行逻辑计算。
运算结果,依据字段类型及属性,支持返回数值和日期。结果随着公式中调用的变量的变化而实时变化。
2、设置计算公式
点击“设置公式”,在弹出的窗口中输入计算公式,返回的结果需为数值或日期格式。
- 支持对表格的字段变量,包括数值、金额、日期、时间字段,进行+、-、*、/等基本运算。
- 支持对表格的统计变量,包括当前表格多关联的数据和关联当前表格的数据,进行SUM、AVG、MAX、MIN等统计,多个变量也可进行基本运算。
- 支持使用函数(如IF、ROUND、DATEDIF、CONCAT等)进行逻辑运算。
2.1 计算公式的三种配置方式
计算字段支持进行以下三种方式计算,也它们支持混合运算:
2.1.1 对字段变量,进行+、-、*、/等基本运算。
- 字段变量包括:当前表格字段和关联数据字段所关联表格的字段。
- 示例如下图,在订单明细表中计算每条明细的产品合计,计算公式为:单价*数量
2.1.2 对统计变量,进行计数、求和、求平均等统计计算,多个变量也可进行基本运算。
2.1.2.1 统计变量的类型和适用场景
- 统计变量包含两种类型:
- 统计当前表格多关联的数据,对多选的关联数据字段 进行统计计算;
- 统计关联当前表格的数据,对关联当前数据的子表数据进行统计计算。
- 示例如下图,在订单表中统计归属于当前订单的所有明细的订单总价,计算公式为:SUM({订单明细.产品总价})。
- 与 Excel 用法不同,统计两个字段的乘积时,不能直接统计字段 A * 字段 B。需先在计算字段中算出两字段乘积,再在主表中添加计算字段对子表该计算字段进行统计。例如,在订单表中统计关联所有订单明细的总价,操作如下:
- 在订单明细中设置计算字段 “产品合计”,公式为 “单价 * 数量”。
- 在订单表中设置计算字段 “订单总价”,公式为 “SUM ({订单明细。产品总价})”。
2.1.2.2 统计变量的配置方法
① 点击 统计变量,右侧灰色区域中 选择统计方式;
② 设置 统计条件,根据需要选择设置,可设置多个条件。设置多个条件时,筛选满足全部条件的数据进行统计。
2.1.3 使用函数(如IF、ROUND、DATEDIF、CONCAT等)进行逻辑运算。
2.1.3.1 不支持使用ITEM、TODAY、NOW等函数。
- 如对计算后的结果设置保留2位小数。
2.1.3.2 添加函数的方法
① 查看&添加函数:滚动鼠标可查看更多函数,点击即可添加至输入框使用;
- 支持手动输入部分字母,快速查找到目标函数,点击即可快速添加函数。
② 光标方式在已添加的函数的括号内,可在灰色区域 查看函数的用法&示例。
③ 函数速查表:https://sc1m.hbjump.com/sp66ueq0muent
2.2 若希望计算结果返回日期类型,公式的设置方法
想要计算结果正确显示日期、日期和时间,需要注意两部分:
① 字段类型需选择日期、时间字段
② 计算公式的结果需满足固定格式的文本,具体格式如下:
- 日期和时间的格式为 “ YYYY-MM-DD HH:Mi ”,可被成功赋值的几种写法:
- DATEADD('2023-05-15 12:12:15',2,'D')
- DATEFORMAT('2014-12-15 15:10:00','YYYY-MM-DD HH:Mi')
- CONCAT('1995-01-06 ','15:10:00')
- '1995-01-06 15:10:00'
- 日期的格式为**“YYYY-MM-DD”**,可被成功赋值的几种写法:
- DATEADD('2023-05-15',2,'D')
- DATEFORMAT('2014-12-15','YYYY-MM-DD')
- '1995-01-06'
3、注意事项
3.1 自动计算不能触发触发器执行。
3.2 单个字段中调用变量的总上限为 30 个(不区分是字段变量和统计变量),其中,统计变量最多支持调用 3 个。
统计变量包括统计当前表格多关联的数据和统计关联当前表格的数据。
3.3 若参与计算的变量中有0/空值:
- 计算公式中参与计算的变量字段为空时,结果均显示为0;
- 计算公式是除法时,除数为0/空时,结果显示“未计算出结果”,除数不为0/空,被除数为0时,结果显示为0。
3.4 Concat 函数使用说明
- 建议将 Concat 函数的计算结果设置为文本类型。
- 若需拼接数值或日期类数据,需先通过相关函数进行格式化处理,否则可能导致结果与预期不符。
- 拼接 “成员”“选项”“关联数据” 类型字段时,返回结果将显示对应数据的 ID(而非名称或内容)。
- 计算字段中使用 Concat 函数进行文本转换时,结果与工作流中
CONCAT({目标数据.字段})
的输出一致。 - 日期类字段(包括日期字段、时间字段)拼接规则:
无论字段本身的展示格式如何,都会默认转换为YYYY-MM-DD HH:mm:SS
格式的字符串;若需其他格式,需额外使用DATEFORMAT
函数处理。
3.5 历史计算字段兼容说明
本功能上线前已存在的历史计算字段,在编辑其字段设置面板时,将自动按原数据输出类型转换为对应的数值或日期字段,且界面交互将同步更新为新功能的展示样式。
4、常见疑问:选择自动计算还是触发器?
自动计算能够方便地完成数值的计算并填入字段值中,满足自动计算的需求。但还有一些情况,我们需要用触发器完成自动计算:
4.1 计算逻辑会频繁变动、且不希望修改历史数据时
例:报价单需要有一个「报价总额」字段,但报价规则会根据业务频繁变动,且新的报价规则不应该影响历史数据。
自动计算中的表达式一旦发生改动,将立即对全表的数据生效,因此历史数据的值也会发生修改,且不会留下修改记录。因此这种情况推荐使用触发器实现。
4.2 需要用到 TODAY()、 NOW() 等日期函数时
和触发器不同,自动计算不存在「触发」时机,因此无法使用日期函数表达「今天」、「当月」等概念。涉及到根据时间动态变化时,需要用触发器实现。
4.3 希望自动计算结果的变动,能够成为其它触发器的触发条件时
同上,既然不存在「触发」时机,它的值变动也就无法成为其他触发器的触发条件。如果想要实现「链式触发」的效果,建议使用触发器修改数据。伙伴云最多支持 15 层涟漪式触发,可以充分满足链式触发需求。