• 八、K3 WISE 开发插件《工业单据老单序时薄插件工具栏按钮开发实例》


    ===============================

    目录:

    1、添加工具栏按钮

    2、查询被添加工具栏按钮的业务单据的FMenuID和FID

    3、添加工具栏按钮和业务单据的映射关系

    4、工具栏按钮点击激发事件MainFunction

    5、工具栏按钮点击激发事件DLL注册

    6、测试结果

    7、附转载源码

    ===============================

    本例以销售订单为例,已实际测试可行!

     1、添加工具栏按钮

    insert into t_MenuToolBar
     ( FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,
     FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
     FVisible,FEnable,FChecked,FShortCut,FCBList,
     FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,FIndex,
     FToolCaption,FToolCaption_CHT,FToolCaption_EN) 
    values 
    (99999,'NewMenuTest','测试按钮1','测试按钮','测试按钮',
    '39','测试按钮','测试按钮','测试按钮',0,
    1,1,0,0,'',
    '','',0,0,0,
    '测试按钮','测试按钮','测试按钮')
    

     2、查询被添加工具栏按钮的业务单据的FMenuID和FID

    --查询被添加工具栏按钮的业务单据的FmenuID和FID,分别是100,32
    select FID,FmenuID,* from iclisttemplate where Fname LIKE '%销售订单%'
    

     3、添加工具栏按钮和业务单据的映射关系

    --t_BandToolMapping.FID 对应 iclisttemplate.FMenuID,
    --t_BandToolMapping.FToolID 对应 t_MenuToolBar.FToolID
    --t_BandToolMapping.FComName 是按钮激发组件DLL中命名空间.类名
    insert into t_BandToolMapping 
    (FID,FBandID,FToolID,FSubBandID,FIndex,
    FComName,FBeginGroup) 
    values 
    (100,48,99999,0,999,
    '|BOS_BillEvent_PlugIns.Class3',0)
    

    4、工具栏按钮点击激发事件MainFunction

    MainFunction(ByVal sKey As string,oList AsObject,Byref bCancel as Boolean) sKey :     菜单的Key值,也就是菜单名 oList :     K3List控件 bCancel:是否取消后继操作标志

    Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
    
    'Set InBatch = New InBatch  显示窗体
    MsgBox "111"
    Dim vectBill As KFO.Vector
    
    --经实际测试K3Connection.AppConnection取不到变量。请使用SQLHelper去连接数据库,代码和使用方法在第一篇插件新手指导里
    Set OBJ = CreateObject("K3Connection.AppConnection")   '老单据里的连接字串
    '菜单响应
    Select Case sKey
    Case "NewMenuTest" '和你在数据库里插入的FNAME一样
        '通过Set vectBill = oList.GetSelected 可以获取当前选中序时薄数据
        
        '返回记录集方式
        'Set rs = obj.Execute("select * from t_icitem")
        
        '执行存储过程方式
        ' obj.Execute3 ("exec KY_PlanQty")
    
    
    
    
    End Select
    End Function
    

    5、工具栏按钮点击激发事件DLL注册

    新建批处理文件:注册.bat

    文本内容:regsvr32 "BOS_BillEvent_PlugIns.dll"

    双击注册.bat,进行DLL注册

    6、测试结果

    7、附转载源码

    Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
        Dim vectBill As KFO.Vector
        Dim lmul As Long
        Dim rs  As ADODB.Recordset
        Dim InBatch As Form
        Dim J
        Dim I
        Dim Dict As KFO.Dictionary
        Dim DictCheck As KFO.Dictionary
        Dim fiterid As Integer
        Dim fbillno As String
        Dim sqlUpdate As String  
        Dim sqlSelect As String
        Dim strList As String
           
    'Set InBatch = New InBatch  显示窗体
     Set OBJ = CreateObject("K3Connection.AppConnection")   '老单据里的连接字串
           
    Select Case sKey1 
        Case "PlanUpdate"
            'Set vectBill = New KFO.Vector
    :       Set vectBill = oList.GetSelData("FInterID")
            If vectBill.UBound > 0 Then
                frmUpdate.Show 1
                If frmUpdate.dtUpdate = "白班" Then
                     For I = vectBill.LBound To vectBill.UBound  '辅助资料内码  40025=白班
                             Set DictCheck = vectBill(I)
                             sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40025 where finterid = " & DictCheck.GetValue("FInterID")) 
                              OBJ.Execute3 (sqlUpdate)) 
                    Next I
                   SendKeys ("{F5}")
                   MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
               End If
               If frmUpdate.dtUpdate = "夜班" Then
                    For I = vectBill.LBound To vectBill.UBound  '辅助资料内码  40026=夜班
                            Set DictCheck = vectBill(I)
                            sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40026 where finterid = " & DictCheck.GetValue("FInterID")
                            OBJ.Execute3 (sqlUpdate) `
                    Next I 
                    SendKeys ("{F5}")
                    MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
               End If
           End If
     Case "PlanUpdate2"
            Set vectBill = oList.GetSelData("FInterID")
            If vectBill.UBound > 0 Then
                 strList = ""
                 For I = vectBill.LBound To vectBill.UBound  '辅助资料内码  40025=白班
                       Set DictCheck = vectBill(I)
                       strList = strList & DictCheck.GetValue("FInterID") & ","
                 Next I
                 strList = Left(strList, Len(Trim(strList)) - 1)
                 sqlSelect = "select t2.FNumber,t2.FName,sum(t1.FQty) from ICMO t1 inner join t_icitem t2 on t1.FItemID=t2.FItemID where t1.FInterID in (" & strList & ") group by t2.FNumber,t2.FName"
                 Set rs = OBJ.Execute(sqlSelect)
     End Function
    
    --在采购订单序时簿上添加工具栏按钮
    INSERT INTO t_BandToolMapping
    (FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup)
    VALUES
    (81,47,1001,0,1001,'&mnuFileUserAdd1',1)
    INSERT INTO t_MenuToolBar
    (FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
     FVisible,FEnable,FChecked,FShortCut,FShortChar,FCBList,FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,
     FIndex,FToolCaption,FToolCaption_CHT,FToolCaption_EN )
    VALUES
    (1001,'UserAdd1','自定义1','自定义1','自定义1',17,'由用户自定义的按钮','由用户自定义的按钮','由用户自定义的按钮',0,
     1,1,0,0,'','','','',0,0,0,'自定义1','自定义1','自定义1')
    
  • 相关阅读:
    hashlib模块
    sys模块
    random模块
    time模块
    生成器、迭代器
    装饰器
    函数相关内容
    集合相关操作
    springcloud(四):Eureka的配置详解
    springcloud(二):Eureka服务注册与发现
  • 原文地址:https://www.cnblogs.com/zhugq02/p/11237392.html
Copyright © 2020-2023  润新知