金蝶KWISE單據(jù)開發(fā)知識點_第1頁
金蝶KWISE單據(jù)開發(fā)知識點_第2頁
金蝶KWISE單據(jù)開發(fā)知識點_第3頁
金蝶KWISE單據(jù)開發(fā)知識點_第4頁
金蝶KWISE單據(jù)開發(fā)知識點_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、概述單據(jù)二次開發(fā)是針對現(xiàn)目前單據(jù)的一些功能無法滿足一些客戶的特殊要求,同時分公司又有能力進(jìn)行 二次開發(fā)而提出的,這樣既可以在現(xiàn)有的系統(tǒng)不做變動的情況下面滿足用戶的需求,同時也增強了系統(tǒng)的 穩(wěn)定性。注意:本篇所介紹所用到的動態(tài)連接庫名為:K3BillTransfer.dll通過該說明文檔,你可以了解到1.如何通過 1.如何通過 K3BillTransfer組件在錄單過程中對單據(jù)上各項目加以控制.如何通過 .如何通過 K3BillTransfer.如何通過 K3BillTransfer組件實現(xiàn)自定義功能菜單。組件控制數(shù)據(jù)的保存。4.應(yīng)用示例該文檔閱讀的適用對象需要在K/3工業(yè)供需鏈系統(tǒng)單據(jù)上進(jìn)行二

2、次開發(fā)的開發(fā)者。屬性Property Cnnstring As String當(dāng)前數(shù)據(jù)庫的 MMTS.PropsString連接串。Property SystemName As String當(dāng)前系統(tǒng)名稱。Property LastInfo As String最后一次系統(tǒng)返回的各種信息Property BillForm As Object整個單據(jù)窗體對象。可通過該對象訪問單據(jù)上的任何一個對象,包括控件,菜單。共有的方法有:InsertRow(),在Grid的當(dāng)前行追加一行,它沒有參數(shù)。Property BillFunc as Object代表單據(jù)對象。目前沒什么用途。Property Head A

3、s Object單據(jù)表頭控件,是一個KDText控件數(shù)組Property Grid As Object單據(jù)分錄控件,為 FpSpread控件Property SumGrid As Object單據(jù)分錄合計控件,為FpSpread控件Property HeadCtl As Variant對應(yīng)表頭控件數(shù)組,記錄每個表頭項目各屬性的數(shù)組如果要改變HeadCtl中的某個屬性值,需先對 HeadCtl做一個備份,然后修改此備份的相應(yīng)屬性值,再將此備份賦值給HeadCtl。Property EntryCtl As Variant對應(yīng)分錄各列,記錄每個分錄列各屬性的數(shù)組如果要改變EntryCtl中的某個屬性

4、值,需先對EntryCtl做一個備份,然后修改此備份的相應(yīng)屬性值,再將此備份賦值給EntryCtl。Property SaveVect As KFO.Vector二次開發(fā)外部數(shù)據(jù)存取接口。在錄單過程中,用戶可將某些數(shù)據(jù)保存在此Vector中,在單據(jù)保存時,再通過二次開發(fā)中間層組件,將此 Vector中的數(shù)據(jù)保存到指定位置。SaveVect.Item(1)為一個 KFO.Dictionary 對象該對象包含以下四個系統(tǒng)數(shù)據(jù)SaveVect.Item(1).Value(FInterID):單據(jù)內(nèi)碼SaveVect.Item(1).Value(FTransType):單據(jù)事務(wù)類型SaveVect.I

5、tem(1).Value(ISRedBill):是否紅字單據(jù)SaveVect.Item(1).Value(BillChecked):是否審核。方法. Function AddUserMenuItem(ByVal Caption As String, ByVal RootMenuCaption AsString = )說明:添加一個用戶自定義菜單項,系統(tǒng)一共預(yù)設(shè)了五個菜單項供二次開發(fā)使用參數(shù):Caption:菜單名稱RootMenuCaption:根菜單名稱。缺省為 自定義菜單”Function GetGridText(ByVal Row As Long, ByVal Col As Long)

