金蝶KWISE单据开发知识点_第1页
金蝶KWISE单据开发知识点_第2页
金蝶KWISE单据开发知识点_第3页
金蝶KWISE单据开发知识点_第4页
金蝶KWISE单据开发知识点_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、概述单据二次开发是针对现目前单据的一些功能无法满足一些客户的特殊要求,同时分公司又有能力进行 二次开发而提出的,这样既可以在现有的系统不做变动的情况下面满足用户的需求,同时也增强了系统的 稳定性。注意:本篇所介绍所用到的动态连接库名为:K3BillTransfer.dll通过该说明文档,你可以了解到1.如何通过 1.如何通过 K3BillTransfer组件在录单过程中对单据上各项目加以控制.如何通过 .如何通过 K3BillTransfer.如何通过 K3BillTransfer组件实现自定义功能菜单。组件控制数据的保存。4.应用示例该文档阅读的适用对象需要在K/3工业供需链系统单据上进行二

2、次开发的开发者。属性Property Cnnstring As String当前数据库的 MMTS.PropsString连接串。Property SystemName As String当前系统名称。Property LastInfo As String最后一次系统返回的各种信息Property BillForm As Object整个单据窗体对象。可通过该对象访问单据上的任何一个对象,包括控件,菜单。共有的方法有:InsertRow(),在Grid的当前行追加一行,它没有参数。Property BillFunc as Object代表单据对象。目前没什么用途。Property Head A

3、s Object单据表头控件,是一个KDText控件数组Property Grid As Object单据分录控件,为 FpSpread控件Property SumGrid As Object单据分录合计控件,为FpSpread控件Property HeadCtl As Variant对应表头控件数组,记录每个表头项目各属性的数组如果要改变HeadCtl中的某个属性值,需先对 HeadCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给HeadCtl。Property EntryCtl As Variant对应分录各列,记录每个分录列各属性的数组如果要改变EntryCtl中的某个属性

4、值,需先对EntryCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给EntryCtl。Property SaveVect As KFO.Vector二次开发外部数据存取接口。在录单过程中,用户可将某些数据保存在此Vector中,在单据保存时,再通过二次开发中间层组件,将此 Vector中的数据保存到指定位置。SaveVect.Item(1)为一个 KFO.Dictionary 对象该对象包含以下四个系统数据SaveVect.Item(1).Value(FInterID):单据内码SaveVect.Item(1).Value(FTransType):单据事务类型SaveVect.I

5、tem(1).Value(ISRedBill):是否红字单据SaveVect.Item(1).Value(BillChecked):是否审核。方法. Function AddUserMenuItem(ByVal Caption As String, ByVal RootMenuCaption AsString = )说明:添加一个用户自定义菜单项,系统一共预设了五个菜单项供二次开发使用参数:Caption:菜单名称RootMenuCaption:根菜单名称。缺省为 自定义菜单”Function GetGridText(ByVal Row As Long, ByVal Col As Long)

6、As String 说明:获取分录某单元格的值参数:Row:分录行Col:分录列Function GetHeadNumber(ByVal CtlIndex As Long) As String说明:获取表头某项的代码参数:CtlIndex:表头控件索引Function GetHeadText(ByVal CtlIndex As Long) As String说明:获取表头某项的文本参数:CtlIndex:表头控件索引Function GetSumGridText(ByVal Row As Long, ByVal Col As Long) As String说明:获取合计行某列的值参数: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说明:设置分录某单元格的值,当分录为查找类型时,会把相应的信息一起携带到相应的位置,如当为物料代码时,它会携带物料的一些基本信息物料名称等。参数:Row:分录行Col:分录列Row:分录行Col:分录列Value:设置的值。如果该单元格是查找类型的,InterID:暂未使用sName:暂未使用7. Fun

8、ction SetHead(ByVal Index As Long, ByVal sName As String = ) As Boolean 说明:设置表头某项的值参数:Index:表头控件索引Value:设置的值。如果该表头项是查找类型的,InterID:暂未使用sName:暂未使用Value应设置为代码。ByVal Value, ByVal InterlD As Long = 0,Value应设置为代码。8. Function SetSumGridText(ByVal Row As Long, ByVal Col As Long, ByVal Value) As Boolean说明:设置

