U8客开插件-一、标准单据标准按钮执行前验证操作

时间:2022-12-18 08:20:13

今天要做的就是在标准的单据的标准按钮之前进行验证操作,如果验证通过执行保存,如果不通过给予提示不进行保存。

下面拿销售出库单的保存按钮进行举例:

第一步:在程序中 ctrl+Shift  点击保存之后用写字板,粘贴  key

  取到 : 单据Key=0303、保存,按钮Tooltip:保存     F6,按钮Key:tlbSave;

第二步:VB工程及保存按钮前操作类

U8客开插件-一、标准单据标准按钮执行前验证操作

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','',
'','tlbSave','','IEDIT','U8SO_SOMainSaveButton.BeforeSaveClass','销售出库单保存校验','zh-cn','','销售出库单保存校验',
'Ctrl+S',,'销售出库单保存校验','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

U8客开插件-一、标准单据标准按钮执行前验证操作

第六步:在VB一程打上断点,并生成dll文件到C:\U8SOFT\UAP下,运行VB工程进行调试,效果如下:

U8客开插件-一、标准单据标准按钮执行前验证操作

备注:记录一下相关脚本

一、记录一下取值方式等

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','',
'','save','','IEDIT','U8SO_SOMainSaveButton.BeforeSaveClass','销售订单保存校验','zh-cn','','销售订单保存校验',
'Ctrl+S',,'销售订单保存校验','save','save')
go

作者:王春天 地址:http://www.cnblogs.com/spring_wang/p/4017877.html

U8客开插件-一、标准单据标准按钮执行前验证操作的更多相关文章

  1. 客开监控&lpar;BE&sol;UI&sol;BP&rpar;插件停用与启用

    1.单据界面右键属性,获取当前客开监控页面URL连接:http://172.16.168.15/U9/erp/display.aspx?lnk=UFSoft.UBF.Cust.CustManager& ...

  2. 解析大型&period;NET ERP系统 单据标准&lpar;新增,修改,删除,复制,打印&rpar;功能程序设计

    ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...

  3. 如何给ActiveX控件添加&OpenCurlyDoubleQuote;事件”&OpenCurlyDoubleQuote;属性”&OpenCurlyDoubleQuote;标准事件”&OpenCurlyDoubleQuote;自定义事件”等一些相关操作

    上一篇小编带大家熟悉了一下ActiveX的建立以及相关的概念,(http://blog.csdn.net/u014028070/article/details/38424611) 本文介绍下如何给控件 ...

  4. Python&&num;160&semi;标准类库-数据类型之copy-深拷贝浅拷贝操作

    标准类库-数据类型之copy-深拷贝浅拷贝操作   by:授客 QQ:1033553122 Python中赋值并不会拷贝对象,只是创建目标和对象的绑定关系. copy.copy(x) 返回x的浅拷贝 ...

  5. C89标准和C99标准C11标准的区别

    转载 C89标准和C99标准C11标准的区别 C99对C89的改变 1.增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借 ...

  6. 纯js客服插件集qq、旺旺、skype、百度hi、msn

    原文 纯js客服插件集qq.旺旺.skype.百度hi.msn 客服插件,集qq.旺旺.skype.百度hi.msn 等 即时通讯工具,并可自己添加支持的通讯工具,极简主义,用法自己琢磨.我的博客 h ...

  7. C&plus;&plus;标准库vector类型的使用和操作总结

    vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型.想了解顺序容器的更多内容:C++顺序容器知识总结.vector的对象是可以动态生长的,这说明它在初始化时可以不用 ...

  8. 二、linux IO 编程---系统调用和POSIX标准和标准IO

    2.1 系统调用 2.1.1 概念 所谓系统调用(system call)是指曹错系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务. 应用程序可以 ...

  9. 第三百七十六节,Django&plus;Xadmin打造上线标准的在线教育平台—创建用户操作app,在models&period;py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表

    第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为ap ...

随机推荐

  1. CentOS设置虚拟网卡做NAT方式和Bridge方式桥接

    CentOS设置虚拟网卡做NAT方式和Bridge方式桥接 http://www.centoscn.com/CentOS/config/2015/0225/4736.html 摘要:KVM虚拟机网络配 ...

  2. 系统调优之numa架构

    NUMA简介 在传统的对称多处理器(SMP, Symmetric Multiprocessing)系统中,整个计算机中的所有cpu共享一个单独的内存控制器.当所有的cpu同时访问内存时,这个内存控制器 ...

  3. CE&lowbar;现金银行总行分行设定详解(案例)

    2014-07-14 Created By BaoXinjian

  4. 纪录参加noip2015&lpar;pj&plus;tg&rpar;复赛

    作为一个既参加了pj又参加了tg的初三蒟蒻,本次复赛不得不算一次很happy的事(可以不做周末作业,可以逃掉小班培训) 昨年参加pj的时候,一题眼瞎,二题作死,只有三题蒙了一点分,简直差到一种境界. ...

  5. 单调旋转数组的TopK问题

    问题描述:输入一个单调旋转后的数组,求该数组中的第k小的元素. 分析:很多人看到这个题目会有点懵,可能读者不知道什么是旋转数组,我先解释下两个概念, 旋转数组的定义:把一个数组的前几项元素移动到数组的 ...

  6. bootstrap快速入门笔记(三)响应式,行&comma;列,偏移量,排序

    一,响应式列重置 .clearfix <div class="row"> <div class="col-xs-6 col-sm-3"> ...

  7. Redis进阶实践之十七 Redis协议的规范

    一.介绍            Redis客户端使用称为RESP(Redis的序列化协议)的协议与Redis服务器进行通信. 虽然协议是专门为Redis设计的,但它可以用于其他客户端 - 服务器软件项 ...

  8. Windows下建立ArcGIS Server集群

    原创文章,转载须标明出处自: http://www.cnblogs.com/gisspace/p/8269525.html -------------------------------------- ...

  9. linux上文件内容去重的问题uniq&sol;awk

    1.uniq:只会对相邻的行进行判断是否重复,不能全文本进行搜索是否重复,所以往往跟sort结合使用. 例子1: [root@aaa01 ~]# cat a.txt 12 34 56 12 [root ...

  10. 数列分块入门九题(一):LOJ6277~6279

    Preface 分块,一个神奇的暴力算法.可以把很多\(O(n^2)\)的数据结构题的暴力优化到常数极小的\(O(n\sqrt n)\).当一些毒瘤题无法用线段树,主席树,平衡树,树状数组...... ...