收藏 分销(赏)

K3BOS插件开发常见技巧.doc

上传人:pc****0 文档编号:9011035 上传时间:2025-03-11 格式:DOC 页数:7 大小:64KB 下载积分:10 金币
下载 相关 举报
K3BOS插件开发常见技巧.doc_第1页
第1页 / 共7页
K3BOS插件开发常见技巧.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
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, vbButtonFace End With Set oBand = 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_BillInterface.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"))("FFLD") = 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")("FDeptID"))("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 '更改分录号 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) dctData("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")("fbaseproperty"))("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.GetFieldValue("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)(oTableinfo("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 With 3、 如何在插件中实现选单的功能? 调用Bos单据 m_BillInterface.BillCtl.DoSelBill lClassTypeID '(原单的ClassTypeID) 调用工业单据 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_BillInterface.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 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 Sub err_ctr: Set oDataSrv = Nothing Set oBill = Nothing End Sub 5、 显示BOS序时簿并返回选中的值 '******************************************** '功能:显示BOS序时簿并返回选中的值 '参数:lClassTypeID—显示BOS单据的ID ' '******************************************** Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As Object Dim objLookup As Object On Error GoTo err_ctr Set oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeID If oDataSrv.showfilter Then Set objLookup = CreateObject("K3ClassLookUp.BillLookUp") objLookup.ClassTypeID = lClassTypeID Set objLookup.DataSrv = oDataSrv objLookup.Lookup Set ShowListByReturn = objLookup.VectReturn End If Set oDataSrv = Nothing Set objLookup = Nothing Exit Function err_ctr: Set oDataSrv = Nothing Set objLookup = Nothing End Function 6、 如何在序事簿中得到选中行的记录集值? Dim vectSelect as kfo.vector Dim rs as adodb.recordset Set vectSelect=m_Listinterface. GetSelectedBillInfo Set rs=m_Listinterface.datasrv. GetBillDetail(vectSelect(1)("FID")) 7、 将当前单据转化为另一单据,并无界面保存数据 '******************************************** '功能:将当前单据转化为另一单据,并无界面保存数据 '参数:lClassTypeID—显示BOS单据的ID '******************************************** Private Sub NoUISaveBill(ByVal lClassTypeID As Long) Dim oDataSrv As Object Dim oTableInfo As Object Dim oBill As Object Dim oData As Object Dim oSrv As Object Dim oPage2 As Object Dim i As Long On Error GoTo err_ctr Set oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeID Set oTableInfo = oDataSrv.TableInfo Set oData = oDataSrv.GetEmptyBill For 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 '更改分录号 Next For i = 1 To 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"))("FDSP") = 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 = Nothing Set oBill = Nothing Exit Sub err_ctr: MsgBox Err.Description Set oDataSrv = Nothing Set oBill = Nothing End 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, _ ' ByVal 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、 如何在插件中获取当前系统字符连接串? 一、连接串获取方式:(注意不支持调试,调试的话可以用实际连接串代替) 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的源代码。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服