9、分录合计某列的值参数:Row:分录行。一般为1Col:分录列Value:设置的值。用户可实现自己功能的事件. Public Event BillInitialize()单据初始化完成时激发该事件. Public Event BillTerminate()单据卸载完成时激发该事件. Public Event UserMenuClick(ByVal Index As Long, ByVal Caption As String) 当点击用户自定义的菜单时激发这个事件。参数:Index:表示第几个菜单、由添加菜单的先后顺序决定,Caption:菜单项的标题,如何添加自定义菜单请参见方法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) 当离开分录的一个单元格的时候激发这个事件 参数:Col分录的要离开列Row分录的要离开行NewCol新的列NewRow新的行Cancel是否取消. Public Event HeadChange(ByVal CtlIndex As Long, ByVal Value As Variant, bNewBill As Boolean,

11、Cancel As Boolean)当表头的一个项目改变时激发这个事件参数:ctlIndex表头字段索引Value当前值bNewBill是否是新增单据Cancel是否取消. Public Event GridChange(ByVal Col As Long, ByVal Row As Long, ByVal Value AsVariant, ByVal bNewBill As Boolean, Cancel As Boolean)当表体的一个项目改变时激发这个事件参数:Col分录的当前列Row分录的当前行Value 当前值bNewBill是否是新增单据Cancel是否取消. Public Ev

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

13、ID当前查询的资料类型. Public Event BeforHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)ByValByValByVal在表头的一个项目执行查找功能之前激发这个事件ByValByValByValctllndex表头字段索引nLookUpClsID当前查询的资料类型Cancel是否取消. Public Event EndHeadLookUp(ByVal Ctllndex As Long, ByVal nLookUpClsID As Long)在表头的一个项目完成查

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

15、 Event LoadBillEnd(ByVal ShowType As Long)在单据装载完成的时候激发这个事件参数:ShowType单据显示状态 0 .新增1.修改2.查看3.审核. Public Event NewBillEnd()在单据新增完成的时候激发这个事件ShowType As Long,. Public Event SetMenuBarCtlPropEnd(ByVal ByVal BillChecked As Boolean)ShowType As Long,在单据设置菜单、工具条各属性完成的时候激发这个事件 参数:ShowType 单据显示状态 0 .新增1.修改2.查看3

16、.审核BillChecked单据是否已被审核. Public Event BeforeFillBillData(ByVal BillTransType As Long, ByValBillInterID As Long)在装载某张单据之前激发这个事件参数:BillTransType单据事务类型BillInterID单据内码. Public Event EndBillFormActive()在显示单据之后激发这个事件. Public Event GridFormat(ByVal Dest As Long, ByVal Col As Long,ByVal Row As Long)在设置单据体格式后

17、激发这个事件参数:DestCol要设置格式的目标列Row要设置格式的目标行. Public Event RefreshControl()在设置单据的单元格和单据头的锁定状态后激发这个事件. Public Event BeforeEntrySplit(ByValpCurRow As Long, ByValpSplitCount As Long, ByVal pSplitMethod As Long, ByRef pCancel As Boolean)在单据的拆分操作之前激发此事件参数:pCurRow 要拆分的当前分录行pSplitCount拆分的数目pSplitMethod 拆分分录位置 0插入

18、式,1追加式 pCancel是否取消拆分 true :取消拆分 false :拆分 21 Public Event AfterEntrySplit(ByValpCurRow As Long, ByVal pSplitCount As Long, ByVal pSplitMethod As Long)在单据的拆分操作之后激发此事件参数:pCurRow被拆分的分录行pSplitCount被拆分成的数目pSplitMethod拆分分录位置 0:插入式,1 :追加式. Public Event OnBeforeDelRow(ByVal lRow As Long, ByRef bCancelAs Boo

19、lean)在单据删除指定行之前激发此事件lRow指定要删除的行bCancel是否取消删除true :取消删除false :删除. Public Event OnAfterDelRow(ByVal lRow As Long, ByRef bCancel AsBoolean)在单据删除指定行后激发此事件lRow被删除的行 bCancel备用参数,目前没用到中间层事件如果需要在单据保存的事务处理过程中插入一些用户处理过程,可以编写一个用户中间层, 必须包含以下两个函数:. Public Function BeginSave(ByVal Sdsn As String, ByRef SaveVect A

20、sKFO.Vector, ByRef ReturnMsg As String) As Boolean在单据保存的事务处理中,在单据数据保存到数据库之前,调用该函数。返回值:FALSE保存事务终止,返回错误。TRUE单据继续保存事务处理。Sdsn : MMTS.PropsStringSaveVect :二次开发外部数据存取接口。ReturnMsg :失败时返回的错误信息。. Public Function EndSave(ByVal Sdsn As String, ByRef SaveVect As KFO.Vector, ByRef ReturnMsg As String) As Boolea

