# 如何配置事后报销选事前带出事前数据

来源快照：`result_data_new_260518.json`

- 来源 ID：`1232302726744653870`
- 模块：电子费控
- 目录：场景示例 - 预算报销
- space ID：`1963167002611772846`
- 原文链接：未提供
- 产品基线：未提供

## 正文

# 场景一：带出事前费用数据(自动抵扣）

大部分场景，事后报销事前，都是使用自动抵扣，自动抵扣逻辑是：  
根据表单选择的维度成员组合、日期，去自动匹配所选的事前流程，匹配一致就进行冲抵，不一致就不冲抵；  
自动抵扣配置：事后报销流程，预算设置，打开事后报销开关，并打开按流程明细字段抵扣开关，对应主表的事前申请流程字段，后续模板的字段对应中，明细表的费用申请流程ID和费用申请流程明细ID不对应；

**方式一：动作流数据源查询组件带出**  
新建动作流，  
第一个组件：自定义事件触发，选择自定义触发；  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1232302795441651713&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=1232302795346567169&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=1232302799807741956&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=1232302791143874562&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=1232302795346567173&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)  
查询条件与查询字段，可参考方式二中的sql来操作，sql中的where 后面就是查询条件，select 后面就是查询字段；  
如下方截图参考  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1232302799658311688&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=1232302795441651715&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) 

数据集选择：上下文-数据源查询组件的预算占用表；  
分组字段：参考sql中的group by中的字段；  
求和：参考sql中select 后面sum部分的字段；  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1232302791096352771&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=1232302795336613889&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=1232302799807741954&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=1232302790998802434&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)  
  
动作流配置完毕之后，到流程的字段联动中去，配置字段联动。  
  
**方式二：通过****sql****带出**  
查询事前申请申请费用明细（金额取事前填写金额）：  
select dimen_mem1,dimen_mem2, reverse_date,reverse_amount from fexs_budget_reverse where delete_type=0 and request_id in (事前流程ID) and source_request_id in (事前流程ID)  
  
查询事前申请申请费用明细（金额取剩余未冲抵金额）：  
select request_id,dimen_mem1,dimen_mem2,reverse_date,sum(reverse_amount) from fexs_budget_reverse where delete_type=0 and request_id in (事前流程ID) group by request_id,dimen_mem1,dimen_mem2,reverse_date  
  
上述两种sql，查询条件不一样，在参考使用数据源查询组件的时候，注意不要搞混了，要带出什么样的数据，参考对应的sql。不要数据源查询参考第一个sql，后面又加数据汇总组件。第一个sql一般不使用汇总组件。  
  
 

 

 

 

 

# 场景二：带出事前费用数据(按明细行冲抵）

少部分场景，事后报销事前，会用到按明细行去冲抵逻辑：  
主表选择事前申请后，还要在明细行上再次选择事前申请，并且填写事前的明细行ID，那么这一行，就指定去冲抵事前流程的某一行冻结数据；不会冲抵其他行的数据。  
**场景** ：一般用于管控场景特别精细，比如事前两行一模一样的数据，但是走事后报销时，仅要冲抵其中某一行，多余的不再冲抵其他明细行，此时就不能按明细自动抵扣了，因为维度相同能匹配上事前，多余的也会冲抵其他行，因此就需要配置按明细行指定冲抵逻辑。  
**按明细行冲抵配置** ：事后报销流程，预算设置，打开事后报销开关，并打开按流程明细字段抵扣开关，对应主表的事前申请流程字段，后续模板的字段对应中，明细表的费用申请流程ID和费用申请流程明细ID也要对应；

 

方式一：动作流数据源查询组件带出

新建动作流，  
第一个组件：自定义事件触发，选择自定义触发；  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1232302795441651713&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=1232302795346567169&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=1232302799807741956&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=1232302791143874562&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=1232302795346567173&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)  
查询条件与查询字段，可参考方式二中的sql来操作，sql中的where 后面就是查询条件，select 后面就是查询字段；  
如下方截图参考，相比场景一，要多查询一个明细行ID；  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1232302799807741959&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=1232302795441651715&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) 

数据集选择：上下文-数据源查询组件的预算占用表；  
分组字段：参考sql中的group by中的字段；相比场景一，多加一个行ID的条件；  
求和：参考sql中select 后面sum部分的字段；  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1232302791096352771&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=1232302791143874560&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)  
最后，终止组件，配置输出数据。  
一般是输出到明细表，当事前申请是明细表的时候，事后一般也输出到明细表，只有当事前是主表时，事后才可能输出到主表，如果事后支持多选事前，那也要输出到明细表。  
动态赋值选择，上下文，上面组件返回的结果，  
列表赋值都是依据值下级。相比场景一，增加行ID输出；  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1232302799807741954&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=1232302791125532674&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)  
 

 

 

**方式二：通过****sql****带出**  
查询事前申请申请费用明细（金额取事前填写金额）：  
select dimen_mem1,dimen_mem2, reverse_date,data_id,reverse_amount from fexs_budget_reverse where delete_type=0 and request_id in (事前流程ID) and source_request_id in (事前流程ID)  
  
查询事前申请申请费用明细（金额取剩余未冲抵金额）：  
select request_id,dimen_mem1,dimen_mem2,reverse_date,data_id,sum(reverse_amount) from fexs_budget_reverse where delete_type=0 and request_id in (事前流程ID) group by request_id,data_id,dimen_mem1,dimen_mem2,reverse_date  
 

# 场景三：带出事前占用金额、已冲抵金额、剩余未冲抵金

查事前原冻结金额（占用金额）：

select request_id,dimen_mem1,dimen_mem2,reverse_date,sum(reverse_amount) from fexs_budget_reverse where delete_type=0 and request_id in (事前流程ID) and source_request_id in (事前流程ID) group by request_id,dimen_mem1,dimen_mem2,reverse_date  
查事前已冲抵金额：  
select request_id,dimen_mem1,dimen_mem2,reverse_date,sum(reverse_amount*-1) from fexs_budget_reverse where delete_type=0 and request_id in (事前流程ID)  and request_id !=source_request_id group by request_id,dimen_mem1,dimen_mem2,reverse_date

查事前剩余未冲抵金额：  
select request_id,dimen_mem1,dimen_mem2,reverse_date,sum(reverse_amount) from fexs_budget_reverse where delete_type=0 and request_id in (事前流程ID) group by request_id,dimen_mem1,dimen_mem2,reverse_date

  
  
字段联动配置方式，参考前面场景，也是数据源查询预算占用表；
