9.2.5 值变化事件

填表公式事件:值变化事件

1. 触发时机

填表公式的“值变化”事件是在客户端(云表浏览器)中触发的,数据项的值发生改变时触发。无论是通过手动修改数据项的值,还是通过填表公式的赋值操作更新了数据项的值,都会触发该事件。
“值变化”事件是一个事件群,使用时需要添加具体的数据项,可添加一个数据项或者多个数据项。添加一个数据项时,是指该数据项的值发生变化的时触发(如下图 本表单.合计金额 的值变化事件);当选择2个及以上的数据项,则是指添加的这些数据项中任何一个数据项的值发生变化时触发(如下图 本表单.明细.数量 和 本表单.明细.单价);

2.使用方法

在模板设计界面,单击【填表公式】,弹出“填表公式管理”对话框,在“表单”的填表公式中选择“值变化”事件,然后在对话框底部单击【添加数据项】,弹出“数据项选择”对话框,选择具体的数据项,可选择本表单的数据项(若模板中有明细时,可选择明细的数据项)
在“值变化”事件下添加具体的数据项后,设置如下图,默认选中该值变化事件,在对话框底部单击【添加公式】即可设置值变化事件触发后需要执行的操作。

3.不触发值改变

不触发值改变,是指数据项本次被赋值后,不触发该数据项的值变化事件。
如下图,通过赋值公式给某个数据项A赋值后,在同一个模板的填表公式中,又设置了数据项A的值变化事件赋值B,但是又不想执行赋值B操作,此时可通过在赋值A操作中,设置“不触发值改变”,达到效果;但是手动修改数据项A的值时,同样触发数据项A的值变化事件;或者有填表公式C给数据项A赋值没有勾选“不触发值变化”,运行公式C时同时触发数据项A的值变化事件。

4.示例

4.1 赋值

当“来源单号”被清空时,给来源类型赋值“无来源”,此时需要在“来源单号”的值变化事件下添加赋值来源类型的操作。
实现如下
在模板设计界面,单击【填表公式】,打开“填表公式管理”对话框,选中“值变化”事件,在对话框底部单击【添加数据项】,弹出“数据项选择”对话框,选择“来源单号”
选中“来源单号”的值变化事件,在对话框底部单击【添加公式】,选择“赋值”操作;
将操作重命名为“赋值_来源单号清空时同步清空来源类型”,执行条件为 来源单号=“”,给来源类型赋值“无来源”,当来源单号被清空即赋值来源类型无来源。

4.2 校验

填写“采购入库单”时,明细数量不能超过“最大入库数量”;
实现如下
①添加“数量”的值变化事件。在模板设计界面,单击【填表公式】按钮,打开“填表公式管理”对话框,选中“值变化”事件,在对话框底部单击【添加数据项】,弹出“数据项选择”对话框,选择“明细”数据表中的“数量”数据项,确定;
②在该事件下添加“提示框操作”。选中“本表单.明细.数量”值变化事件,在对话框底部单击【添加公式】,弹出“请选择操作”对话框,选择“提示框”操作,确定;
③设置提示框操作。修改公式名称为“提示框_校验数量”,填写执行条件,当数量大于最大入库数量时弹出提示框,填写提示文本;

4.3 不触发值变化

“生产任务”派工时,选择需要派工的员工后,若该员工的计价方式为“混合”,则需要赋值“工序的最优计价方式”
实现如下:派工时,选择需要派工的员工后,先将员工的计价方式填写到明细的计价方式上,触发了明细的计价方式值变化事件,在该事件下重新给计价方式赋值。
在“值变化事件”下添加数据项“计价方式”,并该数据项的值变化事件下,添加赋值公式“赋值_工序优先计价方式”,当所操作明细的计价方式=“混合”时,根据数据源-模板数据接口,从《工序》模板中查找该工序最优的计价方式后,将数据源的计价方式更新到明细表,此时给计价方式赋值了,为了避免死循环,勾选“不触发值改变”。

4.3 填写表单综合应用

