金蝶K3-WISE单据开发知识点.docx

上传人:李司机 文档编号:6754375 上传时间:2024-01-20 格式:DOCX 页数:11 大小:33.19KB
返回 下载 相关 举报
金蝶K3-WISE单据开发知识点.docx_第1页
第1页 / 共11页
金蝶K3-WISE单据开发知识点.docx_第2页
第2页 / 共11页
金蝶K3-WISE单据开发知识点.docx_第3页
第3页 / 共11页
金蝶K3-WISE单据开发知识点.docx_第4页
第4页 / 共11页
金蝶K3-WISE单据开发知识点.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《金蝶K3-WISE单据开发知识点.docx》由会员分享,可在线阅读,更多相关《金蝶K3-WISE单据开发知识点.docx(11页珍藏版)》请在三一办公上搜索。

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

2、PropertyCnnstringAsString当前数据库的MMTSTropsString连接串。2. PropertySystemNameAsString当前系统名称。3. PropertyLastInfoAsString最后一次系统返回的各种信息4. PropertyBiIIFormAsObject整个单据窗体对象。可通过该对象访问单据上的任何一个对象,包括控件,菜单。共有的方法有:InsertRow(),在Grid的当前行追加一行,它没有参数。5. PropertyBilIFuncasObject代表单据对象。目前没什么用途。6. PropertyHeadAsObject单据表头控件,

3、是一个KDTeXt控件数组7. PropertyGridAsObject单据分录控件,为FPSPread控件8. PropertySumGridAsObject单据分录合计控件,为FpSpread控件9. PropertyHeadCtlAsVariant对应表头控件数组,记录每个表头项目各属性的数组如果要改变HeadCH中的某个属性值,需先对HeadCtI做个备份,然后修改此备份的相应属性值,再将此备份赋值给HeadCt1。10. PropertyEntryCtlAsVariant对应分录各列,记录每个分录列各属性的数组如果要改变EntryCtl中的某个属性值,需先对EntryCU做一个备份,

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

5、l):是否红字单据SaveVect.Item(1).Value(,BilIChecked):是否审核。方法1. FunctionAddUserMenuItem(ByValCaptionAsString,ByValRootMcnuCaptionAsString=,m)说明:添加一个用户自定义菜单项,系统一共预设了五个菜单项供二次开发使用参数:CaPIiOn:菜单名称RoOIMenUCaPtion:根菜单名称。缺省为“自定义菜单”2. FunctionGetGridTeXt(ByValRowAsLong,ByValColAsLong)AsString说明:获取分录某单元格的值参数:Row:分录行C

6、o1:分录列3. FunctionGetHeadNUmber(ByValCtlIndexAsLong)AsString说明:获取表头某项的代码参数:QIIndeX:表头控件索引4. FunctionGetHeadTeXt(ByValCtlIndexAsLong)AsString说明:获取表头某项的文本参数:Clllndex:表头控件索引5. FunctionGetSUmGridTeXt(ByValRowAsLong,ByValColAsLong)AsString说明:获取合计行某列的值参数:Row:行。一般为1Co1:分录列6. FunctionSetGridText(ByValRowAsLo

7、ng,ByVaIColAsLong,ByVaIValue,ByVaIInterIDAsLong=0,ByVaIsNameAsString=AsBoolean说明:设置分录某单元格的值,当分录为查找类型时,会把相应的信息一起携带到相应的位置,如当为物料代码时,它会携带物料的一些基本信息物料名称等。参数:Row:分录行Co1:分录列VaIUe:设置的值。如果该单元格是查找类型的,VaIUe应设置为代码。InterlD:暂未使用SName:暂未使用7. FunctionSetHead(ByValIndexAsLong,ByVaIValue,ByValInterIDAsLong=0J,ByValsNa

8、meAsString=,J)AsBoolean说明:设置表头某项的值参数:Index:表头控件索引ValUe:设置的值。如果该表头项是查找类型的,ValUe应设置为代码。InterlD:暂未使用SName:暂未使用8. FunctionSetSumGridText(ByValRowAsLong,ByValColAsLong,ByVaIValue)AsBoolean说明:设置分录合计某列的值参数:ROW:分录行。一般为1Co1:分录列VaIUe:设置的值。用户可实现自己功能的事件1. PublicEventBillInitializeO单据初始化完成时激发该事件2. PublicEventBiI

9、lTerminateO单据卸载完成时激发该事件3. PublicEventUserMcnuClick(ByValIndexAsLong,ByValCaptionAsString)当点击用户自定义的菜单时激发这个事件。参数:IndeX:表示第几个菜单、由添加菜单的先后顺序决定,CaPlion:菜单项的标题,如何添加自定义菜单请参见方法AddUserMenuItem4. PublicEventLeveCell(ByVaIColAsLong,ByVaIRowAsLong,_ByValNewColAsLong,ByVaiNewRowAsLong,CancelAsBoolean)当离开分录的一个单元格的

10、时候激发这个事件参数:Col分录的要离开列Row分录的要离开行NewCol新的列NewRow新的行Cancel是否取消5. PublicEventHeadChange(ByValCtIIndexAsLong,ByVaIValueAsVariant,ByVaIbNewBillAsBoolean,CancelAsBoolean)当表头的一个项目改变时激发这个事件参数:CtlIndex表头字段索引Value当前值bNewBill是否是新增单据Cancel是否取消6. PublicEventGridChange(ByVa)ColAsLong,ByVaIRowAsLong,ByVaIValueAsVar

11、iant,ByVaIbNewBillAsBoolean,CancelAsBoolean)当表体的一个项目改变时激发这个事件参数:Col分录的当前列ROW分录的当前行Value当前值bNewB川是否是新增单据CanCeI是否取消7. PublicEventBeforGridLookUp(ByVa)RowAsLongzByVaIColAsLong,ByVaIHLookUpCIsIDAsLongzCancelAsBoolean)在分录执行查找功能之前激发这个事件参数:Col分录的当前列ROW分录的当前行LookpClsID当前查询的资料类型,CanCeI是否取消8. PublicEventEndGr

