1. 从“显示模板”到“数据大脑”:理解字段属性的核心价值
如果你用过泛微OA的流程表单,肯定遇到过这样的场景:一个采购申请单,当你选择了“办公用品”这个采购类别,下面的“物料明细”表格里应该只出现笔、本子、文件夹这些选项,而不是“生产设备”里的机床零件。这个看似简单的“联动”效果,在早期可能需要写一堆复杂的JavaScript,或者在后端写触发器。但在泛微里,有一个被很多技术人员低估的“神器”——流程表单的字段属性功能,尤其是它内置的SQL操作能力。
这东西藏在哪呢?我刚开始找的时候也费了点劲。它的路径是:后端管理 -> 流程引擎 -> 路径管理 -> 选中具体路径 -> 流程设置 -> 流转设置 -> 表单内容 -> 显示模板 -> 字段属性。点开某个字段的属性,你会看到一个可以输入SQL语句的文本框。别看它位置深,功能却相当强悍。简单来说,它就像给表单字段装了一个“数据大脑”,能让字段根据其他字段的值,实时地从数据库里抓取数据、进行逻辑判断甚至数学计算,然后自动填充或改变自己。
我把它理解为一种“声明式”的逻辑配置。你不用关心“什么时候触发”(表单值变化时系统自动处理),你只需要告诉系统“如果满足什么条件,应该显示什么”。这比写脚本要稳定和高效得多。而且有个很重要的点:你只需要在PC端的“显示模板”里配置这些SQL逻辑,移动端的模板会自动同步生效,不需要重复配置。这一点在实际部署中能省下不少维护的功夫。
那么,这个“数据大脑”具体能干什么呢?主要三件事:第一,从数据库读取数据,也就是doFieldSQL操作;第二,给字段赋值,实现字段间的联动;第三,对时间字段进行加减计算,比如自动计算工期、截止日期等。接下来,我就结合我这几年踩过的坑和总结的经验,带你深入这个功能,看看怎么用SQL语句玩转这些高级操作。
2. 基石:掌握doFieldSQL的语法与核心原理
想要用好字段属性,必须先把doFieldSQL这个核心函数吃透。它和你在数据库客户端里写的标准SQL很像,但又有一些关键的不同,这些不同点正是新手最容易栽跟头的地方。
首先,它运行在泛微OA的应用服务器环境里。这意味着你可以直接查询泛微内置的业务表,比如systemset、HrmResource(人力资源表)、cptcapital(资产表)等等,而不需要配置额外的数据库链接。这是它最大的便利性。但同时也意味着,你写的SQL必须符合泛微应用层对SQL的解析规则。
第一个关键语法:如何引用其他字段的值。 这是所有联动逻辑的起点。在字段属性的SQL框里,你不能直接用字段名,而必须使用字段的ID,并且要用特定的格式包裹起来。格式是:$‘字段ID’$。注意,这里的单引号有时在网页显示时会被转义,你可能看到的是$'字段ID'$,其核心是$符号包裹着字段ID。例如,你有一个文本框,它的ID是781178117811,你想在另一个字段的SQL里引用这个文本框的值,就需要写成 $‘781178117811’$。这个ID你需要从表单的“字段ID”属性里去复制,千万别自己猜。

4356

被折叠的 条评论
为什么被折叠?



