BOS选单关系中如何反写未下推数量
BOS选单关系中可以通过配置勾稽来反写已下推数量,这个也是比较常用的关系,但是不能配置其他字段反写,
如何在序时簿里直观的看出未下推数量?本文介绍不写触发器,不写插件代码实现未下推数量自动反写。
举例:上游单据为200000068
注意:先在单据中为【数量】配置值更新事件未下推数量=数量-已下推数量,保证单据初始化的时候数据是准确的。
下游单据
选单关系如下配置:
勾稽的方式下推,这样配置完之后,下游单据保存后可以反写上游单据的【已下推数量】,但是不能反写未下推数量;
在bos设计器打开下游单据的属性窗口
点击保存后事件-新增事件,
再变量名处填写 subId,对应字段选择【单据头.内码】,点击添加
然后再【sql语句】中填写Exec P_WriteBack0068 @subID@
确定后关闭界面,然后点击主界面【保存】按钮以更新bos的更改使事件生效。
打开SQLServer 编写脚本并执行以创建存储过程P_WriteBack0068(这个名称根据需要自己自己定义,单需要和事件中的名称保持一致。)
create proc P_WriteBack0068
@SubID as int
as
begin
update a
set a.FDecimal2 = a.fdecimal - a.fdecimal1
from t_BOS200000068entry2 as a
inner join t_BOS200000069entry2 b on a.FID = b.fid_src and a.fentryid = b.fentryid_src
where b.FID = @SubID
end
Go
t_BOS200000068entry2 是上游单据的表体物理表
t_BOS200000069entry2 是下游单据的表体物理表
a.FDecimal2 = a.fdecimal - a.fdecimal1指使未下推数量=数量-下推数量
(通过模板表确定字段再物理表里的列名)
下游单据保存后事件配置完毕;还需要配置下游单据删除时的反写(必须),以保证数据完整性;
同样的操作,再下游单据的属性里找到【删除前事件】(注意,必须是删除前事件)
编写存储过程P_WriteBack0068_delete如下:
create proc P_WriteBack0068_delete
@SubID as int
as
begin
update a
set a.FDecimal2 = a.FDecimal2 + b.FDecimal
from t_BOS200000068entry2 as a
inner join t_BOS200000069entry2 b on a.FID = b.fid_src and a.fentryid = b.fentryid_src
where b.FID = @SubID
end
Go
注意它和P_WriteBack0068的区别(这里计算公式是【未下推数量】=【未下推数量】+下游单据的【执行数量】)
完。
很细,值得收藏
老师辛苦了,讲解很清楚,学习了
BOS选单关系中如何反写未下推数量
本文2024-09-16 16:25:27发表“k3wise知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3wise-9140.html