用友U8导入工具
搜索
查看: 83|回复: 10

U8触发器有什么注意事项?

[复制链接]
 楼主| 发表于 2022-9-16 00:24:40 | 显示全部楼层 |阅读模式
扫码关注微信公众号

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

x
在库存单据上做了触发器,从项目档案更新一个表头自定义项值,验证效果正常。

但是存货核算,正常单据记账报错,把触发器禁用了,正常单据记账就正常了。
请问需要怎么做触发器,才能不影响系统的功能,U8的触发器有哪些需要注意的事项。
附件是2个单据的触发器脚本,都是实现类似的功能。

其他出库单根据项目编码自动更新项目目录的字段.zip

586 Bytes, 下载次数: 0, 下载积分: 金币 -5

销售出库单根据项目编码自动更新项目目录的字段.zip

586 Bytes, 下载次数: 0, 下载积分: 金币 -5

金币

快速加金币

下载提示积分金币不足,非特定用户等

无法下载,可充值金币

 楼主| 发表于 2022-9-16 00:27:17 | 显示全部楼层
附件下载好像要积分,我把代码贴出来:

CREATE TRIGGER  qtckd_update_fitemss05
   ON RdRecord09 --其他出库单主表
   FOR INSERT,UPDATE
AS
BEGIN
        if (select cDefine11 from RdRecord09 where  cCode=(select cCode from inserted) ) is null  --如果销售流水号为空
       
          begin
                update RdRecord09 set cDefine13=NULL,cDefine3=NULL  where  cDefine11 IS NULL   --清空其他2个字段
          end
       
        else              --如果销售流水号不为空
       
          begin          
                update RdRecord09 set cDefine13=fitemss05.销售项目编码,cDefine3=fitemss05.客户名称 from fitemss05    --从项目目录“新销售流水号”中更新其它2个字段
                where  cDefine11=fitemss05.citemcode and cCode=(select cCode from inserted)
           end
END
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-16 00:27:41 | 显示全部楼层
CREATE TRIGGER  xsckd_update_fitemss05
   ON rdrecord32 --销售出库单主表
   FOR INSERT,UPDATE
AS
BEGIN
        if (select cDefine11 from rdrecord32 where  cCode=(select cCode from inserted) ) is null  --如果销售流水号为空
       
          begin
                update rdrecord32 set cDefine13=NULL,cDefine3=NULL  where  cDefine11 IS NULL   --清空其他2个字段
          end
       
        else              --如果销售流水号不为空
       
          begin          
                update rdrecord32 set cDefine13=fitemss05.销售项目编码,cDefine3=fitemss05.客户名称 from fitemss05    --从项目目录“新销售流水号”中更新其它2个字段
                where  cDefine11=fitemss05.citemcode and cCode=(select cCode from inserted)
           end
END
回复 支持 反对

使用道具 举报

发表于 2022-9-17 13:53:10 | 显示全部楼层
本帖最后由 consofor 于 2022-9-17 13:56 编辑

CREATE TRIGGER  qtckd_update_fitemss05
   ON RdRecord09 --其他出库单主表
   FOR INSERT,UPDATE   ------ 不清楚更新触发有啥意义
AS
BEGIN
set nocount on ;  ----  设置无返回信息
   if update(cHandler )   ----更新条件
        if (select cDefine11 from RdRecord09 where  cCode=(select cCode from inserted) ) is null  --如果销售流水号为空
      
          begin
                update RdRecord09 set cDefine13=NULL,cDefine3=NULL  where  cDefine11 IS NULL   --清空其他2个字段
          end
      
        else              --如果销售流水号不为空
      
          begin         
                update RdRecord09 set cDefine13=fitemss05.销售项目编码,cDefine3=fitemss05.客户名称 from fitemss05    --从项目目录“新销售流水号”中更新其它2个字段
                where  cDefine11=fitemss05.citemcode and cCode=(select cCode from inserted)
           end
END

点评

搞清楚了,是一个字段名  详情 回复 发表于 6 天前
感谢您的答复!有一个条语句没看懂: if update(cHandler ) ,这个cHandler指什么? 再次请教。  详情 回复 发表于 6 天前
回复 支持 反对

使用道具 举报

发表于 2022-9-19 18:52:08 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
附件是2个单据的触发器脚本,都是实现类似的功能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
consofor 发表于 2022-9-17 13:53
CREATE TRIGGER  qtckd_update_fitemss05
   ON RdRecord09 --其他出库单主表
   FOR INSERT,UPDATE   ---- ...

感谢您的答复!有一个条语句没看懂: if update(cHandler )  ,这个cHandler指什么?
再次请教。

回复 支持 反对

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
consofor 发表于 2022-9-17 13:53
CREATE TRIGGER  qtckd_update_fitemss05
   ON RdRecord09 --其他出库单主表
   FOR INSERT,UPDATE   ---- ...

搞清楚了,是一个字段名
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
学习一下学习一下学习一下
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
学习一下学习一下学习一下
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
学习一下学习一下学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号 )川公网安备 51072502110008号

GMT+8, 2022-9-27 06:49 , Processed in 0.035374 second(s), 12 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2005-2022.

快速回复 返回顶部 返回列表