多个子表单上下合并(不汇总)
1. 简介
1.1 案例简介
本文将介绍,如何多个子表单内容,按照顺序合并(不汇总)至另一个子表单中,实现多个子表单的上下拼接。
1.2 应用场景
在销售业绩上报场景中,当主管发起业绩上报流程后,各销售组长将会收到流程待办,在各自的子表单内填入所属销售组的业绩后,各组的业绩明细便可汇总至「当日业绩汇总」子表单供主管审核,并便于后续的数据分析。
1.3 预期效果
1)主管发起业绩上报流程后,销售一组、二组组长会同时收到流程待办(为便于效果演示,此处一组、二组组长均为 Lucy)。如下图所示:
2)各组长仅可在所属子表单内录入业绩数据,如销售一组组长仅能填写「销售一组业绩明细」子表单:
3)各组业绩数据上报完成后,流程将流转至「主管审核节点」,主管可在「当日业绩汇总」子表单内查看合并后的所有业绩数据。
注:由于安装模板时限制单个表单数据最多为 100 条,故安装模板时,需要重新按照【3.1 节中「子表单基础表」录入数据】的步骤录入数据,否则将无法实现预期效果。
2. 设计思路
1)「多个子表单上下合并」实现思路
新建「销售业绩上报」流程表单,主要包括 3 个子表单:销售一组业绩明细、销售二组业绩明细、当日业绩汇总。其中,需要进行如下设置,实现子表单内容的拼接:
- 在需要汇总的多个子表单中,分别汇总出各行的「产品+数量+金额」至「合并字段」中;
- 在主表中,用 “,” 字符将所有的「合并字段」连接成一个字符串,便于后续计算数量;
- 在主表中,通过计算「合并字段集合」中 “,” 字符的数量,计算出汇总后子表单的行数;
- 通过字符串分割「合并字段集合」,将数据分别填充至汇总表的各行子表单中。
2)「销售业绩上报流程」实现思路
对「销售业绩上报」表单进行流程设定,使得在主管发起流程后,各销售组长能同时收到待办,并上报各自的业绩,具体如下:
- 销售一组上报节点:仅对销售一组组长开放「销售一组业绩明细」子表单的编辑权限;
- 销售二组上报节点:仅对销售二组组长开放「销售二组业绩明细」子表单的编辑权限;
- 主管审核节点:开放「当日业绩汇总」子表单的可见权限,将汇总后的业绩交由主管审核。
3. 设置步骤
3.1 表单搭建
在学习之前建议安装 多个子表单上下合并 应用模板,本文将按照模板中的示例数据进行讲解。
本案例需要调用 2 张表单数据,分别是:
1)销售业绩上报
在「销售业绩上报」表单中,主要包括如下 3 个子表单:
在该表单的流程设定中,设有「销售一组上报」、「销售二组上报」以及「主管审核」环节,以便各组组长能够同时收到待办,并提交各自的业绩数据至主管处审核。不同节点的负责人和字段权限配置可在右侧进行查看:
注:其余流程节点的字段权限等设置,可参见 多个子表单上下合并 应用模板。
2)子表单基础表
新建「子表单基础表」辅助表单,字段设置如下:
字段名称 | 字段类型 |
总行数 | 数字 |
子表单 | 子表单 |
序号 | 子字段-数字 |
数字 | 子字段-数字 |
在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx。
导入数据时需确认示例数据和表单字段的关联关系如下:
3.2 设置数据联动
1)进入「销售业绩上报」表单,选中「当日业绩汇总」整个子表单,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:
2)进入数据联动设置页面,设置内容如下:
- 联动表单:「子表单基础表」;
- 条件设置为:「数字」等于「子表单总行数」;
- 触发以下联动:
- 「当日业绩汇总」字段显示「子表单」字段的值;
- 添加「序号」子字段,显示为「序号」子字段的值;
全部设置完成点击「确定」。
3.3 设置公式
1)选中「销售一组业绩上报.合并字段」,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:
2)在公式编辑页面,设置「销售一组业绩明细.合并字段」的公式为:CONCATENATE(销售一组业绩明细.产品名称,'+',销售一组业绩明细.数量,'+',销售一组业绩明细.金额),表示将每行子表单的产品名称、数量和金额通过 CONCATENATE 函数连接起来。
设置完成后,需点击「确定」保存。
3)按照同样的方法,设置其他字段的公式如下:
字段名称 | 公式 | 公式含义 |
销售二组业绩明细.合并字段 | CONCATENATE(销售二组业绩明细.产品名称,'+',销售二组业绩明细.数量,'+',销售二组业绩明细.金额) | 将每行子表单的产品名称、数量、金额和“+”字符串通过 CONCATENATE 函数连接起来 |
合并字段集合 | CONCATENATE(TEXT(销售一组业绩明细.合并字段),',',TEXT(销售二组业绩明细.合并字段)) | 用 “,” 字符将所有的「合并字段」连接成一个字符串 |
子表单总行数 | COUNT(SPLIT(合并字段集合,',')) | 在主表中,计算出「合并字段集合」中 “,” 字符的数量,作为汇总后子表单的行数 |
当日业绩汇总.产品名称 | SPLIT(TEXT((SPLIT(合并字段集合,',')[当日业绩汇总.序号-1])),'+')[0] | 先通过逗号分割「合并字段集合」字符串,根据子表单序号取出对应行数的产品名称+数量+金额,再通过”+“分割出产品名称、数量、金额,其中的第一个即为产品名称 |
当日业绩汇总.数量 | SPLIT(TEXT((SPLIT(合并字段集合,',')[当日业绩汇总.序号-1])),'+')[1] | 同上,取其中第二个即为数量 |
当日业绩汇总.金额 | SPLIT(TEXT((SPLIT(合并字段集合,',')[当日业绩汇总.序号-1])),'+')[2] | 同上,取其中第二个即为金额 |
3.4 设置字段显隐规则
在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:
3.5 效果演示
效果演示参见本文【1.3 预期效果】。