Kwise老单二次开发方法_第1页
Kwise老单二次开发方法_第2页
Kwise老单二次开发方法_第3页
Kwise老单二次开发方法_第4页
Kwise老单二次开发方法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、K/3 Wise 插件开发和配置 919 7 发表于 2016-12-20 10:57:17 BOS开发 复制链接 只看楼主 查看全部 直达 操作成功!开发环境: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菜单栏上会多出一个金蝶开发插件: 打开金蝶开发向导,创建工业单据客户端插件(工业单据俗称

2、“老单”): 点击“确定”,选择类“FirstPlugin”: 点击“下一步”,这里我们自定义一个菜单项“插件工具”: 点击“下一步”,选择事件“UserMenuClick”: 完成向导。二、代码演示代码编写如下:配置路径:供应链-外购入库单函数功能:插件工具-根据“长、宽、厚”自动计算批号定义插件对象接口. 必须具有的声明, 以此来获得事件Private WithEvents m_BillTransfer As K3BillTransfer.BillDim F55 As Long, F55Text As String长Dim F56 As Long, F56Text As String宽Di

3、m 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 StringPublic Sub Show(ByVal oBillTransfer As Object) 接口实现 注意: 此方法必须存在, 请勿修改 Set m_BillTransfer = oBillTransfer E

4、nd SubPrivate Sub Class_Terminate() 释放接口对象 注意: 此方法必须存在, 请勿修改 Set m_BillTransfer = NothingEnd SubPrivate Sub m_BillTransfer_BillInitialize() * 开始设置菜单 * m_BillTransfer.AddUserMenuItem 自动批号, 插件工具 * 结束设置菜单 * TODO: 请在此处添加代码响应事件 BillInitialize F55 = GetCtlIndexByFld(FEntrySelfA0155, True) F56 = GetCtlInde

5、xByFld(FEntrySelfA0156, True) F57 = GetCtlIndexByFld(FEntrySelfA0157, True) FBatchNo = GetCtlIndexByFld(FBatchNo, True) FDate = GetCtlIndexByFld(FDate, False) FItemID = GetCtlIndexByFld(FItemID, True)End SubPrivate Sub m_BillTransfer_UserMenuClick(ByVal Index As Long, ByVal Caption As String) TODO:

6、请在此处添加代码响应事件 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 =

7、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 F55Te

8、xt = 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 SelectEnd Sub*获取分录行数*Public

9、Function GetEntryMax() As LongDim k As LongDim iFItemID As LongDim oEntryCtl As VariantDim 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 IfNext koEntr

10、yCtl = m_BillTransfer.EntryCtlmaxrow = UBound(oEntryCtl(iFItemID).DInterID) 获取表体最大行GetEntryMax = maxrowEnd Function*返回单据字段顺序(isEntry True是表体)*Public Function GetCtlIndexByFld(ByVal fldName As String, Optional ByVal isEntry As Boolean = False) As LongDim ctlIdx As LongDim i As IntegerDim isFind As Bo

11、oleanDim vValue As VariantfldName = UCase(fldName)isFind = FalseWith m_BillTransferIf 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 iElse For i = LBound(.HeadCtl) To UBoun

12、d(.HeadCtl) If UCase(.HeadCtl(i).FieldName) = fldName Then ctlIdx = .HeadCtl(i).FCtlIndex isFind = True Exit For End If Next iEnd IfEnd WithIf isFind = True ThenGetCtlIndexByFld = ctlIdxElseGetCtlIndexByFld = 0End IfEnd Functionurl= /url三、配置插件在Visual Basic 6.0生成DLL: 启动K/3 Wise BOS开发平台,打开外购入库单,并进行插件配

13、置: 点击“插件配置管理”,配置客户端插件: 点击“浏览”,找到插件并勾选: 点击“确定”,并保存外购入库单。四、测试插件启动K/3 Wise,打开“供应链-仓存管理-外购入库单-新增”: 至此,插件开发和配置完成!五、插件配置后未生效 1.在插件配置管理提示“没有找到文件,或文件没有正确注册” 解决方法:插件dll名称命名要和工程名称一致。 比如工程名称“aaaa”,其中有一个类“bbb”,dll命名为“aaa”, 配置插件后,显示完整名称“aaa.bbb”,提示aaaa“没有找到文件,或文件没有正确注册”。 修改dll名称“aaa”为“aaaa”,重新配置插件,即可修复问题。六、插件事件附

