# 字段联动实现根据主表日期区间生成每天的明细行数据

来源快照：`result_data_new_260518.json`

- 来源 ID：`1248983280073244679`
- 模块：低代码平台e-builder
- 目录：动作流 - 场景搭建
- space ID：`1157961794811633670`
- 原文链接：未提供
- 产品基线：未提供

## 正文

# 一、编写目的

在后勤管理中，外部人员来公司参加培训时接待人员可提交访客用餐流程申请指定数量的食堂餐券给客户，流程填报时选择客户访问日期区间和人数，系统自动根据日期范围生成对应的明细数据，申请人完善每日用餐人数等信息即可快速提交申请。

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248983370315825156&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=1248983366076678148&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=1248983374556569601&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)

 

# 三、操作步骤

## 1.设计表单

主表添加日期区间和用餐人数字段，明细表添加日期、用餐人数、用餐类型（复选框，默认全选），餐券数量。

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248983366176874498&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=1248983370354868227&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=1248983366176874501&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=1248983366076678154&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=1248983374556569604&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(2026-02-01,2026-02-05,天数)会返回4天，但是我们实际期望的5条明细，需要在DATEDIFF函数外套一层加法函数+1：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248983374675001345&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)

明细表的日期字段从日期区间开始日期随着生成数据的行号依次递增，赋值方式选择动态赋值，日期类型增加天数用DATEADD()函数，增加天数选择设置赋值字段组件的行号，行号为系统参数，当依据值为数组时内容为[0,数组长度]的整数，当依据值为数字时内容为[0,数字]的整数。

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248983366142795787&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个全选，餐券数量默认赋值为用餐人数*3：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248983370220183554&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=1248983370315825153&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=1248983361688444935&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)