21、n在单据保存的事务处理中,在单据数据保存到数据库之后,调用该函数。返回值:FALSE保存事务终止,返回错误。 TRUE单据继续保存事务处理。参数:Sdsn : MMTS.PropsStringSaveVect :二次开发外部数据存取接口。ReturnMsg :失败时返回的错误信息。应用示例第一步、新建组件工程(假设工程名为 ReDevPro ,包含一个类名为 clsReDev的类模块), 引用k3BillTransfer 组件和其他你要使用的组件例如ADO-Microsoft ActiveX DataObjects 2.1 Library 等。第二步、在clsReDev类代码中声明Privat

22、e WithEvents m_BillTransfer As k3BillTransfer.Bill。第三步、必须添加以下代码否则系统不能够传递事件到你的组件中Public Sub Show(Byval As Object) Set m_BillTransfer = oEnd Sub第四步、在 m_BillTransfer的各事件中编写相应处理代码。例如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是关键字,表示后面定义的是二次开发客户端组件如果需要在单据保存的事务处理过程中插入一些用户处理过程,则进行以下操作.新建中间层组件工程(假设工程名为 ReDevMPro ,包含一个类名为 clsReDevM 的类 模块).在clsRe

24、DevM类代码中定义两个函数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.编译工程,在中间层服务器组件管理中添加此组件。配置客户端相应 VBR

25、文件。.在ICTransactionType 表 的 FCheckPro 添加你的组件名称,例如 update ICTransactionType set FcheckPro= ReDevMiddleOBJ:ReDevMPro.clsReDevMwhere FID=1 ReDevMiddleOBJ是关键字,表示后面定义的是二次开发中间层端组件注:如果同时有客户端和中间层组件,则ICTransactiontypeType 表中的FCheckPro 应同 时包含两个关 键字,例如 update ICTransactionType set FcheckPro= ReDevClientObj:ReDe

26、vPro.clsReDev|ReDevMiddleOBJ:ReDevMPro.clsReDevMwhere FID=1 。具体的应用示例见Demo ,在Demo 中说明了如何增加用户自定义菜单、菜单的响应、批量增加数据等。关于HeadCtl、EntryCtl数组属性和Head控件数组、Grid的简要说明HeadCtlID As Integer 数组的 Index 与 KDCtl 的 Index 相对应,(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属性相对应EnableValue As Integer控件在各种状态下的可用性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1 ,否则为0。常用值:0、31。bPrint As Boolean是否打印Visible As Boolean是否可见VisibleValue As

28、Integer控件在各种状态下的可见性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1 ,否则为0。常用值:0、31。NeedSave As Boolean该控件的值是否保存RelateOutTbl As Boolean该控件的值是否来自其他表MustInput As Boolean该控件是否必须输入LookUpCls As Integer如果控件的类型是查找类型的(LookUpCls=ctlLookUp ),则该属性标示查找的类型 -控件的数据来源属性 InterID As Long FInterID As String nterID对应的字段名Number As

29、StringFNumber As String Number 对应的字段名Name As StringFName As String Name对应的字段名-控件的数据保存属性FieldName As String该值保存时对应的字段名Vale As String 保存的值(要用 ValType来格式化)Filter As String查找的过滤条件LOCKA As Boolean选单锁定EntryCtlID As Integer 数组的 Index 与 KDCtl 的 Index 相对应,(FCtlIndex )CtlType As E_CtlType 控件的类型(KCtlType)Enabl

30、e As Boolean 控件是否Locked与KDCtl的Locked属性相对应EnableValue As Integer控件在各种状态下的可用性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1 ,否则为0。常用值:0、31。bPrint As Boolean 是否打印Visible As Boolean 是否可见VisibleValue As Integer控件在各种状态下的可见性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1 ,否则为0。常用值:0、31。NeedSave As Boolean 该控件的值是否保存RelateOutT

31、bl As Boolean 该控件的值是否来自其他表MustInput As Boolean 该控件是否必须输入LookUpCls As Integer 如果控件的类型是查找类型的( LookUpCls=ctlLookUp ),则该属性 标示查找的类型NeedCount As Boolean 是否需要合计StatCount As Boolean 是否汇总类字段FCtlIndex As Integer控件序号FCtlOrder As Integer控件顺序号RelationID As String 该列相关联的父级列-控件的数据来源属性FInterID As String InterID对应的字

32、段名FNumber As String Number 对应的字段名FName As String Name对应的字段名FilterString As StringDInterID() As String如果该控件是查找类型的,则在该数组内记录InterID的值,其他的值直接从界面中取得-控件的数据保存属性SaveRule As StringFieldName As String该值保存时对应的字段名ValType As E_ValType保存值的数据类型SaveValue As E_SaveValue保存何种类型的值(FName、InterID、Number )DName() As StringDNumber() As StringFilter() As StringHeadItemID当前数据的内码ItemName当前数据的名称It

温馨提示

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

评论

0/150

提交评论