14、录附上K/3 Wise 工业单据开发事件说明:序号事件函 数描 述1BillTerminatePublic Event BillTerminate()单据卸载完成时激发该事件2UserMenuClickPublic Event UserMenuClick(ByVal Index As Long, ByVal Caption As String)当点击用户自定义的菜单时激发这个事件。 参数:Index:表示第几个菜单、由添加菜单的先后顺序决定,Caption:菜单项的标题3LeveCellPublic Event LeveCell(ByVal Col As Long, ByVal Row As

15、Long, ByVal NewCol As Long, ByVal NewRow As Long, Cancel As Boolean)当离开分录的一个单元格的时候激发这个事件 参数:Col 分录的要离开列Row分录的要离开行NewCol 新的列NewRow新的行Cancel是否取消4HeadChangePublic Event HeadChange(ByVal CtlIndex As Long, ByVal Value As Variant, ByVal bNewBill As Boolean, Cancel As Boolean)当表头的一个项目改变时激发这个事件参数:ctlIndex 表

16、头字段索引Value 当前值bNewBill是否是新增单据Cancel是否取消5GridChangePublic Event GridChange(ByVal Col As Long, ByVal Row As Long, ByVal Value As Variant, ByVal bNewBill As Boolean, Cancel As Boolean)当表体的一个项目改变时激发这个事件参数:Col 分录的当前列Row分录的当前行Value 当前值bNewBill是否是新增单据Cancel是否取消6BeforGridLookUpPublic Event BeforGridLookUp(B

17、yVal Row As Long, ByVal Col As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)在分录执行查找功能之前激发这个事件参数:Col 分录的当前列Row分录的当前行nLookUpClsID 当前查询的资料类型,Cancel是否取消7EndGridLookUpPublic Event EndGridLookUp(ByVal Row As Long, ByVal Col As Long, ByVal nLookUpClsID As Long)在分录完成查找功能之后激发这个事件参数:Col 分录的当前列Row分录的当前行

18、nLookUpClsID 当前查询的资料类型8BeforHeadLookUpPublic Event BeforHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)在表头的一个项目执行查找功能之前激发这个事件参数:ctlIndex表头字段索引nLookUpClsID 当前查询的资料类型Cancel是否取消9EndHeadLookUpPublic Event EndHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long)

19、在表头的一个项目完成查找功能之后激发这个事件,参数:ctlIndex表头字段索引nLookUpClsID 当前查询的资料类型10BeforeSavePublic Event BeforeSave(ByVal bNew As Boolean, ByRef ReturnCode As Long)在单据执行保存功能的时候激发这个事件参数:bNew 表示是否是新增单据ReturnCode 返回参数 -1: 失败,结束单据保存;0:成功,继续单据保存1:成功返回,结束单据保存11EndSavePublic Event EndSave(ByVal BillNo As String)在单据执行完成保存功能的

20、时候激发这个事件 参数:BillNo表示单据的编号12LoadBillEndPublic Event LoadBillEnd(ByVal ShowType As Long)在单据装载完成的时候激发这个事件 参数:ShowType 单据显示状态 0新增 1.修改 2.查看 3.审核13NewBillEndPublic Event NewBillEnd()在单据新增完成的时候激发这个事件14SetMenuBarCtlPropEndPublic Event SetMenuBarCtlPropEnd(ByVal ShowType As Long, ByVal BillChecked As Boolea

21、n)在单据设置菜单、工具条各属性完成的时候激发这个事件参数:ShowType 单据显示状态 0新增 1.修改 2.查看 3.审核BillChecked 单据是否已被审核15BeforeFillBillDataPublic Event BeforeFillBillData(ByVal BillTransType As Long, ByVal BillInterID As Long)在装载某张单据之前激发这个事件参数:BillTransType 单据事务类型BillInterID单据内码16EndBillFormActivePublic Event EndBillFormActive()在显示单据

22、之后激发这个事件17GridFormatPublic Event GridFormat(ByVal Dest As Long, ByVal Col As Long, ByVal Row As Long)在设置单据体格式后激发这个事件参数:DestCol 要设置格式的目标列Row 要设置格式的目标行18RefreshControlPublic Event RefreshControl() Public Event RefreshControl()19BeforeEntrySplitPublic Event BeforeEntrySplit(ByVal pCurRow As Long, ByVal pSplitCount As Long, ByVal pSplitMethod As Long, ByRef pCancel As Boolean)在单据的拆分操作之前激发此事件 参数:pCurRow 要拆分的当前分录行pSplitCount 拆分的数目pSplitMethod 拆分分录位置 0 插入式, 1追加式pCancel 是否取消拆分 true:取消拆分 fals

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论