前几天在开发一个需求,要关联表单中选中明细行的某个字段A,在调用同一个明细行的数据集成展示控件时,显示其他表中字段B和A值相等的记录。
因为泛微E8的文档中,连流程关联字段怎么用都没讲。摸索半天,结论如下:
- ”查询SQL“中,必须明确 select 出 “主键" 对应的字段、以及最好 select 出 ”字段设置“ 中需要显示的字段。
- ”查询SQL“中,需要在 where 条件中赋值给 $明细表数据库表名_明细表数据库字段名$ 或者$主表数据库字段名$ 这样格式的字段。而且 where 条件赋值应该有一对 ' ' 包围起来。
- 完成前面 2 项操作,在 “字段设置” 中填写需要显示的字段后,该字段的 “流程联动字段名称” 应该填写第 2 步中的 $明细表数据库表名_明细表数据库字段名$ 或者$主表数据库字段名$ 。
- 各部分配置如图:
- “查询SQL”示例为:
select dt1.id, dt1.WLBM_MX, dt1.XQCPMS_MX from formtable_main_1025_dt1 dt1 left join formtable_main_1025 m on m.id = dt1.mainid where dt1.wlbm_mx is not null and dt1.WLBM_MX = '$formtable_main_829_dt1_MX_WLBM$'
上面的 SQL 语句中,对应流程界面的明细表是 formtable_main_829_dt1 ,该明细表中带入数据展示的字段是 MX_WLBM 。该字段对应下面截图的 “编码字段” 字段。最终效果如图:
后续使用中发现了一个问题,就是查询 SQL 中不论配置哪个字段作为 “标题栏”显示在单元格中,实际对应单元格中 input 对应的值都是查询 SQL 中的 “主键” 的值。坑爹啊坑爹啊,来个有水平的讲讲,是怎么回事?
解决了第一个字段的传入之后,如果我们不需要数据集成展示的弹窗输入某些字段、而只是直接带出多个条件下的结果,可以尝试下面的另一种写法。
select m.LSH, dt1.id, dt1.WLBM_MX, dt1.XQCPMS_MX, m.SJH
from formtable_main_1025_dt1 dt1
left join formtable_main_1025 m
on m.id = dt1.mainid
where dt1.wlbm_mx is not null
and dt1.WLBM_MX = '$formtable_main_829_dt1_MX1_WLBM$' and m.SJH = '$GCBBH$'
这里的 SJH 字段直接取当前表单中的 GCBBH 字段,所以没有写前缀的所属表名。配置数据展现集成时,此处不需要配置对应字段的 “流程联动字段”。前端页面对照结果如下:
数据展现集成的字段配置如下:
点击之后,就呈现这样的效果了。注意配置为"标题栏"的字段只能有一个,就是选中后显示在表单界面的单元格中的字段、而配置为"查询字段"的字段可以不止一个:
如果遇到数据展现集成抽风、忽然不显示字段、后台 sql 有结果但界面无结果的,考虑重启一下服务器和清理后端缓存。
哎,就是,非常不好用。。
(完)