6、As String 說明:獲取分錄某單元格的值參數(shù):Row:分錄行Col:分錄列Function GetHeadNumber(ByVal CtlIndex As Long) As String說明:獲取表頭某項的代碼參數(shù):CtlIndex:表頭控件索引Function GetHeadText(ByVal CtlIndex As Long) As String說明:獲取表頭某項的文本參數(shù):CtlIndex:表頭控件索引Function GetSumGridText(ByVal Row As Long, ByVal Col As Long) As String說明:獲取合計行某列的值參數(shù):Row:

7、行。一般為1Col:分錄列Function SetGridText(ByVal Row As Long, ByVal Col As Long, ByVal Value, ByValInterID As Long = 0, ByVal sName As String = ) As Boolean說明:設(shè)置分錄某單元格的值,當(dāng)分錄為查找類型時,會把相應(yīng)的信息一起攜帶到相應(yīng)的位置,如當(dāng)為物料代碼時,它會攜帶物料的一些基本信息物料名稱等。參數(shù):Row:分錄行Col:分錄列Row:分錄行Col:分錄列Value:設(shè)置的值。如果該單元格是查找類型的,InterID:暫未使用sName:暫未使用7. Fun

8、ction SetHead(ByVal Index As Long, ByVal sName As String = ) As Boolean 說明:設(shè)置表頭某項的值參數(shù):Index:表頭控件索引Value:設(shè)置的值。如果該表頭項是查找類型的,InterID:暫未使用sName:暫未使用Value應(yīng)設(shè)置為代碼。ByVal Value, ByVal InterlD As Long = 0,Value應(yīng)設(shè)置為代碼。8. Function SetSumGridText(ByVal Row As Long, ByVal Col As Long, ByVal Value) As Boolean說明:設(shè)置

9、分錄合計某列的值參數(shù):Row:分錄行。一般為1Col:分錄列Value:設(shè)置的值。用戶可實現(xiàn)自己功能的事件. Public Event BillInitialize()單據(jù)初始化完成時激發(fā)該事件. Public Event BillTerminate()單據(jù)卸載完成時激發(fā)該事件. Public Event UserMenuClick(ByVal Index As Long, ByVal Caption As String) 當(dāng)點擊用戶自定義的菜單時激發(fā)這個事件。參數(shù):Index:表示第幾個菜單、由添加菜單的先后順序決定,Caption:菜單項的標(biāo)題,如何添加自定義菜單請參見方法AddUserM

10、enuItem. Public Event LeveCell(ByVal Col As Long, ByVal Row As Long, _ByVal NewCol As Long, ByVal NewRow As Long, Cancel As Boolean) 當(dāng)離開分錄的一個單元格的時候激發(fā)這個事件 參數(shù):Col分錄的要離開列Row分錄的要離開行NewCol新的列NewRow新的行Cancel是否取消. Public Event HeadChange(ByVal CtlIndex As Long, ByVal Value As Variant, bNewBill As Boolean,

11、Cancel As Boolean)當(dāng)表頭的一個項目改變時激發(fā)這個事件參數(shù):ctlIndex表頭字段索引Value當(dāng)前值bNewBill是否是新增單據(jù)Cancel是否取消. Public Event GridChange(ByVal Col As Long, ByVal Row As Long, ByVal Value AsVariant, ByVal bNewBill As Boolean, Cancel As Boolean)當(dāng)表體的一個項目改變時激發(fā)這個事件參數(shù):Col分錄的當(dāng)前列Row分錄的當(dāng)前行Value 當(dāng)前值bNewBill是否是新增單據(jù)Cancel是否取消. Public Ev

12、ent BeforGridLookUp(ByValRow As Long, ByVal Col As Long,nLookUpClsID As Long, Cancel As Boolean)在分錄執(zhí)行查找功能之前激發(fā)這個事件參數(shù):Col分錄的當(dāng)前列Row分錄的當(dāng)前行nLookUpClsID當(dāng)前查詢的資料類型,Cancel是否取消. Public Event EndGridLookUp(ByValRow As Long, ByVal Col As Long,nLookUpClsID As Long)在分錄完成查找功能之后激發(fā)這個事件參數(shù):Col分錄的當(dāng)前列Row分錄的當(dāng)前行nLookUpCls

