金蝶K3 BOS插件开发常见技巧.doc

上传人:土8路 文档编号:9948869 上传时间:2021-04-05 格式:DOC 页数:7 大小:37KB
返回 下载 相关 举报
金蝶K3 BOS插件开发常见技巧.doc_第1页
第1页 / 共7页
金蝶K3 BOS插件开发常见技巧.doc_第2页
第2页 / 共7页
金蝶K3 BOS插件开发常见技巧.doc_第3页
第3页 / 共7页
金蝶K3 BOS插件开发常见技巧.doc_第4页
第4页 / 共7页
金蝶K3 BOS插件开发常见技巧.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《金蝶K3 BOS插件开发常见技巧.doc》由会员分享,可在线阅读,更多相关《金蝶K3 BOS插件开发常见技巧.doc(7页珍藏版)》请在三一文库上搜索。

1、1、 如何在工具栏上添加多级审核的按钮?在m_BillInterface_MenuBarInitialize事件里添加如下代码即可。Set oTool = m_BillInterface.MenuBar.BOSTools(mnuEditMultiCheck)With oTool .Caption = 多级审核 .ToolTipText = 多级审核 .Description = 多级审核 .BeginGroup = False .ToolPicture = App.Path + Checker.bmp .SetPicture 0, vbButtonFaceEnd WithSet oBand =

2、 oMenuBar.BOSBands(BandToolBar)oBand.BOSTools.InsertBefore mnuFilePrint, oTool 将菜单对象插入指定工具栏2、 如何在显示一张Bos单据的同时给它赋值?要想在显示Bos单据的同时给它赋值,关键是在显示前要购建m_Billinterface的data包,这样在显示这张同据的时候,程序会解析data包,并将里面的值赋到单据界面上来。 Dim dctData As kfo.Dictionary Dim datasrv as object Dim oTableinfo as object Set DataSrv = m_Bil

