1、简介
1.1 功能简介
计算字段中可设置计算公式,支持使用基本运算符 + - * / ( ) 对字段进行基础运算、对子表进行统计计算,也支持使用函数进行逻辑计算。
计算字段的值为计算公式的运算结果,支持返回数值和日期。结果随着公式中调用的变量的变化而实时变化。
1.2 应用场景
主要用于直接调用字段变量进行计算或统计子表明细类场景,例如:
- 订单明细表计算小计金额(单价x数量)
- 项目进度表计算剩余工期(计划总工期 - 已过去天数)
- 订单表统计订单总金额
- 任务表统计完成任务数量
- 报销表计算报销总金额
2、字段的配置步骤
2.1 添加计算字段:在创建或编辑表格时,进入表单设计页面,点击左侧的【添加字段】按钮,选择“计算”类型来添加一个计算字段。
2.2 配置字段设置:选中新增的附件字段,在字段设置中可设置字段名称、计算公式等:
2.2.1 字段名称:可自定义字段的名称。
2.2.2 设置计算公式:点击“设置公式”,在弹出的窗口中输入计算公式,返回的结果需为数值、金额或日期格式。
- 支持对表格的字段变量,包括数值、金额、日期字段,进行+、-、*、/等基本运算。
- 支持对表格的统计变量,包括当前表格多关联的数据和关联当前表格的数据,进行SUM、AVG、MAX、MIN等统计,多个变量也可进行基本运算。
- 支持使用函数(如IF、ROUND、DATEDIF、CONCAT等)进行逻辑运算。
2.2.3 结果格式:可设置计算结果在前端的显示样式,包括:
- 结果类型:支持选择 数值、百分比、仅日期、日期和时间 四种。
- 保留小数:支持自定义保留小数的位数,也可以选择自动,选择自动时显示数据库中存储的原始值。
- 显示千分位分隔符:可选择是否开启千分位分隔符。
- 显示后缀/前缀:可自定义后缀/前缀,如货币符号¥、$。
2.2.4 填写辅助:可设置提示,告知使用者文件上传的要求&规则。
其中,填写提示可直接显示在字段输入框一侧,字段帮助
- 填写提示:可直接显示在字段输入框一侧。不支持设置文本样式,适用于文本较短的提示。
- 字段帮助:需点击字段名称旁的问号才显示。配备富文本编辑器,适用于文本较长的规则描述。
3、如何设置计算公式?
3.1 计算公式的三种配置方式
计算字段支持进行以下三种方式计算,也它们支持混合运算:
3.1.1 对字段变量,进行+、-、*、/等基本运算。
- 字段变量包括:当前表格字段和关联数据字段所关联表格的字段。
- 示例如下图,在订单明细表中计算每条明细的产品合计,计算公式为:单价*数量
3.1.2 对统计变量,进行计数、求和、求平均等统计计算,多个变量也可进行基本运算。
3.1.2.1 统计变量的类型和适用场景
- 统计变量包含两种类型:
- 统计当前表格多关联的数据,对多选的关联数据字段 进行统计计算;
- 统计关联当前表格的数据,对关联当前数据的子表数据进行统计计算。
- 示例如下图,在订单表中统计归属于当前订单的所有明细的订单总价,计算公式为:SUM({订单明细.产品总价})。
- 与 Excel 用法不同,统计两个字段的乘积时,不能直接统计字段 A * 字段 B。需先在计算字段中算出两字段乘积,再在主表中添加计算字段对子表该计算字段进行统计。例如,在订单表中统计关联所有订单明细的总价,操作如下:
- 在订单明细中设置计算字段 “产品合计”,公式为 “单价 * 数量”。
- 在订单表中设置计算字段 “订单总价”,公式为 “SUM ({订单明细。产品总价})”。
3.1.2.2 统计变量的配置方法
① 点击 统计变量,右侧灰色区域中 选择统计方式;
② 设置 统计条件,根据需要选择设置,可设置多个条件。设置多个条件时,筛选满足全部条件的数据进行统计。
3.1.3 使用函数(如IF、ROUND、DATEDIF、CONCAT等)进行逻辑运算。
3.1.3.1 不支持使用ITEM、TODAY、NOW等函数。
- 如对计算后的结果设置保留2位小数。
3.1.3.2 添加函数的方法
① 查看&添加函数:滚动鼠标可查看更多函数,点击即可添加至输入框使用;
- 支持手动输入部分字母,快速查找到目标函数,点击即可快速添加函数。
② 光标方式在已添加的函数的括号内,可在灰色区域 查看函数的用法&示例。
③ 函数速查表:https://sc1m.hbjump.com/sp66ueq0muent
3.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'
4、注意事项
4.1 计算字段不能触发触发器执行。
4.2 单个计算字段中调用变量的总上限为 30 个(不区分是字段变量和统计变量),其中,统计变量最多支持调用 3 个。
统计变量包括统计当前表格多关联的数据和统计关联当前表格的数据。
4.3 若参与计算的变量中有0/空值:
- 计算公式中参与计算的变量字段为空时,结果均显示为0;
- 计算公式是除法时,除数为0/空时,结果显示“未计算出结果”,除数不为0/空,被除数为0时,结果显示为0。
5、常见疑问:选择计算字段还是触发器?
计算字段能够方便地完成数值的计算并填入字段值中,满足自动计算的需求。但还有一些情况,我们需要用触发器完成自动计算:
5.1 计算逻辑会频繁变动、且不希望修改历史数据时
例:报价单需要有一个「报价总额」字段,但报价规则会根据业务频繁变动,且新的报价规则不应该影响历史数据。
计算字段中的表达式一旦发生改动,将立即对全表的数据生效,因此历史数据的值也会发生修改,且不会留下修改记录。因此这种情况推荐使用触发器实现。
5.2 需要返回文本类型数据时
计算字段只支持返回数值、日期数据,如果需要返回文本,需要使用触发器实现。
5.3 需要用到 TODAY()
NOW()
等日期函数时
和触发器不同,计算字段不存在「触发」时机,因此无法使用日期函数表达「今天」「当月」等概念。涉及到根据时间动态变化时,需要用触发器实现。
5.4 希望计算字段数值的变动,能够成为其它触发器的触发条件时
同上,既然不存在「触发」时机,它的值变动也就无法成为其他触发器的触发条件。如果想要实现「链式触发」的效果,建议使用触发器修改数据。伙伴云最多支持 15 层涟漪式触发,可以充分满足链式触发需求。
5.5 单表需要使用的计算字段数量超过10个时
由于计算字段对系统的性能影响较大,容易造成创建数据 / 修改数据响应缓慢的情况,因此单表计算字段个数限制为 10 个。如果需要提升性能或控制计算字段个数,可以用触发器实现相关功能。