金蝶K3 BOS插件開發(fā)常見技巧
《金蝶K3 BOS插件開發(fā)常見技巧》由會員分享,可在線閱讀,更多相關(guān)《金蝶K3 BOS插件開發(fā)常見技巧(7頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、1、 如何在工具欄上添加多級審核的按鈕? 在m_BillInterface_MenuBarInitialize事件里添加如下代碼即可。 Set oTool = m_BillInterface.MenuBar.BOSTools("mnuEditMultiCheck") With oTool .Caption = "多級審核" .ToolTipText = "多級審核" .Description = "多級審核" .BeginGroup = False .ToolPicture = App.Path + "\Checker.bmp"
2、 .SetPicture 0, vbButtonFace End With Set oBand = oMenuBar.BOSBands("BandToolBar") oBand.BOSTools.InsertBefore "mnuFilePrint", oTool 將菜單對象插入指定工具欄 2、 如何在顯示一張Bos單據(jù)的同時(shí)給它賦值? 要想在顯示Bos單據(jù)的同時(shí)給它賦值,關(guān)鍵是在顯示前要購建m_Billinterface的data包,這樣在顯示這張同據(jù)的時(shí)候,程序會解析data包,并將里面的值賦到單據(jù)界面上來。 Dim dctData As kfo.Dictionary
3、 Dim datasrv as object Dim oTableinfo as object Set DataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv") DataSrv.ClassTypeID = lClassTypeID lClassTypeID 需要彈出單據(jù)的ID Set oTableInfo = DataSrv.TableInfo Set dctData = DataSrv.GetEmptyBill 然后將當(dāng)前單據(jù)數(shù)據(jù)包中需
4、要的數(shù)據(jù)填充到dctdata的對應(yīng)字段 在以上語句執(zhí)行后,dctdata(“page2”)里只有一行表結(jié)構(gòu)(即表體只有一行) 賦表頭的值 dctData("Page1")(oTableinfo("map")("FText"))("FFLD") = m_BillInterface.GetFieldValue("FText") dctData("Page1")(oTableinfo("map")("FDeptID"))("FFLD") = m_BillInterface.GetFieldValue("FDeptID", -1,
5、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 A
6、s 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
7、 = 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.Ge
8、tFieldValue("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_BillInter
9、face.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.GetFieldV
10、alue("fbaseproperty", i, Enu_ValueType_FFND) 計(jì)量單位 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.GetFiel
11、dValue("FUnitID ", i, Enu_ValueType_FDSP) dctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FFND") = m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FFND) 數(shù)量 FQty dctData("Page2")(i)(oTableinfo("map")("FQty"))("FFLD") = m_BillInterface.GetFieldValue("fqty"
12、, i, Enu_ValueType_FFLD) Next Set obj = CreateObject("K3SingleClassBill.ClassInfoManager") With obj .datasrv = datasrv .ISCheckRight = True .Show , , , dctData End With 3、 如何在插件中實(shí)現(xiàn)選單的功能? 調(diào)用Bos單據(jù) m_BillInterface.BillCtl.DoSelBill lClas
13、sTypeID (原單的ClassTypeID) 調(diào)用工業(yè)單據(jù) m_BillInterface.BillCtl.DoSelOldBill lClassTypeID (原單的ClassTypeID) 4、 在插件中以新增、修改和查看方式打開另一單據(jù) ******************************************** 功能:顯示BOS單據(jù),顯示的方式為新增、修改和瀏覽 參數(shù):lClassTypeID—顯示BOS單據(jù)的ID ******************************************** Private Sub
14、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.Class
15、InfoManager") With oBill .DataSrv = oDataSrv .ISNetControl = True .ISCheckRight = True .Show ********************** Show 參數(shù)類型 第一個(gè)參數(shù) Optional ByVal lID As Long = 0 ;描述修改或查看的單據(jù)ID 第二個(gè)參數(shù) Optional ByVal bShowGroup As Boolean = False ;如是基礎(chǔ)資料時(shí),是否顯示分組 第三個(gè)參數(shù) Optional ByVa
16、l BillStatus As Long = Enu_BillStatus_New ;顯示方式 0—查看;1—新增;2—修改 第四個(gè)參數(shù) Optional ByVal dctData As KFO.Dictionary 單據(jù)初始值 ********************** End With Set oDataSrv = Nothing Set oBill = Nothing Exit Sub err_ctr: Set oDataSrv = Nothing Set oBill = Nothing End Sub 5、 顯示BOS序
17、時(shí)簿并返回選中的值 ******************************************** 功能:顯示BOS序時(shí)簿并返回選中的值 參數(shù):lClassTypeID—顯示BOS單據(jù)的ID ******************************************** Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As Object Dim objLookup
18、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.Da
19、taSrv = 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 kf
20、o.vector Dim rs as adodb.recordset Set vectSelect=m_Listinterface. GetSelectedBillInfo Set rs=m_Listinterface.datasrv. GetBillDetail(vectSelect(1)("FID")) 7、 將當(dāng)前單據(jù)轉(zhuǎn)化為另一單據(jù),并無界面保存數(shù)據(jù) ******************************************** 功能:將當(dāng)前單據(jù)轉(zhuǎn)化為另一單據(jù),并無界面保存數(shù)據(jù) 參數(shù):lClassTypeID—顯示BOS單據(jù)的ID ********
21、************************************ 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
22、_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
23、 添加到 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)
24、(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")
25、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的
26、參數(shù)描述: 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, _
27、 ByVal dctLinks As KFO.Dictionary) As Long /********************************************************************/ /*描述:單據(jù)保存 /*參數(shù): /*@ dctClassType KFO.Dictionary 單據(jù)整體信息模板 /*@ dctData KFO.Dictionary 單據(jù)數(shù)據(jù)包 /*@ dctLink KFO.Dictionary 選單關(guān)系模板,無選單為Nothing /*@ dctTableInfo KFO.Dict
28、ionary 單據(jù)字段模板信息 /*@ sDsn String K/3標(biāo)準(zhǔn)數(shù)據(jù)庫連接串 /*@ vctClassTypeEntry KFO.Vector 單據(jù)體模板信息 /*備注: /********************************************************************/ 2、使用此方法時(shí)插件要添加MMTS。 8、 如何在插件中獲取當(dāng)前系統(tǒng)字符連接串? 一、連接串獲取方式:(注意不支持調(diào)試,調(diào)試的話可以用實(shí)際連接串代替) Private Declare Function GetCurrentProcessId Lib "k
29、ernel32" 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的接口。另外,如果需要調(diào)試程序,就還需要申請KDMain的源代碼。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案