# 利用表单函数公式实现不同模式的出差补贴金额计算

来源快照：`result_data_new_260518.json`

- 来源 ID：`1971375553441026745`
- 模块：低代码平台e-builder
- 目录：专题学习 - 场景专题 - 表单专题
- space ID：`1157961794811633670`
- 原文链接：未提供
- 产品基线：未提供

## 正文

****

**1.  ****编写目的  **

本期主要讲解如何利用函数计算两个日期字段的差值，以及在遇到多种不同的条件时，如何自动改变字段的值。

例如各公司在填写出差申请时，常常需要根据出差天数以及出差类型不同，给予不同金额的补贴。以下图为例，根据省内/省外出差，以及出差天数7天内/超过7天，补贴的金额都会不同：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693608424865813&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

**  
**

**2.****思路分析**

对于这种情况，我们可以利用表单函数公式实现：首先计算出用户的出差天数（DATEDIFF函数）；之后根据公司出差补贴的多种政策（IFS函数），自动计算出补贴总额，展示效果如下：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693608489148503&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)  


** **

**3.  ****操作说明**  

**1.****新建出差申请表**

如下图所示， 新建出差申请表，表中包含出差日期（日期区间）、出差天数（数字）、出差类型（下拉单选框）、补贴金额（金额）等关键字段:

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693612886720535&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

**2.****计算出差天数**

在表单设计器中，我们可以发现有两处设置函数公式的地方：

一处是在字段右侧属性设置栏中，部分字段（例如文本、数字、金额等）可以直接设置函数，另一处是在表单设计器的左上角，也可以设置函数公式：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693612795330618&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

两处的区别在于，例如一个公式：A=B+C

1.字段右侧自带的函数公式，A就是字段本身，因此公式内直接写B+C即可，并且A会随着B或C这两个变量的变化而自动进行公式运算；此外，这里设置的函数对表单所有布局生效，不能指定生效范围。

2.左上角的函数公式，首先需要确定公式的触发动作，不仅可以是字段改变，也可以是其他的改变（触发方式更加多样化）；其次公式书写时，需要书写完整的A=B+C（如下图所示）；并且一个表单如果有多个布局，可以指定生效的布局范围。

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693617137803298&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

在本场景中，出差天数的计算较为简单，可以直接利用该字段右侧的函数公式计算，我们在函数中输入关键词“日期”，即可找到与日期有关的函数公式。

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693617137803344&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

本场景中我们需要计算两个日期的差值，因此可以采用“DATEDIFF”函数，函数公式设置如下（“+1”是根据实际场景计算天数，因此会比差值多一天）：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693617095123042&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

配置后天数自动计算效果如下：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693621482365034&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

**3.****计算出差补贴金额**

为了演示函数公式的两种方式，出差补贴金额我们利用左上角的函数公式进行设置，首先我们新建公式，设置触发动作。在这里可以设置“出差时间”与“出差类型”值改变时触发：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693625697009667&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

在开篇所提到的场景需求中，我们可以将出差补贴归为四种情况：省内7天内、省内超过7天、省外7天内、省外超过7天。如果是两个条件，则可以用“if”函数；面对这种四个条件分支的场景，可以使用“ifs”函数。

具体设置如下：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693625697009701&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

在配置过程中，需要注意以下几点：

①   与字段右侧函数的配置不同，这里的函数要书写左侧的值，例如上图中的“补贴金额=”；

②   所有的函数都需要在下面的函数中选取，尽量不要手写函数；

③   部分函数不能够复制粘贴，粘贴的函数公式可能会失效报错；

④   下拉框字段“出差类型”，是在左下角的变量中选取的表单字段，在此处，判断其等于某个选项值时，用“==”；

⑤   在函数中，“且”用“AND”，“或”用“OR”；

⑥   公式最后的“,0”，是指当日期或类型字段为空时，即用户出差信息没有填写完整，不满足上面四种条件分支时，此时补贴金额为0。

两个函数编辑完成后，最终的展示效果如下：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693630067474453&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)
