自定义反写规则

仅用于学习,请谨慎使用。
标准产品的反写规则,适用于绝大部分场景,对于个别特殊需求,可能要通过二开插件来实现。所以简单做了一个简易功能,满足少数要求(用python实现,无需插件)。
1.新增一个基础资料,用于保存反写规则。

a.将需要执行的SQL语句,放到单据体的执行内容中(@fid 为单据内码)
b.点击菜单“生成存储过程”,自动将单据体内容拼接成存储过程(可修改),
使用自定义公式 FCONTENT ="ALTER PROCEDURE [dbo].["+ftitle+"]"+"@bill NVARCHAR(50), @fid NVARCHAR(50),@type NVARCHAR(50) as"+" ".join(map(lambda x : (" if(@bill='"+x.FBILLID.FID+"' and @type='"+x.ftype+"') begin "+x.fbody+" end" if(x.FISDELETE==false) else ""), F_whkf_Entity))
c.点击菜单“执行存储过程”,第一次执行需要将ALTER 改为Create
菜单点击事件用python简单生成
import clr
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
def BarItemClick(e):
if(e.BarItemKey.ToUpperInvariant()=="FEXCUTESQL"):
billid = this.View.BusinessInfo.GetForm().Id.ToUpperInvariant();
PKV = Convert.ToString(this.View.Model.GetPKValue());
sqlGetEmpId =this.View.Model.GetValue("FCONTENT");
DBServiceHelper.Execute(this.Context,sqlGetEmpId);
this.View.ShowMessage("执行成功!");2.在对应单据的对应操作列表的服务插件,中注册以下python语句
import clr
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.ServiceHelper')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.C自定义反写规则
仅用于学习,请谨慎使用。 标准产品的反写规则,适用于绝大部分场景,对于个别特殊需求,可能要通过二开插件来实现。所以简单做了...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



