用本表单更改其它表单信息

前面我们学习了填表公式,它在客户端运行,用于响应用户交互动作,让填表变得更智能,当表单填写完成后要实现业务操作,比如《入库单》完成入库后,谁来更新《商品库存》中商品的库存数量,库存金额呢?

1.什么是业务公式

  什么是业务公式呢?顾名思义是用来处理业务,执行业务逻辑。所有的业务逻辑,都可以换成数据处理的逻辑来描述,简单来说就是更新或者新建表单
  它在服务器端执行,根据客户端(云表浏览器)提交过来的表单请求,在执行这些请求的基础上,并进行一系列对服务器端数据表的操作。它用于本表业务发生后对其他业务或者自身业务的影响。比如:《入库单》审核时通过业务公式更新库存表的存货数量,同时自动创建一张《应付款单》;WMS系统中,货品上架时扫描货位条码和物料条码之后,通过业务公式自动关联物料和货位,更新货位上物料的数量;质检时,收货之后,根据物料和质检标准自动创建《质检单》;生产管理系统中,《销售订单》经财务审核后,利用业务公式自动计算BOM,并生成《物料需求单》等等...这些都属于业务处理,都可以使用业务公式来实现。
  业务公式在哪里呢?在模板的公式设置区“填表公式”的后面。
  业务公式与填表公式一样,它也是由事件+操作组成。由事件触发,执行对目标模板的操作。
  业务公式有2种事件:状态改变事件和保存表单后事件。

2.如何使用业务公式

  “业务公式”是用于本表单业务发生后对其他业务或者自身业务的影响,它由事件+操作组成,根据触发的事件执行对应的操作,执行操作前需要先选择执行操作的目标模板,这个模板可以是其他模板也可以是本模板自身。
因此使用业务公式有3个步骤:
第一步选择触发的事件,由什么事件触发;
第二步选择目标模板,本表单业务发生后受业务影响的目标模板;
第三步设置公式,详细针对目标模板的业务影响。
我们以“入库单”入库时,自动更新“商品库存”的库存数量和库存金额为例来讲解,“入库单”入库时自动增加“商品库存”中对应仓库商品的库存数量和金额,“入库单”取消入库时,自动减少“商品库存”中对应仓库商品的库存数量。
 先看第一步选择触发的事件, 业务公式的事件有2个:状态改变事件和保存表单后事件(本节重点学习“状态改变事件”)。

2.1设置状态改变事件

“状态改变事件”是指表单的状态发生改变,比如《入库单》由“未入库”变更为“已入库”,由“未审核”变更为“审核”...等等,在计算机中,入库状态数据项的值=true的时候表示已入库,入库状态数据项的值=false的时候表示未审核;
“状态改变事件”是一个状态按钮事件,需要添加具体的状态数据项,该数据项的类型为是否类型,单击【状态按钮】时触发事件,通过状态按钮数据项的值表示表单所处的状态。
【状态按钮】有专属的设置,它通过公式设置区的“状态设置”设置,有2部分组成:数据项和标题。为了用户操作方便,按钮的标题会根据状态数据项的值显示成不同的名称,它分为确定按钮标题和取消按钮标题,比如下图,单击“确定按钮标题”后状态数据项的值变更为“常量.是”,单击“取消按钮标题”后状态数据项的值为“常量.否”。
给《入库单》设置“入库”状态按钮,单击【确认入库】按钮时执行入库操作,单击【取消入库】按钮时,撤回入库操作。
在《入库单》设计界面的“公式设置区”数据表管理的后面找到“状态设置”,单击打开“表单状态设置”对话框,添加数据项“入库”,将确认按钮标题设置为“【确认入库】”,取消按钮标题设置为“【取消入库】”,移动光标完成填写,单击【确定】保存设置;
 保存模板后,在《入库单》总表可见显示“确定入库”状态按钮,选中一个入库单,“入库”状态数据项的是为“常量.否”,代表未入库,在总表单击【确认入库】,“入库”状态数据项的值变更为“常量.是”,代表已完成入库,同时状态按钮标题显示为【取消入库】;再单击【取消入库】时,“入库”状态数据项的值变更为“常量.否”,代表未入库,同时状态按钮标题为【确定入库】。此时由于还未设置业务公式,单击状态按钮后不会执行任何业务操作。

2.2 选择目标模板

再执行第二步选择目标模板,本表单业务发生后受业务影响的目标模板。
在《入库单》入库时事件为入库状态改变事件,入库后自动更新《商品库存》的库存数量和库存金额,受业务影响的目标模板为《商品库存》,在《入库单》的设计界面,打开业务公式,找到“入库”的状态改变事件,单击【添加公式】
弹出“请选择目标模板”对话框,选择目标模板《商品库存》
进入“新建业务数据处理公式”对话框

