U8客开插件-一、标准单据标准按钮执行前验证操作
今天要做的就是在标准的单据的标准按钮之前进行验证操作,如果验证通过执行保存,如果不通过给予提示不进行保存。
下面拿销售出库单的保存按钮进行举例:
第一步:在程序中 ctrl+Shift 点击保存之后用写字板,粘贴 key
取到 : 单据Key=0303、保存,按钮Tooltip:保存 F6,按钮Key:tlbSave;
第二步:VB工程及保存按钮前操作类
Public Function BeforeRunSysCommand(ByVal objLogin As Object, _ ByVal objForm As Object, _ ByVal objVoucher As Object, _ ByVal sKey As String, _ ByVal VarentValue As Variant, _ ByRef Cancel As Boolean, _ ByVal other As String) 这里可以写自己的判断逻辑,取值方法在最下面 End Function '初始化 Public Function init(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, msbar As Object) End Function
注意:在方法中Cancel = true为取消当前操作,并不往后执行
第三步:注册插件C:\U8SOFT\KK\EFBASE\UI_UserConfig.xml
<dll> <userdll>U8SO_SOMainSaveButton.BeforeSaveClass</userdll> <function> <userfunction>BeforeRunSysCommand</userfunction> </function> </dll>
第四步:注册脚步:数据库UFMeta_999
delete from aa_customerbutton where cButtonID = '088EC6DB-2380-4457-93BF-C618BE4767EA' go insert into aa_customerbutton ([cButtonID],[cButtonKey],[cButtonType],[cProjectNO],[cFormKey], [cVoucherKey],[cKeyBefore],[iOrder],[cGroup],[cCustomerObjectName],[cCaption],[cLocaleID],[cImage], [cToolTip],[cHotKey],[bInneralCommand],[cVariant],[cVisibleAsKey],[cEnableAsKey]) values('{088EC6DB-2380-4457-93BF-C618BE4767EA}','btntest','system','U8SO_SOMainSaveButton','0303', '0303','tlbSave','0','IEDIT','U8SO_SOMainSaveButton.BeforeSaveClass','销售出库单保存校验','zh-cn','','销售出库单保存校验', 'Ctrl+S',1,'销售出库单保存校验','tlbSave','tlbSave') go
脚本说明:
cButtonID:可以是 newid()
cButtonKey:要唯一,有意义的名字
cButtonType:按钮类型 default\menu\system
cFormKey: 窗体名字,单据Key
cVoucherKey:单据Key
cKeyBefore: 要处理的按钮key
cGroup : 按钮所在组
cCustomerObjectName:工程名.类名EFInterface_demo.cls_aa_customerbutton。如果这个不对不会进入VB
cToolTip:提示
cVisibleAsKey:当前按钮与哪个按钮是否可见状态一样
cEnableAsKey:当前按钮与哪个按钮是否可用状态一样
cImage:按钮图标 credit 在 icons图片名
第五步:vb工程启动项选择 EnterprisePortal.exe
第六步:在VB一程打上断点,并生成dll文件到C:\U8SOFT\UAP下,运行VB工程进行调试,效果如下:
备注:记录一下相关脚本
一、记录一下取值方式等
ls_dDate = objVoucher.headerText("dDate") 获取结算日期 // dDate U8字段名
ls_iExchRate = objVoucher.headerText("iExchRate")’获取汇率
ls_iQuantity = objVoucher.bodyText(i,"iQuantity")'获取数量
二、销售订单脚本注册如下:
delete from aa_customerbutton where cButtonID = '088EC6DB-2380-4457-93BF-C618BE4767EA' go insert into aa_customerbutton ([cButtonID],[cButtonKey],[cButtonType],[cProjectNO],[cFormKey], [cVoucherKey],[cKeyBefore],[iOrder],[cGroup],[cCustomerObjectName],[cCaption],[cLocaleID],[cImage], [cToolTip],[cHotKey],[bInneralCommand],[cVariant],[cVisibleAsKey],[cEnableAsKey]) values('{088EC6DB-2380-4457-93BF-C618BE4767EA}','btntest','system','U8SO_SOMainSaveButton','17', '17','save','0','IEDIT','U8SO_SOMainSaveButton.BeforeSaveClass','销售订单保存校验','zh-cn','','销售订单保存校验', 'Ctrl+S',1,'销售订单保存校验','save','save') go
作者: 王春天 出处: http://www.cnblogs.com/spring_wang/ Email: spring_best@yeah.net QQ交流:903639067
QQ群:322581894 关于作者: 大连天翼信息科技有限公司 技术总监。 SNF快速开发平台 创始人。应用平台架构师、IT规划咨询专家、业务流程设计专家。 专注于快速开发平台的开发、代码生成器。同时专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,精通DotNet系列技术Vue、.NetCore、MVC、Webapi、C#、WinForm等,DB(SqlServer、Oracle等)技术,移动端开发。熟悉Java、VB及PB开发语言。在面向对象、面向服务以及数据库领域有一定的造诣。现从事项目实施、开发、架构等工作。并从事用友软件产品U8、U9、PLM 客开工作。 如有问题或建议,请多多赐教! 本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。