13、ID當(dāng)前查詢的資料類型. Public Event BeforHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)ByValByValByVal在表頭的一個項目執(zhí)行查找功能之前激發(fā)這個事件ByValByValByValctllndex表頭字段索引nLookUpClsID當(dāng)前查詢的資料類型Cancel是否取消. Public Event EndHeadLookUp(ByVal Ctllndex As Long, ByVal nLookUpClsID As Long)在表頭的一個項目完成查

14、找功能之后激發(fā)這個事件,參數(shù):ctlIndex表頭字段索引nLookUpClsID當(dāng)前查詢的資料類型. Public Event BeforeSave(ByVal bNew As Boolean, ByRef ReturnCode As Long) 在單據(jù)執(zhí)行保存功能的時候激發(fā)這個事件參數(shù):bNew表示是否是新增單據(jù)ReturnCode返回參數(shù)-1:失敗,結(jié)束單據(jù)保存;0:成功,繼續(xù)單據(jù)保存1:成功返回,結(jié)束單據(jù)保存. Public Event EndSave(ByVal BillNo As String)在單據(jù)執(zhí)行完成保存功能的時候激發(fā)這個事件參數(shù):BillNo表示單據(jù)的編號. Public

15、 Event LoadBillEnd(ByVal ShowType As Long)在單據(jù)裝載完成的時候激發(fā)這個事件參數(shù):ShowType單據(jù)顯示狀態(tài) 0 .新增1.修改2.查看3.審核. Public Event NewBillEnd()在單據(jù)新增完成的時候激發(fā)這個事件ShowType As Long,. Public Event SetMenuBarCtlPropEnd(ByVal ByVal BillChecked As Boolean)ShowType As Long,在單據(jù)設(shè)置菜單、工具條各屬性完成的時候激發(fā)這個事件 參數(shù):ShowType 單據(jù)顯示狀態(tài) 0 .新增1.修改2.查看3

16、.審核BillChecked單據(jù)是否已被審核. Public Event BeforeFillBillData(ByVal BillTransType As Long, ByValBillInterID As Long)在裝載某張單據(jù)之前激發(fā)這個事件參數(shù):BillTransType單據(jù)事務(wù)類型BillInterID單據(jù)內(nèi)碼. Public Event EndBillFormActive()在顯示單據(jù)之后激發(fā)這個事件. Public Event GridFormat(ByVal Dest As Long, ByVal Col As Long,ByVal Row As Long)在設(shè)置單據(jù)體格式后

17、激發(fā)這個事件參數(shù):DestCol要設(shè)置格式的目標(biāo)列Row要設(shè)置格式的目標(biāo)行. Public Event RefreshControl()在設(shè)置單據(jù)的單元格和單據(jù)頭的鎖定狀態(tài)后激發(fā)這個事件. Public Event BeforeEntrySplit(ByValpCurRow As Long, ByValpSplitCount As Long, ByVal pSplitMethod As Long, ByRef pCancel As Boolean)在單據(jù)的拆分操作之前激發(fā)此事件參數(shù):pCurRow 要拆分的當(dāng)前分錄行pSplitCount拆分的數(shù)目pSplitMethod 拆分分錄位置 0插入

18、式,1追加式 pCancel是否取消拆分 true :取消拆分 false :拆分 21 Public Event AfterEntrySplit(ByValpCurRow As Long, ByVal pSplitCount As Long, ByVal pSplitMethod As Long)在單據(jù)的拆分操作之后激發(fā)此事件參數(shù):pCurRow被拆分的分錄行pSplitCount被拆分成的數(shù)目pSplitMethod拆分分錄位置 0:插入式,1 :追加式. Public Event OnBeforeDelRow(ByVal lRow As Long, ByRef bCancelAs Boo

19、lean)在單據(jù)刪除指定行之前激發(fā)此事件lRow指定要刪除的行bCancel是否取消刪除true :取消刪除false :刪除. Public Event OnAfterDelRow(ByVal lRow As Long, ByRef bCancel AsBoolean)在單據(jù)刪除指定行后激發(fā)此事件lRow被刪除的行 bCancel備用參數(shù),目前沒用到中間層事件如果需要在單據(jù)保存的事務(wù)處理過程中插入一些用戶處理過程,可以編寫一個用戶中間層, 必須包含以下兩個函數(shù):. Public Function BeginSave(ByVal Sdsn As String, ByRef SaveVect A

20、sKFO.Vector, ByRef ReturnMsg As String) As Boolean在單據(jù)保存的事務(wù)處理中,在單據(jù)數(shù)據(jù)保存到數(shù)據(jù)庫之前,調(diào)用該函數(shù)。返回值:FALSE保存事務(wù)終止,返回錯誤。TRUE單據(jù)繼續(xù)保存事務(wù)處理。Sdsn : MMTS.PropsStringSaveVect :二次開發(fā)外部數(shù)據(jù)存取接口。ReturnMsg :失敗時返回的錯誤信息。. Public Function EndSave(ByVal Sdsn As String, ByRef SaveVect As KFO.Vector, ByRef ReturnMsg As String) As Boolea