《采购入库单》有2种填写方式:选择采购订单根据采购订单填写、直接填写采购入库单。《采购订单》和《采购入库单》的模板样式如下:
采购订单
采购入库单
实现思路如下:单击“来源单号”数据项的单元格时,弹出“未完成入库的采购订单列表”,选择一个“采购单”并采购单的信息填写到“采购入库单”。当“来源单号”变更为空时,则给来源类型赋值“无来源”,从所有供应商列表中选择填写供应商信息,从所有可用商品列表中选择填写商品明细;当“来源单号”有值并且来源类型赋值=“采购订单”时,根据“单号”查询采购单未完成入库的的采购明细,填写到“采购入库单”。
①单击“来源单号”数据项的单元格时,弹出“未完成入库的采购订单列表”,选择一个“采购单”并将“采购订单”的基本信息填写到“采购入库单”。
设置“来源单号”的单元格按钮单击事件。先给“来源单号”的单元格类型设置为“组合按钮”,然后单击【填表公式】,打开“填表公式管理”对话框,选择“单元格按钮单击”事件,在对话框底部,单击【添加数据项】,选择“来源单号”数据项( 单元格按钮单击事件设置);
选中该事件,单击【添加公式】,选择“赋值”公式,将公式重名为“赋值_选择未入库完成采购订单”;
设置执行条件,只有当“采购入库单”未审核前才可操作;
设置数据源,模板数据接口,《采购订单》模板下的“入库来源选择_未完成入库订单列表”,数据源需要弹出对话框给用户选择,勾选“显示对话框”;
设计数据接口“入库来源选择_未完成入库订单列表”,采购订单的数据在《采购订单》模板中,该数据接口应该在《采购订单》模板设计,数据源为“本模板.明细”,数据列设置为模板的采购订单的基本数据项,过滤条件设置如下,(采购订单中设置了位置信息为空的数据项-入库数量),当采购订单已审核,并且 入库数量< 采购数量,则说明该采购订单未完成入库,由于数据源为明细,而数据列中显示采购订单的基本数据项,查询的结果将出现重复,勾选“重复数据只显示一次”;
入库来源选择_未完成入库订单列表数据接口
填写填写采购单信息,将数据源的信息赋值目标数据项,单击“赋值表达式”填写;
②当“来源单号”有值并且来源类型赋值=“采购订单”时,将“采购订单”的明细信息填写到“采购入库单”的明细;
在“来源单号”的值变化事件下,添加赋值公式,选中“来源单号”的值变化事件,单击【添加公式】,选择“赋值”公式,并重名为“赋值_插入未完成入库采购明细”;
设置执行条件,当来源单号不为空且来源类型为“采购订单”时才执行;
设置数据源,调用模板数据接口,采购订单下的“查询未完成入库明细(采购单号)”,当来源单号被赋值时直接插入明细,不弹出对话框,去掉“显示对话框”;
设计数据接口“查询未完成入库明细(采购单号)”,数据由《采购订单》模板提供,应该在《采购订单》模板中设计该接口,数据源使用本模板的明细,数据列显示明细的数据,过滤条件的设置如下,添加参数“采购单号”,筛选该采购单号下的,入库数量< 采购数量的明细;
设置目标表,商品在明细中,目标表设置为明细;
设置操作,对明细执行“插入操作”,选择“插入操作”后显示“插入前删除所有的行(列)”,切换采购订单时,需要先删除已有的明细,再插入新采购订单的商品明细,勾选该选项;
设置赋值,将数据源的数据项赋值给明细对应的目标数据项;
③当“来源单号”为空时,给来源类型赋值“无来源”,供应商可从所有供应商列表中选择,商品可从可用商品列表中选择。
给来源类型赋值“无来源”,在“来源单号”的值变化事件下添加赋值“无来源”的公式;
选中“值变化”事件,单击【添加数据项】,选择“来源单号”数据项,选中“来源单号”的值变化事件,单击【添加公式】,选择“赋值”公式,将公式重命名为“赋值_来源单号清空同步清空来源类型”,填写执行条件,当来源单号=“”时才执行,给目标表“本表单”的“来源类型”赋值“无来源”;
当来源单号为空时,供应商可从所有的供应商列表中选择。
设置“供应商”单元格按钮单击事件( 单元格按钮单击事件),选中该事件,单击【添加公式】,选择“赋值”公式;
设置执行条件,当“来源单号”=“”才执行。
设置数据源,供应商可从“所有供应商列表”选择(设计数据接口“供应商信息.全局选择_所有供应商列表”),数据源以对话框的方式显示,勾选“显示对话框”;
赋值,将数据源的供应商信息赋值给“本表单”的供应商目标数据项;
当来源单号为空时,商品可从所有的可用商品列表中选择。
设置“商品编号”单元格按钮单击事件( 单元格按钮单击事件),选中该事件,单击【添加公式】,选择“赋值”公式;
设置执行条件,当“来源单号”=“”才执行。
设置数据源,商品可从“所有可用商品列表”选择(设计数据接口“商品信息.全局选择_可用商品列表”),数据源以对话框的方式显示,勾选“显示对话框”,可多选,勾选“可多选”;
设置目标表,商品在明细中,目标表选择“明细”;
设置操作,执行“更新操作”,针对已有的明细更新,当明细中没有则新增,因此需要填写“匹配条件”-明细商品编号与数据源的商品编号相同的记录,填写匹配条件后,显示“不存在时新增一行”,勾选该选项;
赋值,将数据源的商品信息赋值给“明细”的商品目标数据项;
2022-08-16
4342
Baidu
map