3、lInterface.K3Lib.CreateK3Object(K3ClassTpl.DataSrv) DataSrv.ClassTypeID = lClassTypeID lClassTypeID 需要弹出单据的ID Set oTableInfo = DataSrv.TableInfo Set dctData = DataSrv.GetEmptyBill 然后将当前单据数据包中需要的数据填充到dctdata的对应字段 在以上语句执行后,dctdata(“page2”)里只有一行表结构(即表体只有一行) 赋表头的值 dctData(Page1)(oTableinfo(map)(FText)(F

4、FLD) = m_BillInterface.GetFieldValue(FText) dctData(Page1)(oTableinfo(map)(FDeptID)(FFLD) = m_BillInterface.GetFieldValue(FDeptID, -1, Enu_ValueType_FFLD) dctData(Page1)(oTableinfo(map)(FDeptID)(FFND) = m_BillInterface.GetFieldValue(FDeptID, -1, Enu_ValueType_FFND) dctData(Page1)(oTableinfo(map)(FDe

5、ptID)(FDSP) = m_BillInterface.GetFieldValue(FDeptID, -1, Enu_ValueType_FDSP) 赋表体的值 Dim oPage2 As Object For i = 1 To m_BillInterface.Data(Page2).UBound - 1 Set oPage2 = dctData(Page2)(1).CloneAll dctData(Page2).Add oPage2 添加到 dcData dctData(Page2)(i + 1)(oTableinfo(map)(FIndex2)(FFLD) = i + 1 更改分录号

6、Next For i = 1 To m_BillInterface.Data(Page2).UBound 物料 FItemID dctData(Page2)(i)(oTableinfo(map)( FItemID )(FFLD) = m_BillInterface.GetFieldValue(FItemID , i, Enu_ValueType_FFLD) dctData(Page2)(i)(oTableinfo(map)( FItemID )(FDSP) = m_BillInterface.GetFieldValue(FItemID , i, Enu_ValueType_FDSP) dctD

7、ata(Page2)(i)(oTableinfo(map)( FItemID )(FFND) = m_BillInterface.GetFieldValue(FItemID , i, Enu_ValueType_FFND) 物料名称 fbaseproperty dctData(page2)(i)(oTableinfo(map)(fbaseproperty)(FFLD) = m_BillInterface.GetFieldValue(fbaseproperty, i, Enu_ValueType_FFLD) dctData(Page2)(i)(oTableinfo(map)(fbaseprope

8、rty)(FDSP) = m_BillInterface.GetFieldValue(fbaseproperty, i, Enu_ValueType_FDSP) dctData(Page2)(i)(oTableinfo(map)(fbaseproperty)(FFND) = m_BillInterface.GetFieldValue(fbaseproperty, i, Enu_ValueType_FFND) 计量单位 FUnitID dctData(Page2)(i)(oTableinfo(map)( FUnitID )(FFLD) = m_BillInterface.GetFieldValu

9、e(FUnitID , i, Enu_ValueType_FFLD) dctData(Page2)(i)(oTableinfo(map)( FUnitID )(FDSP) = m_BillInterface.GetFieldValue(FUnitID , i, Enu_ValueType_FDSP) dctData(Page2)(i)(oTableinfo(map)( FUnitID )(FFND) = m_BillInterface.GetFieldValue(FUnitID , i, Enu_ValueType_FFND) 数量 FQty dctData(Page2)(i)(oTablei

10、nfo(map)(FQty)(FFLD) = m_BillInterface.GetFieldValue(fqty, i, Enu_ValueType_FFLD) Next Set obj = CreateObject(K3SingleClassBill.ClassInfoManager) With obj .datasrv = datasrv .ISCheckRight = True .Show , , , dctData End With3、 如何在插件中实现选单的功能?调用Bos单据m_BillInterface.BillCtl.DoSelBill lClassTypeID (原单的Cl

11、assTypeID)调用工业单据m_BillInterface.BillCtl.DoSelOldBill lClassTypeID (原单的ClassTypeID)4、 在插件中以新增、修改和查看方式打开另一单据 * 功能:显示BOS单据,显示的方式为新增、修改和浏览参数:lClassTypeID显示BOS单据的ID* Private Sub ShowBill(ByVal lClassTypeID As Long) Dim oDataSrv As Object Dim oBill As Object On Error GoTo err_ctr Set oDataSrv = m_BillInte

12、rface.K3Lib.CreateK/3Object(K3ClassTpl.DataSrv)oDataSrv.ClassTypeID = lClassTypeID Set oBill = CreateObject(K3SingleClassBill.ClassInfoManager)With oBill .DataSrv = oDataSrv .ISNetControl = True .ISCheckRight = True .Show * Show 参数类型 第一个参数 Optional ByVal lID As Long = 0 ;描述修改或查看的单据ID 第二个参数 Optional

13、ByVal bShowGroup As Boolean = False ;如是基础资料时,是否显示分组 第三个参数 Optional ByVal BillStatus As Long = Enu_BillStatus_New ;显示方式 0查看;1新增;2修改 第四个参数 Optional ByVal dctData As KFO.Dictionary 单据初始值 * End With Set oDataSrv = Nothing Set oBill = Nothing Exit Suberr_ctr:Set oDataSrv = Nothing Set oBill = NothingEnd

14、Sub5、 显示BOS序时簿并返回选中的值* 功能:显示BOS序时簿并返回选中的值参数:lClassTypeID显示BOS单据的ID* Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As ObjectDim objLookup As ObjectOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK3Object(K3ClassTpl.DataSrv)oDataSrv.ClassTypeID =

15、lClassTypeIDIf oDataSrv.showfilter Then Set objLookup = CreateObject(K3ClassLookUp.BillLookUp) objLookup.ClassTypeID = lClassTypeID Set objLookup.DataSrv = oDataSrv objLookup.Lookup Set ShowListByReturn = objLookup.VectReturn End IfSet oDataSrv = NothingSet objLookup = NothingExit Functionerr_ctr:Se

16、t oDataSrv = NothingSet objLookup = NothingEnd Function6、 如何在序事簿中得到选中行的记录集值?Dim vectSelect as kfo.vectorDim rs as adodb.recordsetSet vectSelect=m_Listinterface. GetSelectedBillInfoSet rs=m_Listinterface.datasrv. GetBillDetail(vectSelect(1)(FID)7、 将当前单据转化为另一单据,并无界面保存数据 *功能:将当前单据转化为另一单据,并无界面保存数据参数:lCl

17、assTypeID显示BOS单据的ID* Private Sub NoUISaveBill(ByVal lClassTypeID As Long) Dim oDataSrv As ObjectDim oTableInfo As ObjectDim oBill As ObjectDim oData As ObjectDim oSrv As ObjectDim oPage2 As ObjectDim i As LongOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK3Object(K3ClassTpl.DataSrv

18、)oDataSrv.ClassTypeID = lClassTypeIDSet oTableInfo = oDataSrv.TableInfoSet oData = oDataSrv.GetEmptyBillFor i = 1 To m_BillInterface.Data(Page2).UBound - 1 Set oPage2 = oData(Page2)(1).CloneAll oData(Page2).Add oPage2 添加到 dcData oData(Page2)(i + 1)(_-0001_FIndex2)(FFLD) = i + 1 更改分录号NextFor i = 1 To

19、 m_BillInterface.Data(Page2).UBound oData(Page2)(i)(oTableInfo(map)(FItemID)(FFLD) = m_BillInterface.GetFieldValue(FItemID, i, Enu_ValueType_FFLD) oData(Page2)(i)(oTableInfo(map)(FItemID)(FFND) = m_BillInterface.GetFieldValue(FItemID, i, Enu_ValueType_FFND) oData(Page2)(i)(oTableInfo(map)(FItemID)(F

20、DSP) = m_BillInterface.GetFieldValue(FItemID, i, Enu_ValueType_FDSP) Next Set oSrv = CreateObject(K3MClass.BillUpdate) i = oSrv.Save(MMTS.PropsString, oDataSrv.ClassType, oDataSrv.ClassTypeEntry, oDataSrv.TableInfo, oData, oDataSrv.dctLink)Set oDataSrv = NothingSet oBill = Nothing Exit Suberr_ctr: M

21、sgBox Err.DescriptionSet oDataSrv = NothingSet oBill = NothingEnd Sub【备注】1、K/3 BOS保存方法Save的参数描述:Public Function Save(ByVal sDsn As String, _ ByVal dctClassType As KFO.Dictionary, _ ByVal vctClassTypeEntry As KFO.Vector, _ ByVal dctTableinfo As KFO.Dictionary, _ ByRef dctData As KFO.Dictionary, _ ByV

22、al dctLinks As KFO.Dictionary) As Long/*/*描述:单据保存/*参数:/* dctClassType KFO.Dictionary 单据整体信息模板/* dctData KFO.Dictionary 单据数据包/* dctLink KFO.Dictionary 选单关系模板,无选单为Nothing/* dctTableInfo KFO.Dictionary 单据字段模板信息/* sDsn String K/3标准数据库连接串/* vctClassTypeEntry KFO.Vector 单据体模板信息/*备注:/*/2、使用此方法时插件要添加MMTS。8、

23、 如何在插件中获取当前系统字符连接串?一、连接串获取方式:(注意不支持调试,调试的话可以用实际连接串代替)Private Declare Function GetCurrentProcessId Lib kernel32 Alias GetCurrentProcessID () As Long 获取连接串Public Function GetPropsString() As String Dim lProc As Long Dim spmMgr As Object lProc = GetCurrentProcessId Set spmMgr = CreateObject(PropsMgr.ShareProps)GetPropsString = spmMgr.GetProperty(lProc, PropsString) End Function 二、 需要申请MMTS.bas的源代码,还需要申请ICKDListener的接口。另外,如果需要调试程序,就还需要申请KDMain的源代码。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1