21、n在單據(jù)保存的事務(wù)處理中,在單據(jù)數(shù)據(jù)保存到數(shù)據(jù)庫之后,調(diào)用該函數(shù)。返回值:FALSE保存事務(wù)終止,返回錯誤。 TRUE單據(jù)繼續(xù)保存事務(wù)處理。參數(shù):Sdsn : MMTS.PropsStringSaveVect :二次開發(fā)外部數(shù)據(jù)存取接口。ReturnMsg :失敗時返回的錯誤信息。應(yīng)用示例第一步、新建組件工程(假設(shè)工程名為 ReDevPro ,包含一個類名為 clsReDev的類模塊), 引用k3BillTransfer 組件和其他你要使用的組件例如ADO-Microsoft ActiveX DataObjects 2.1 Library 等。第二步、在clsReDev類代碼中聲明Privat

22、e WithEvents m_BillTransfer As k3BillTransfer.Bill。第三步、必須添加以下代碼否則系統(tǒng)不能夠傳遞事件到你的組件中Public Sub Show(Byval As Object) Set m_BillTransfer = oEnd Sub第四步、在 m_BillTransfer的各事件中編寫相應(yīng)處理代碼。例如Private Sub m_BillTransfer_BillInitialize()Set cn = New ADODB.Connectioncn.CursorLocation = adUseClientcn.Open m_BillTrans

23、fer.Cnnstring End Sub第五步、編寫完成以后編譯你的工程第六步、在 ICTransactionType 表的 FCheckPro添加你的組件名稱,例如 updateICTransactionType set FcheckPro= ReDevClientObj:ReDevPro.clsReDev where FID=1 ReDevClientObj是關(guān)鍵字,表示后面定義的是二次開發(fā)客戶端組件如果需要在單據(jù)保存的事務(wù)處理過程中插入一些用戶處理過程,則進(jìn)行以下操作.新建中間層組件工程(假設(shè)工程名為 ReDevMPro ,包含一個類名為 clsReDevM 的類 模塊).在clsRe

24、DevM類代碼中定義兩個函數(shù)Public Function BeginSave(ByVal Sdsn As String, ByRef SaveVect As KFO.Vector, ByRef ReturnMsg As String) As BooleanEnd FunctionPublic Function EndSave(ByVal Sdsn As String, ByRef SaveVect As KFO.Vector,ByRef ReturnMsg As String) As BooleanEnd Function.編譯工程,在中間層服務(wù)器組件管理中添加此組件。配置客戶端相應(yīng) VBR

25、文件。.在ICTransactionType 表 的 FCheckPro 添加你的組件名稱,例如 update ICTransactionType set FcheckPro= ReDevMiddleOBJ:ReDevMPro.clsReDevMwhere FID=1 ReDevMiddleOBJ是關(guān)鍵字,表示后面定義的是二次開發(fā)中間層端組件注:如果同時有客戶端和中間層組件,則ICTransactiontypeType 表中的FCheckPro 應(yīng)同 時包含兩個關(guān) 鍵字,例如 update ICTransactionType set FcheckPro= ReDevClientObj:ReDe

