金蝶K3 wise 插件二次开发与配置

开发环境:K/3 Wise 13.0、K/3 Bos开发平台、Visual Basic 6.0

目录

一、二次开发插件编程
二、代码演示
三、配置插件
四、测试插件
五、插件事件附录

一、二次开发插件编程

  打开Visual Basic 6.0,新建工程ActiveX DLL:

  

  命名为FirstPlugin.class:

  

  引用类库如下:

  

  已安装K/3 Wise,在VB 6.0菜单栏上会多出一个金蝶开发插件:

  

  打开金蝶开发向导,创建工业单据客户端插件(工业单据俗称“老单”):

  

  点击“确定”,选择类“FirstPlugin”:

  

  点击“下一步”,这里我们自定义一个菜单项“插件工具”:

  

  点击“下一步”,选择事件“UserMenuClick”:

  

  完成向导。

二、代码演示

  代码编写如下:

'配置路径:供应链-外购入库单
'函数功能:插件工具--根据“长、宽、厚”自动计算批号
'定义插件对象接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_BillTransfer As K3BillTransfer.Bill
Dim F55 As Long, F55Text As String '长
Dim F56 As Long, F56Text As String '宽
Dim F57 As Long, F57Text As String '高
Dim FDate As Long, FDateText As String '日期
Dim FBatchNo As String '批号
Dim FItemID As Long, FNumber As String '物料编码
Dim FBatchManager As Boolean '是否采用业务批号管理
Dim str As String Public Sub Show(ByVal oBillTransfer As Object) '接口实现
'注意: 此方法必须存在, 请勿修改
Set m_BillTransfer = oBillTransfer End Sub Private Sub Class_Terminate() '释放接口对象
'注意: 此方法必须存在, 请勿修改
Set m_BillTransfer = Nothing End Sub Private Sub m_BillTransfer_BillInitialize() '*************** 开始设置菜单 *************** m_BillTransfer.AddUserMenuItem "自动批号", "插件工具" '*************** 结束设置菜单 *************** 'TODO: 请在此处添加代码响应事件 BillInitialize
F55 = GetCtlIndexByFld("FEntrySelfA0155", True)
F56 = GetCtlIndexByFld("FEntrySelfA0156", True)
F57 = GetCtlIndexByFld("FEntrySelfA0157", True)
FBatchNo = GetCtlIndexByFld("FBatchNo", True)
FDate = GetCtlIndexByFld("FDate", False)
FItemID = GetCtlIndexByFld("FItemID", True)
End Sub Private Sub m_BillTransfer_UserMenuClick(ByVal Index As Long, ByVal Caption As String)
'TODO: 请在此处添加代码响应事件 UserMenuClick Select Case Caption
Case "自动批号"
'此处添加处理 批号生成 菜单对象的 Click 事件
With m_BillTransfer For i = 1 To 1000
If .GetGridText(i, FItemID) = "" Then
Exit For
End If
'从物料表检测 是否采用业务批次管理
Dim strSQL As String '用于执行SQL
Dim rs As ADODB.Recordset
FNumber = ""
FNumber = .GetGridText(i, FItemID)
strSQL = ""
strSQL = "SELECT FBatchManager FROM t_ICItem WHERE FNumber='" & FNumber & "'"
Set rs = SQLHelper.ExecuteSQL(strSQL, "")
If rs.EOF = False Then
FBatchManager = rs.Fields("FBatchManager")
End If
Set rs = Nothing
F55Text = .GetGridText(i, F55)
F56Text = .GetGridText(i, F56)
F57Text = .GetGridText(i, F57)
If F55Text = "" Then F55Text = "0"
If F56Text = "" Then F56Text = "0"
If F57Text = "" Then F57Text = "0"
FDateText = Replace(.GetHeadText(FDate), "-", "")
If (FBatchManager = True) Then
.SetGridText i, FBatchNo, F55Text & "-" & F56Text & "-" & F57Text & "-" & FDateText
End If
Next
End With
Case Else
End Select End Sub '*****************************************
'获取分录行数
'*****************************************
Public Function GetEntryMax() As Long
Dim k As Long
Dim iFItemID As Long
Dim oEntryCtl As Variant
Dim maxrow As Long '最大行' For k = LBound(m_BillTransfer.EntryCtl) To UBound(m_BillTransfer.EntryCtl)
If UCase(m_BillTransfer.EntryCtl(k).FieldName) = UCase("FItemID") Then '物料代码所在列
iFItemID = k
Exit For
End If
Next k oEntryCtl = m_BillTransfer.EntryCtl
maxrow = UBound(oEntryCtl(iFItemID).DInterID) '获取表体最大行
GetEntryMax = maxrow
End Function '**********************************
'返回单据字段顺序(isEntry True是表体)
'**********************************
Public Function GetCtlIndexByFld(ByVal fldName As String, Optional ByVal isEntry As Boolean = False) As Long
Dim ctlIdx As Long
Dim i As Integer
Dim isFind As Boolean
Dim vValue As Variant
fldName = UCase(fldName)
isFind = False
With m_BillTransfer
If isEntry Then
For i = LBound(.EntryCtl) To UBound(.EntryCtl)
If UCase(.EntryCtl(i).FieldName) = fldName Then
ctlIdx = .EntryCtl(i).FCtlOrder
isFind = True
Exit For
End If
Next i
Else
For i = LBound(.HeadCtl) To UBound(.HeadCtl)
If UCase(.HeadCtl(i).FieldName) = fldName Then
ctlIdx = .HeadCtl(i).FCtlIndex
isFind = True
Exit For
End If
Next i
End If
End With
If isFind = True Then
GetCtlIndexByFld = ctlIdx
Else
GetCtlIndexByFld = 0
End If
End Function