12、idLookUp(ByVa)RowAsLong,ByVaIColAsLongzByVaIHLookUpCIsIDAsLong)在分录完成查找功能之后激发这个事件参数:Col分录的当前列ROW分录的当前行LookpClsID当前查询的资料类型9. PublicEventBeforHeadLookUp(ByVa)CtIIndexAsLong,ByVaInLookUpClsIDAsLongzCancelAsBoolean)在表头的一个项目执行查找功能之前激发这个事件参数:CtllndeX表头字段索引LookpClsID当前查询的资料类型CanCeI是否取消10. PublicEventEndHead

13、LookUp(ByVa)CtIIndexAsLong,ByVaInLookUpClsIDAsLong)在表头的一个项目完成查找功能之后激发这个事件,参数:CtIlndeX表头字段索引LookpClsID当前查询的资料类型11. PublicEventBeforeSave(ByVaIbNewAsBoolean,ByRefReturnCodeAsLong)在单据执行保存功能的时候激发这个事件参数:bNew表示是否是新增单据ReturnCode返回参数失败,结束单据保存;0:成功,继续单据保存1:成功返回,结束单据保存12. PublicEventEndSave(ByVa)BiIINoAsStrin

14、g)在单据执行完成保存功能的时候激发这个事件参数:BilINO表示单据的编号13. PublicEventLoadBillEnd(ByVaIShowTypeAsLong)在单据装载完成的时候激发这个事件参数:ShowType单据显示状态0.新增1.修改2,查看3.审核14. PublicEventNewBiIIEndO在单据新增完成的时候激发这个事件15. PublicEventSetMenuBarCtlPropEnd(ByVaIShowTypeAsLong,ByVaIBiIICheckedAsBoolean)在单据设置菜单、工具条各属性完成的时候激发这个事件参数:ShowType单据显示状态

15、0.新增1.修改2,查看3.审核BiIIChecked单据是否已被审核16. PublicEventBeforeFillBillData(ByValBiIITransTypeAsLong,ByVaIBiIIInterIDAsLong)在装载某张单据之前激发这个事件参数:BiIITransType单据事务类型BilIInteHD单据内码17. PublicEventEndBiIIFormActiveO在显示单据之后激发这个事件18. PublicEventGridFormat(ByVaIDestAsLong,ByVaIColAsLong,ByVaIRowAsLong)在设置单据体格式后激发这个事

16、件参数:DestCol要设置格式的目标列Row要设置格式的目标行19. PublicEventRefreshControIO在设置单据的单元格和单据头的锁定状态后激发这个事件20. PublicEventBeforeEntrySplit(ByValpCurRowAsLong,ByVaIpSplitCountAsLong,ByVaIpSplitMethodAsLong,ByRefpCancelAsBoolean)在单据的拆分操作之前激发此事件参数:PCurRow要拆分的当前分录行PSpIitCount拆分的数目PSpIitMethod拆分分录位置0插入式,1追加式PCanceI是否取消拆分tru

17、e:取消拆分false:拆分21. .PublicEventAfterEntrySplit(ByVaIpCurRowAsLong,ByVaIpSplitCountAsLong,ByVaIpSplitMethodAsLong)在单据的拆分操作之后激发此事件参数:pCurRow被拆分的分录行pSplitCount被拆分成的数目pSplitMethod拆分分录位置0:插入式,1:追加式22. PublicEventOnBeforeDelRow(ByValIRowAsLong,ByRefbCancelAsBoolean)在单据删除指定行之前激发此事件参数:IRow指定要删除的行bCancel是否取消删