2.3设置公式

第三步设置公式,详细针对目标模板的业务影响。
具体的业务影响要怎么写呢?《商品库存》在“库存管理”文件下,它用于记录不同仓库不同商品的的库存信息,同一个仓库可以有不同的商品,比如仓库A中可存放云表PDA,也可以存放高拍仪,不同的仓库可以存放同一个商品 ,比如“高拍仪”可存放在“仓库A”中,也可存放在“仓库B”中,因此不同的仓库不同的商品在《商品库存》中只有一条记录,在《商品库存》中唯一标识为“仓库编号”和“商品编号”2个数据项,联合唯一。
“入库单”入库时,需要将入库单中的商品更新到“商品库存”,如果“商品库存”中已有该该商品的库存记录时,增加商品的“库存数量”,如果“商品库存”中没有该商品的库存记录时,需要增加一条新的“商品库存”记录。取消入库时,扣减商品库存中对应的库存的“库存数量”。
《商品库存》总表
  ①先完成“入库单”入库时更新“商品库存”的操作。
设置数据源,商品在入库单的明细记录中,入库单的每条商品记录都需要更新到“商品库存”,以确保数据的正确性,数据源选择 本表单.明细 。
给情况重命名,在“情况1”上右键,选择“重命名”更改为“确认入库”。
设置执行条件,入库时,执行条件为“本表单.入库=常量.是”,这样是方便有有种情况时,只执行满足执行条件的情况,对“商品库存”执行“更新表单操作”;
更新哪张“商品库存”表呢?设置匹配条件。业务公式中更新操作必须填写匹配条件,通过仓库和商品唯一找到这些符合条件的“商品库存”,在《商品库存》中根据“仓库编号”和“商品编号”可以唯一找到这条记录,利用“仓库编号”与“商品编号”做匹配条件,这2个匹配条件需要同时满足,因此匹配条件为“商品库存.仓库编号=本表单.仓库编号 并且 商品库存.商品编号=本表单.明细.商品编号 ”,这里的本表单是指“入库单”本身;
赋值目标数据项。找到《商品库存》中符合条件的记录后更新它的“库存数量”、“库存金额”,给“商品库存.库存数量”赋值原有的数量(商品库存.数量)+新增的数量(本表单.明细.数量),给“商品库存.库存金额”赋值原有的金额(商品库存.金额)+新增的金额(本表单.明细.金额);
  是不是一定能找到匹配条件的记录呢 ?不一定,比如系统刚开始使用,或者采购了新品时,《商品库存》中没有这个商品的库存记录,此时需要在《商品库存》中添加一条新的记录,勾选“不存在时新增一条记录”,新增时给目标模板“商品库存”的“仓库编号”、“仓库名称”、“商品编号”、“商品名称”、“库存单位”赋值,这些数据项只在新增的时候才赋值,勾选“新增时才赋值”,完成入库时更新《商品库存》的业务操作。
  设置好公式后,给公式命名“更新商品库存”,保存业务公式和模板。新建并填写一个“入库单”,单击“确认入库”执行入库操作,
  回到《商品库存》的总表,单击【刷新】(由于业务公式是在服务器上运行,如果商品库存总表已打开,需要从服务器将最新的数据同步显示到浏览器上),显示最新的数据,自动新增2条记录,当商品库存中没有记录新增记录,再新建并填写一个“入库单”,该入库单中包含《商品库存》中已有仓库的商品,单击“确认入库”执行入库操作,《商品库存》中已有的“商品库存”记录更新记录库存数量。
  ②接下来再完成入库单取消入库时针对“商品库存”的操作。在“入库单”设计界面的在业务公式,找到“入库”状态改变事件下的公式“更新商品库存”,双击打开进入公式。
  在情况“确认入库”上右键,选择“复制”,然后在新的情况窗口右键,选择粘贴,给新情况重命名为“取消入库”,复制的公式需要从上向下逐一检查。
取消入库时执行条件为“本表单.入库=常量.否”;匹配条件不变;取消入库时只会扣减“商品库存”,不会出现新增商品库存记录的情况,去掉“不存在时新增一条记录”;给目标模板商品库存的数据项赋值,取消入库时会扣减商品库存中对应的库存数量和库存金额,并清空新增时赋值数据项的值,选中“ 仓库编号”单击【×】按钮清空、依次清空商品库存的“仓库名称”、“商品编号”、“商品名称”、“库存单位”赋值表达式的值。
  在已完成入库的“入库单”上单击【取消入库】,确定后回到《商品库存》,刷新总表数据,《商品库存》中对应记录的“库存数量”和“库存金额”都扣减。
2022-10-10
47 40