三、配置插件

  在Visual Basic 6.0生成DLL:

  

  启动K/3 Wise BOS开发平台,打开外购入库单,并进行插件配置:

  

  点击“插件配置管理”,配置客户端插件:

  

  点击“浏览”,找到插件并勾选:

  

  点击“确定”,并保存外购入库单。

四、测试插件

  启动K/3 Wise,打开“供应链-仓存管理-外购入库单-新增”:

    

  至此,插件开发和配置完成!

五、插件配置后未生效

1.在插件配置管理提示“没有找到文件,或文件没有正确注册”

解决方法:插件dll名称命名要和工程名称一致。

比如工程名称“aaaa”,其中有一个类“bbb”,dll命名为“aaa”,

配置插件后,显示完整名称“aaa.bbb”,提示aaaa“没有找到文件,或文件没有正确注册”。

修改dll名称“aaa”为“aaaa”,重新配置插件,即可修复问题。

附SqlHelper源码:

Attribute VB_Name = "SQLHelper"
'Public Function Conn() As ADODB.Connection
' Set Conn = New ADODB.Connection
' Conn.Open = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=AIS20140411200431;Data Source=."
'End Function Public Function ConnectString() As String
'ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=AIS20140411200431;Data Source=."
ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=Ab123456;Initial Catalog=AIS20140508100349;Data Source=KDSERVER"
End Function '传递参数SQL传递查询语句,MsgString传递查询信息。自身以一个数据集对象的形式返回
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim Cnn As ADODB.Connection '定义连接
Dim Rst As ADODB.Recordset
Dim sTokens() As String '定义字符串 On Error GoTo ExecuteSQL_Error '异常处理 sTokens = Split(SQL) '用Split函数产生一个包含各个子串的数组 Set Cnn = New ADODB.Connection '创建连接
Cnn.Open ConnectString If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '判断字符串中是否含有指定内容
Cnn.Execute SQL '执行查询语句
MsgString = sTokens(0) & "query successful" '返回查询信息
Else
Set Rst = New ADODB.Recordset '闯将数据集对象
Rst.Open Trim$(SQL), Cnn, adOpenKeyset, adLockOptimistic '返回查询结果
Set ExecuteSQL = Rst '返回记录集对象
MsgString = "查询到" & Rst.RecordCount & " 条记录"
End If ExecuteSQL_Exit: Set Rst = Nothing '清空数据集对象
Set Cnn = Nothing '中断连接
Exit Function ExecuteSQL_Error: '判断错误类型 MsgString = "查询错误:" & Err.Description
MsgBox MsgString
Resume ExecuteSQL_Exit End Function
作者:焱龙
申明:作者写博是为了总结经验,和以后的工作参考之用。
如需转载,请尽管转载,不需要版权申明!
感谢大神的博客,转载过来,留着自己学习和大家一起分享
 
 
 
 
 
 