18、除true:取消删除false:删除23. PublicEventOnAfterDelRow(ByVaIIRowAsLong,ByRefbCancelAsBoolean)在单据删除指定行后激发此事件参数:IRow被删除的行bCancel备用参数,目前没用到中间层事件如果需要在单据保存的事务处理过程中插入一些用户处理过程,可以编写一个用户中间层,必须包含以下两个函数:1. PublicFunctionBeginSave(ByVaISdsnAsString,ByRefSaveVectAsKFO-VectorzByRefReturnMsgAsString)AsBoolean在单据保存的事务处理中,在

19、单据数据保存到数据库之前,调用该函数。返回值:FALSE保存事务终止,返回错误。TRUE单据继续保存事务处理。参数:Sdsn:MMTS.PropsStringSaveVect:二次开发外部数据存取接口。ReturnMsg:失败时返回的错误信息。2. PublicFunctionEndSave(ByValSdsnAsString,ByRefSaveVectAsKFO.VectorzByRefReturnMsgAsString)AsBoolean在单据保存的事务处理中,在单据数据保存到数据库之后,调用该函数。返回值:FALSE保存事务终止,返回错误。TRUE单据继续保存事务处理。参数:Sdsn:M

20、MTS.PropsStringSaveVect:二次开发外部数据存取接口,ReturnMsg:失败时返回的错误信息。应用示例第一步、新建组件工程(假设工程名为ReDeVPrO,包含一个类名为ClsReDev的类模块),引用k3BillTransfer组件和其他你要使用的组件例如ADO-MicrosoftActiveXDataObjects2.1Library等。第二步、在ClSReDeV类代码中声明PrivateWithEventsm_Bil!TransferAsk3BillTransfer.BilL第三步、必须添加以下代码否则系统不能够传递事件到你的组件中PublicSubShow(Byva

21、lAsObject)Setm_BillTransfer=oEndSub第四步、在m_BillTransfer的各事件中编写相应处理代码。例如PrivateSubm_BillTransfer_BillInitialize()Setcn=NewADODB.Connectioncn.CursorLocation=adUseClientcn.0penm_BillTransfer.CnnstringEndSub第五步、编写完成以后编译你的工程第六步、在ICTQnsactionType表的FCheckPro添加你的组件名称,例如updateICTransactionTypesetFcheckPro=ReD

22、evCIientObj:ReDevPro.clsReDev,whereFID=IReDevCIientObj是关键字,表示后面定义的是二次开发客户端组件如果需要在单据保存的事务处理过程中插入一些用户处理过程,则进行以下操作1 .新建中间层组件工程(假设工程名为ReDevMPro,包含一个类名为ClsReDevM的类模块)2 .在ClsReDevM类代码中定义两个函数PublicFunctionBeginSave(ByVa)SdsnAsString,ByRefSaveVectAsKFO.Vector,ByRefReturnMsgAsString)AsBooleanEndFunctionPubli

23、cFunctionEndSave(ByValSdsnAsString,ByRefSaveVectAsKFo.Vector,ByRefReturnMsgAsString)AsBooleanEndFunction3 .编译工程,在中间层服务器组件管理中添加此组件。配置客户端相应VBR文件。4 .在ICTranSaCtiOnTyPe表的FCheckPro添加你的组件名称,例如updateICTransactionTypesetFcheckPro=5ReDevMiddIeOBJ:ReDevMPro.ClsReDevM,whereFID=IReDevMiddIeOBJ是关键字,表示后面定义的是二次开发中

24、间层端组件注:如果同时有客户端和中间层组件,则ICTranSaCtiOntyPeTyPe表中的FCheckPro应同时包含两个关键字,例如updateICTransactionTypesetFcheckPro=ReDevCIientObj:ReDevPro.ClsReDevReDevMiddIeOBJ:ReDevMPro.clsReDevM,whereFID=Io具体的应用示例见Demo,在DemO中说明了如何增加用户自定义菜单、菜单的响应、批量增加数据等。关于HeadCtI、Entryetl数组属性和Head控件数组、Grid的简要说明HeadCtlIDAsInteger数组的IndeX与K

25、DCtI的Index相对应,(FCtIIndex)CaptionAsStringKDCtl的CaptionFontNameAsString字体FontSizeAsInteger字体大小FCtIIndexAsInteger控件序号TabindexAsIntegerTAB索弓I1.eftAsSingle左TopAsSingleWidthAsSingleHeightAsSingleEnableAsBoolean控件是否LockedKDCtI的Locked属性相对应EnabIeVaIueAsInteger控件在各种状态下的可用性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1