26、vPro.clsReDev|ReDevMiddleOBJ:ReDevMPro.clsReDevMwhere FID=1 。具體的應(yīng)用示例見Demo ,在Demo 中說明了如何增加用戶自定義菜單、菜單的響應(yīng)、批量增加數(shù)據(jù)等。關(guān)于HeadCtl、EntryCtl數(shù)組屬性和Head控件數(shù)組、Grid的簡要說明HeadCtlID As Integer 數(shù)組的 Index 與 KDCtl 的 Index 相對應(yīng),(FCtlIndex )Caption As String KDCtl 的 CaptionFontName As String字體FontSize As Integer字體大小FCtlIndex

27、 As Integer控件序號TabIndex As Integer TAB 索弓 I Left As Single 左 Top As Single Width As Single Height As Single Enable As Boolean控件是否 Locked與KDCtl的Locked屬性相對應(yīng)EnableValue As Integer控件在各種狀態(tài)下的可用性:新增、修改、察看、審核、下達(dá)。用一個五位的二進(jìn)制數(shù)表示,可見則對應(yīng)位為1 ,否則為0。常用值:0、31。bPrint As Boolean是否打印Visible As Boolean是否可見VisibleValue As

28、Integer控件在各種狀態(tài)下的可見性:新增、修改、察看、審核、下達(dá)。用一個五位的二進(jìn)制數(shù)表示,可見則對應(yīng)位為1 ,否則為0。常用值:0、31。NeedSave As Boolean該控件的值是否保存RelateOutTbl As Boolean該控件的值是否來自其他表MustInput As Boolean該控件是否必須輸入LookUpCls As Integer如果控件的類型是查找類型的(LookUpCls=ctlLookUp ),則該屬性標(biāo)示查找的類型 -控件的數(shù)據(jù)來源屬性 InterID As Long FInterID As String nterID對應(yīng)的字段名Number As

29、StringFNumber As String Number 對應(yīng)的字段名Name As StringFName As String Name對應(yīng)的字段名-控件的數(shù)據(jù)保存屬性FieldName As String該值保存時對應(yīng)的字段名Vale As String 保存的值(要用 ValType來格式化)Filter As String查找的過濾條件LOCKA As Boolean選單鎖定EntryCtlID As Integer 數(shù)組的 Index 與 KDCtl 的 Index 相對應(yīng),(FCtlIndex )CtlType As E_CtlType 控件的類型(KCtlType)Enabl

30、e As Boolean 控件是否Locked與KDCtl的Locked屬性相對應(yīng)EnableValue As Integer控件在各種狀態(tài)下的可用性:新增、修改、察看、審核、下達(dá)。用一個五位的二進(jìn)制數(shù)表示,可見則對應(yīng)位為1 ,否則為0。常用值:0、31。bPrint As Boolean 是否打印Visible As Boolean 是否可見VisibleValue As Integer控件在各種狀態(tài)下的可見性:新增、修改、察看、審核、下達(dá)。用一個五位的二進(jìn)制數(shù)表示,可見則對應(yīng)位為1 ,否則為0。常用值:0、31。NeedSave As Boolean 該控件的值是否保存RelateOutT

31、bl As Boolean 該控件的值是否來自其他表MustInput As Boolean 該控件是否必須輸入LookUpCls As Integer 如果控件的類型是查找類型的( LookUpCls=ctlLookUp ),則該屬性 標(biāo)示查找的類型NeedCount As Boolean 是否需要合計StatCount As Boolean 是否匯總類字段FCtlIndex As Integer控件序號FCtlOrder As Integer控件順序號RelationID As String 該列相關(guān)聯(lián)的父級列-控件的數(shù)據(jù)來源屬性FInterID As String InterID對應(yīng)的字

32、段名FNumber As String Number 對應(yīng)的字段名FName As String Name對應(yīng)的字段名FilterString As StringDInterID() As String如果該控件是查找類型的,則在該數(shù)組內(nèi)記錄InterID的值,其他的值直接從界面中取得-控件的數(shù)據(jù)保存屬性SaveRule As StringFieldName As String該值保存時對應(yīng)的字段名ValType As E_ValType保存值的數(shù)據(jù)類型SaveValue As E_SaveValue保存何種類型的值(FName、InterID、Number )DName() As StringDNumber() As StringFilter() As StringHeadItemID當(dāng)前數(shù)據(jù)的內(nèi)碼ItemName當(dāng)前數(shù)據(jù)的名稱It

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論