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

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

第一步:在程序中 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','',
'','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

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

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

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

  1. 客开监控(BE/UI/BP)插件停用与启用

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

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

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

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

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

  4. Python 标准类库-数据类型之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++标准库vector类型的使用和操作总结

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

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

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

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

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

随机推荐

  1. 使用paramiko中 Server not found in known_hosts的错误解决

    报错的格式如下: 主要是缺少set_missing_host_key_policy配置信息. set_missing_host_key_policy方法,是制定连接远程主机没有本地密钥或HostKey ...

  2. loadrunner -27492超时

  3. hdu 3308 LCIS(线段树区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=3308 LCIS Time Limit: 6000/2000 MS (Java/Others)     ...

  4. Android 使用DDMS查看内存使用情况

  5. JQuery EasyUI学习笔记

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6690888.html  简介与准备 jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用 ...

  6. JavaWeb开发之普通图片验证码生成技术与算术表达式验证码生成技术

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134649.html    另:算术验证码生成的JSP.Servlet实现均已移植github:https:/ ...

  7. kettle实现数据库迁移----多表复制向导

    kettle实现数据库迁移----多表复制向导 需求: 做数据仓库时,需要将业务系统CRM抽取到数据仓库的缓冲层,业务系统使用的是SqlServer数据库,数据仓库的缓冲层使用的是mysql数据库,为 ...

  8. 转 php安装错误configure: error: Please reinstall the libcurl distribu

    今天配置一台server的php支持curl的时候, 出现如下报错 checking for cURL in default path... not foundconfigure: error: Pl ...

  9. 使用mapreduce来分析网站的log日志

    近日,有人和我说分析log日志. 之前,就写过,但是忘了总结了,找了半天也没有找到,看了以后要将东西整理了. 无奈,在网上收拾,看到这个人写的,索性,就搬过来,待我找到我写的,在一块补充一下! 所有网 ...

  10. How to Land your Dream Job

           今天在code school上面看到一个外国人写的文章,写的很棒,瞧一下外国人的思维和我们有什么不同?分享给所有的朋友       You know how some things ar ...