# 如何对一条数据中的多个明细表数据进行筛选计算

来源快照：`result_data_new_260518.json`

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

## 正文

1.

**编写目的**

在日常的采购行为中，通常会使用多张明细表来进行物资详情的统计，而这几张明细表也分工明确，各自有着各自的作用。例如一张表用来记录采购需求，一张表记录付款内容，一张表记录暂未付款的内容等等。同时，这几张明细表之间还有着相关联的信息，我们需要在多张明细表间筛选出有差异的数据并进行运算，而函数联动难以做到跨明细表运算，此时便可以使用动作流来实现。

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

**核心思路**

通过「合并数据」和「筛选数据」两个组件对原始数据进行分组分类处理，利用「生成JSON」组件执行运算逻辑，最终将运算结果回写至目标明细表，从而实现两张明细表差额的全自动化计算。

 

3.

**操作步骤**

**3.1****表单准备**

为实现如上场景，需要提前准备一张拥有多张明细表的表单，分别为「采购物资信息」、「本次付款物资明细」和「暂未付款物资明细」。  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1256711326384734210&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=1256711322094845954&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.2****数据处理**

实际需求是在多张明细表间进行数据的校验，希望自动筛选出未付款的物资和未完全付款的物资，并将其写入「暂未付款物资明细」中。可以明确的是，在写入前要做的是将数据筛选出来，此处便可以使用数据筛选组件来进行操作。  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1256711322106077186&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=1256711322106077192&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)  
 

已经找到数据，下一步便是要将其写入表单中，不过这里筛选出的数据是原始数据，并不是可以直接更新到「暂未付款物资明细」中的数据，还需要再进行一次运算处理。这种场景下，就可以使用「生成JSON组件」，来进行一些简单的运算，把「筛选数据」组件所筛选出的数据，加工为适合更新到表单上的数据。  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1256711322106077195&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****写入表单**

所需要的数据已经通过「筛选数据」组件和「生成JSON」组件处理完成，至于最后一步，将其更新到表单中，只需要通过「更新表单数据」组件，即可将处理好的数据更新到对应明细表中。由于所需要更新的数据有两批，所以在这里需要两个「更新表单数据」组件，一个用来更新未完全付款的物资信息，一个用来更新暂未付款的物资信息。  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1256711322106077190&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)  
  
通过如上操作，即可实现多明细表数据筛选并跨明细表计算。