26、,否则为0。常用值:0、31.bPrintAsBoolean是否打印VisibleAsBoolean是否可见VisibIeVaIueAsInteger控件在各种状态下的可见性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1,否则为0。常用值:0、31。NeedSaveAsBoolean该控件的值是否保存ReIateOutTbIAsBoolean该控件的值是否来自其他表MustlnputAsBoolean该控件是否必须输入1.ookUpCIsAsInteger如果控件的类型是查找类型的(LookUPClS=CtILookUp),则该属性标示查找的类型一控件的数据来源属性

27、InterIDAsLongFInterIDAsStringnterlD对应的字段名NumberAsStringFNumberAsStringNumber对应的字段名NameAsStringFNameAsStringName对应的字段名控件的数据保存属性FieIdNameAsString该值保存时对应的字段名ValeAsString保存的值(要用VaIType来格式化)FilterAsString杳找的过滤条件1.OCKAAsBoolean选单锁定EntryCtIIDAsImeger数组的IndeX与KDCtI的IndeX相对应,(FCtIIndex)CtITypeAsE_CtlType控件的类

28、型(KCtITyPe)EnableAsBOolean,控件是否Locked与KDCtI的LoCked属性相对应EnabIeVaIueAsInteger控件在各种状态下的可用性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1,否则为0。常用值:0、31。bPrintAsBoolean是否打印VisibleAsBOOlear是否可见VisibIeVaIueAsInteger控件在各种状态下的可见性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1,否则为0。常用值:0、31。NeedSaveAsBoolean该控件的值是否保存ReIateOutTb

29、IAsBoolean该控件的值是否来自其他表MustlnputAsBoolean该控件是否必须输入1.OokUPCISASInteger,如果控件的类型是查找类型的(LookUPCIS=CtILookUp),则该属性标示查找的类型NeedCountAsBoolean是否需要合计StatCountAsBOOlean是否汇总类字段FCtIIndexAsInteger控件序号FCtIOrderAsInteger控件顺序号ReIationIDAsString该列相关联的父级列控件的数据来源属性FInterIDAsStringInterID对应的字段名FNumberAsStringNumber对应的字段

30、名FNameAsStringName对应的字段名FiIterStringAsStringDInterIDOAsString如果该控件是查找类型的,则在该数组内记录InterID的值,其他的值直接从界面中取得一控件的数据保存属性SaveRuIeAsStringFieIdNameAsString该值保存时对应的字段名VaITypeAsE_ValType保存值的数据类型SaveVaIueAsE_SaveValue保存何种类型的值(FName、InterlD、Number)DName()AsStringDNmber()AsStringFilter()AsStringHeadItemID当前数据的内码I

31、temName当前数据的名称ItemNumber当前数据的IDText控件显示的TextGridSetText(colasLong1RowasLong,var)方法给数据控件的第Col列,第Row行赋值varGetText(colasLong,RowasLong,var)方法取数据控件的第Col列,第Row行的值varCol指定起始列Col2指定结束列Row指定起始行Row2指定结束行1.ock是否锁定Value指定行列的单元格的值新增事件一、FireBeforeSeIBiIIs功能:选单二次开发处理触发点:在单据选单获取记录集结束,填充单据之前触发参数说明:该事件返回一个KFo的DiCtio

32、nary数据包,该数据包包含四个参数1、ParaCbNeedSumEntryData)是否要合并分录项。为系统当前的状态,可以修改。如果为真系统将会对选单记录集进行分录合并处理,否则不处理。2、ParaCrsDataM)选单记录集,该记录集为系统构建,用户可以通过重新构建该记录集(包括替换),达到自己的二次开发目的,但结构必须符合选单规则。3、ParacsBiIITempIateID)当前单据模板IDo4、Para(sFieldName)当前选单字段5、记录集返回处理:将重新构建的记录集,通过设置SetPara.Value(lrsRetData,)=youRs,进行返回,这样系统将不再使用原有

33、记录集,而使用youRs进行处理。二、FireEvents功能:二次开发事件返回处理,所有二次开发事件都通过该事件返回,通过返回的事件ID区分参数说明:该事件返回一个KFO的Dictionary数据包,该数据包的参数根据具体事件的需要来决定,但有三个参数是固定的1、para(MEventlDM)该参数返回当前处理事件的ID,用于唯一区分一个事件2、para(wEventlDProp)该参数返回当前处理事件ID的附属属性,当前有两个值0:表示当前事件系统触发前,1:表示当前事件系统触发后。3、paraEventlDCanceln)该参数由用户返回,表示在用户处理该事件之后,是否需要该事件的系统处理,继续进行。默认为0,CarICel为14、para(,Para)该参数为KFOQictionary类型,返回当前事件的参数具体事件1、单据BUttOn事件事件ID:BiILButtonCIickPara(Para,):有一个参数,参数名为BUttOn,对象类型为MSComCtlLib.Button

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号