用友U8自定义按钮开发

Posted Hello World,

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用友U8自定义按钮开发相关的知识,希望对你有一定的参考价值。

网上搜索《U8界面按钮二次开发手册》即可找到基础的资料,主要分为几个步骤:

一、判断界面是否可进行二次开发

            在一个界面上同时按住Ctrl+Shift并点击任何一个按钮,这样你所需要的信息将被Copy到写字板(附件中的写字板)上,(注意不是记事本notepad)。

二、根据获取的信息添加SQL按钮资料

在Meta数据库,表AA_CustomerButton中,表说明如下:

字段名

说明

cButtonID

按钮ID,GUID

cButtonKey

按钮Key

cButtonType

default表示一般按钮,

menu表示菜单,

system表示替换系统按钮的功能,执行自己的方法。

cProjectNO

不允许使用U870项目号,客户化项目用U8CustDef

cFormKey

无用

cVoucherKey

单据的Key

cKeyBefore

如果cButtonType是default则此键表示自定义按钮前的按钮key

如果cButtonType是menu则表示菜单所在的按钮

如果cButtonType是system则表示需要替换的按钮key

iOrder

无用

cGroup

分组IEDIT,ICOMMON

cCustomerObjectName

组件名

cCaption

标题

cLocaleID

语种 zh-cn, zh-tw,en-us

cImage

图标的文件名

cHotKey

快捷键如Ctrl+A

bInneralCommand

是否内部命令,设置为1

cVariant

自定义内容,里面的值会传给处理的组件

cVisibleAsKey

设置显示状态与系统的那个按钮键值一致

cEnableAsKey

设置Enable状态与系统的那个按钮键值一致

插入代码示例:

--销售订单的数据预置脚本
--销售订单的保存按钮后面增加一个按钮的脚本
INSERT INTO [AA_CustomerButton]([cButtonID], [cButtonKey], [cButtonType], [cProjectNO], [cFormKey], [cVoucherKey], [cKeyBefore], [iOrder], [cGroup], [cCustomerObjectName], [cCaption], [cLocaleID], [cImage], [cToolTip], [cHotKey], [bInneralCommand], [cVariant], [cVisibleAsKey], [cEnableAsKey])
VALUES(newid(), 'btntest','default', 'U8CustDef', 
'17', '17','save', '0', 'IEDIT','U8Test.mytestclass','测试',
'zh-cn','','测试','Ctrl+N',1,'测试数据','save','save')
--注意:U8Test.mytestclass类需要注册,否则会报Activex不能创建对象。

--直接替换销售订单的保存按钮按钮的脚本


INSERT INTO [AA_CustomerButton]([cButtonID], [cButtonKey], [cButtonType], [cProjectNO], [cFormKey], [cVoucherKey], [cKeyBefore], [iOrder], [cGroup], [cCustomerObjectName], [cCaption], [cLocaleID], [cImage], [cToolTip], [cHotKey], [bInneralCommand], [cVariant], [cVisibleAsKey], [cEnableAsKey])
VALUES(newid(), 'btntest2','system', 'U8CustDef', 
'17', '17','save', '0', 'IEDIT','U8Test.mytestclass','测试',
'zh-cn','','测试','Ctrl+N',1,'测试数据','save','save')

--注意:U8Test.mytestclass类需要注册,否则会报Activex不能创建对象。

三、编写代码并注册

        新建一个VB类,并写入以下方法即可。C#也可以编写,但不能转换接收到的对象,还是VB的方便。

‘执行按钮,objVoucher为单据或列表对象
‘VarentValue为在表中预置的cVariant的值。
Public Function RunCommand(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, _
                            ByVal sKey As String, ByVal VarentValue As Variant, 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后会不再执行系统方法。
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)
    Cancel = False
End Function

四、取值说明

        objVoucher的数据获取

        表头数据:objVoucher.HeaderText("cPersonCode")       cPersonCode是后台表字段。

        表体数据:objVoucher.bodytext(i, "iSum")      

                                 i:表体的第几行,从1开始,iSum:表体的后台字段

        '获取表体当前行数据:
                objVoucher.bodytext(objVoucher.Row, "cinvcode")
        '获取指定行数据,指定第一行:
                objVoucher.bodytext(1, "cinvcode")

以上是关于用友U8自定义按钮开发的主要内容,如果未能解决你的问题,请参考以下文章

《U8开发听我说》第六讲:采购订单执行统计表中如何显示税率

用友NC65怎么增加状态按钮

用友u8库龄分析表还原列宽

如何修改K3单据录入的界面

用友ERP系统,U9操作流程图

用友U8应收账款账龄分析怎么查