金蝶云星空二开python表单插件之调用sql更新修改数据,以即时库存为例更新修改人及时间!!
大家好,我叫大伟,今天开始给大家继续倒腾金蝶二开插件案列分享,大部分都是非常实用而且能够提升工作效率和增强体验感的小功能。
在日常业务中,我们经常需要在用户执行某个操作时,自动记录操作人和操作时间。比如当用户在某个单据界面点击特定按钮时,需要更新相关库存记录的修改信息。这个功能运用非常广泛,不仅可以运用到即时库存单据,还可以运用到其他单据,只要合规安全的更新都可以使用该方法进行修改更新数据。
本次案例以即时库存(自定义的sql账表获取ID,通过ID打开即时库存单据进行修改)为案例,做这个功能的背景是,有些物料先入库后检验或者在验证检测当中发现有问题,需要添加备注,以便仓库区分能否出货或者降档出库,所以开发了一个sql账表进行修改,并补充添加备注的修改人是谁,修改时间是什么时候,以便于追溯。后期还会分享更高级的版本,自定义修改和批量修改指定的字段内容,通过弹窗方式进行修改。接下来废话不多说,直接上干货。
Python插件案例一之表单插件
调用SQL更新修改数据
(更新当前用户及修改时间)
代码如下
from clr importAddReferenceAddReference("Kingdee.BOS.App")fromKingdee.BOS.App.DataimportDBUtils#按钮事件defBarItemClick(e):if e.BarItemKey=='InvSave': #修改成自己的按钮标识名称userID=str(this.Context.UserId); #获取当前用户IDbillObj=this.View.Model.DataObject #获取数据包fid=billObj["id"] #获取单据内码if fid is not None:sql=(""" /*dialect*/ update T_STK_INVENTORY set FUPDATETIME=GETDATE(),ModifyUser='{0}' where FID='{1}' """).format(userID,fid)result_data=DBUtils.Execute(this.Context,sql)this.View.ShowMessage(str(result_data)+"条更新成功")this.View.InvokeFormOperation("Refresh")#刷新
操作步骤如下
1、打开BOS设计器,找到需要修改的单据,如果单据是只读状态,不要慌!只需在单据上右键点击【扩展】,就能以可编辑模式打开

2、注册Python脚本,进入【表单插件】配置,注册下面的Python脚本代码,填写脚本名称,保存配置

3、保存所有配置,修改单据,展示效果!如下图:
3.1 修改前,修改人为空及更新日期为历史日期。如图:

3.2 增加备注并保存更新,更新了日期及修改人。如图:

温馨提示
-
按钮标识:需要修改成自己的标识名称,否则无法触发。
- 如果是多个菜单按钮执行某些操作逻辑,一定要添加判断语句(使用if elif结构),只处理你需要监听的菜单项
-
复制脚本注意缩进,严格遵守PYTHON缩进规则,否则保存会报错
如果这篇文章对你有帮助,欢迎点赞、收藏、转发!有任何问题也欢迎在评论区留言交流!
夜雨聆风