金蝶K3 wise 插件二次开发与配置的更多相关文章

  1. 金蝶K3 WISE 快速登录

    金蝶K3 WISE 快速登录 "C:\Program Files (x86)\Kingdee\K3ERP\k3main.exe" -LoginUser|账套号|账套密码|用户账号| ...

  2. 关于金蝶k3 wise供应生门户登陆界面屏蔽业务账套多余功能模块设置方法

    关于金蝶k3 wise供应生门户登陆界面屏蔽业务账套多余功能模块设置方法 1. 找到以下路径 ...\Kingdee\K3ERP\KDHR\SITEFILE\WEBUI\ 找到“Login.aspx” ...

  3. 金蝶K3 WISE 13.1版本服务器虚拟机环境部署

    闲来无事,整个13.1版本的金蝶玩玩. 系统环境:WIN2008 R2,x64位 数据库:MSSQL 2008 R2,X64位 记录下操作步骤: 1.准备安装软件,见图: 2.安装资源包,.net3. ...

  4. Revit二次开发环境配置(Revit 2020 +Visual Studio 2019)

    Revit二次开发环境搭建(Revit 2019+Visual Studio 2017)准备内容 Revit 2019开发环境的搭建,需要安装的内容如下: Revit 2019(主要的开发环境) Vi ...

  5. C#进行CAD二次开发环境配置

    最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...

  6. 基于Django+celery二次开发动态配置定时任务 ( 一 )

    需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...

  7. xshell远程终端操作Ubuntu server安装LAMP环境之最详细笔记之二PHP开发环境配置

    前言: 昨天学会了安装server,今天试着通过远程终端xshell来安装LAMP,搭配一下开发环境,也有集成环境可以一键安装使用,还是瞎折腾一下,手动一步一步搭建一下这个开发环境. 接上一篇:ubu ...

  8. 金蝶 K3 WISE 服务器必须登陆到桌面以后用户才能正常使用解决!

    我们单位K3的系统,由当地的服务商安装完以后就出现各种蛋疼的问题.做技术支持的小伙他总是会给一个小工具来解决,问他是什么原因要么说我的网络有问题,要么说我们的服务器有问题. K3所有客户端无法登陆一键 ...

  9. 金蝶K3 WISE BOM多级展开_销售成本表

    /****** Object: StoredProcedure [dbo].[pro_bobang_SaleCost] Script Date: 07/29/2015 16:13:43 ******/ ...

随机推荐

  1. mysql很有用的语句

    1)删除表内所有数据: 再添加数据时,如果设有自动增加的id,那么id也会重置. truncate table 表名; 2)创建结构相同的数据库表 create table 数据库名.新表名 like ...

  2. SQL 修改字段类型和长度,常见类型介绍及数据库设计工具PowerDesigner和astah

    1.电话字段设置24个Byte竟然不够,好吧设置为50的长度. alter table <表名> alter column <字段名> 新类型名(长度) 举例: ) 2.删除一 ...

  3. 自动化批量管理工具pssh - 运维小结

    pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可以并发 ...

  4. vue(8)—— 组件化开发 - webpack(2)

    webpack的常用loder和插件 loder和插件是什么,现在暂且不表,看到后面你就懂了 引入css问题 直接用link标签导入css 在前面的 vue(7)—— 组件化开发 — webpack( ...

  5. JDBC获取数据库连接

    是什么? JDBC:Java Data Base Connectivity(java数据库连接) 为什么用? sun公司提供JDBC API接口,数据库厂商来提供实现 我们需要用哪个数据库就加载那个数 ...

  6. 做优化的数据库工程师请参考!CynosDB的计算层设计优化揭秘

    本文由云+社区发表 本文作者:孙旭,腾讯数据库开发工程师,9年数据库内核开发经验:熟悉数据库查询处理,并发控制,日志以及存储系统:熟悉PostgreSQL(Greenplum,PGXC等).Terad ...

  7. 自反ACL(第三组)

    一.实验拓扑 二.配置过程 此处我用了学号后两位来划分网段,注意:先把网络做通再配ACL 1)网络连通测试 内网可以telnet外网 ----------- 外网可以telnet内网 2)ACL配置( ...

  8. bilibili用户信息全栈爬取

  9. 数据库【mongodb篇】练习操作

    本文的目标是通过大量的示例,来更好的理解如果在Mongodb中进行数据操作: 初入客户端刚利用 mongod命令进入客户端环境,此时对数据库一无所知: 举目四望,想知道现在有哪些数据库,   show ...

  10. js操作文章、字符串换行

    操作前: 操作后: 第一步: 把中英文的逗号和顿号置换为 '\n’ support_unit = support_unit.replace(/,|,|./g, '\n')   第二步: //为了使\n ...