k3老单二次开发课件.ppt
《k3老单二次开发课件.ppt》由会员分享,可在线阅读,更多相关《k3老单二次开发课件.ppt(59页珍藏版)》请在三一办公上搜索。
1、二次开发简介 曹且根,金蝶软件(中国)有限公司,研发中心,提纲,工业老单二次开发工业老单二次开发所需环境及要点工业老单序时薄二次开发工业老单单据二次开发工业老单实战演练组件编译及布署问题交流,二次开发所需环境及要点,单据二次开发是针对现目前单据的一些功能无法满足一些客户的特殊要求,同时分公司又有能力进行二次开发而提出的,这样既可以在现有的系统不做变动的情况下面满足用户的需求,同时也增强了系统的稳定性。本篇所介绍所用到的动态连接库名为:K3BillTransfer.dll 通过该说明文档,你可以了解到1.如何通过K3BillTransfer组件在录单过程中对单据上各项目加以控制。2.如何通过K3
2、BillTransfer组件实现自定义功能菜单。3.如何通过K3BillTransfer组件控制数据的保存。4.如何在序时薄上增加菜单及应用。5.应用示例实战演练。适用对象 需要在K/3供应链系统单据上进行二次开发的开发者 开发环境 1.安装过K/3ERP 9.41以后的版本且购买过供应链系统。2.VB6.0企业版+SP1 3.SQL SERVER 2000及后续版本(SQL SERVER 2005,SQL SERVER 2008),序时薄二次开发,老单序时薄开发相对简单,它只能在序时薄上增加菜单,通过菜单去实现一些二次开发功能.使用方法:1.)在t_BandToolMapping中的Fcom
3、Name填入需要调用组件的名称,注意:不要覆盖原有内容,要在原有内容上用“|”分割后加入自己的组件,可以加多个组件。第一个插件前一定要加“|”,因为之前的部分是记录了其他信息。2)二次开发组件必须实现MainFunction(ByVal sKey As string,oList AsObject,Byref bCancel as Boolean)方法。要终止事件,请将bCancel设置为true。3)oList为一个即是ICList,可以使用其中的任何Public方法。比方说 GetSelData 为取得选取的对象,序时薄二次开发流程图,序时薄二次开发,范例增加元数据按钮菜单名“FMenuPC
4、”,新增加一个不存在的FToolIDDelete From t_MenuToolBar Where FToolID=10002insert into t_MenuToolBar(FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,FVisible,FEnable,FChecked,FShortCut,FCBList,FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,FIndex,FToolCaption,
5、FToolCaption_CHT,FToolCaption_EN)values(10002,FMenuPC,外购入库拆分,外购入库拆分,外购入库拆分,39,外购入库拆分,外购入库拆分,外购入库拆分,0,0,1,0,0,0,0,0,外购入库拆分,外购入库拆分,外购入库拆分),序时薄二次开发,范例续 将上面的按钮插入到菜单栏和工具栏在t_BandToolMapping中的FcomName填入需要调用组件的名称,注意:不要覆盖原有内容,要在原有内容上用“|”分割后加入自己的组件,可以加多个组件。第一个插件前一定要加“|”,因为之前的部分是记录了其他信息。FID对应iclisttemplate里的FM
6、enuID,FBandID表示放在哪个菜单下(对应t_BandToolMapping.FSubBandID),可以通过以下语句关联得到是哪个菜单 select a.*,b.fname,b.FCaption From t_BandToolMapping a,t_MenuToolBar b where a.FID=82 and a.ftoolid=b.ftoolid 将按钮插入到菜单栏 Delete From t_BandToolMapping where FBandID=3 and FToolID=10002 and FID=82insert into t_BandToolMapping(FID
7、,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup)values(82,3,10002,0,65,|K3ListPlug.List,0),范例续将按钮插入到工具栏Delete From t_BandToolMapping where FBandID=52 and FToolID=10002 and FID=82insert into t_BandToolMapping(FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup)values(82,52,10002,0,65,|
8、K3ListPlug.List,0)在外购入库序时薄显示按钮(如果里面有|V,则只能在后面加菜单项)Update IclistTemplate set FLogicStr=FLogicStr+Case When Right(FLogicStr,1)=|then V:FMenuPC else|V:FMenuPC end where FID=1 and not FLogicStr like%FMenuPC%,序时薄二次开发,数据元建好之后,再新建一个工程文件。如:新建一个vb工程,命名为:ProListBill,在工程中新建一个类命名为:ListBill,序时薄二次开发,在类ListBill中添加
9、以下代码,以上只是序时薄二次开发实现的一个简单的例子,具体的二次开发,要根据不同的需求,进行相应的开发,接口都是统一调用MainFunction函数,再根据具体情况进行扩展。,序时薄二次开发,单据二次开发,单据二次开发主要通过K3BillTransfer组件控制单据上一些操作。其常用属性1.Property Cnnstring As String当前数据库的MMTS.PropsString连接串。2Property SystemName As String当前系统名称。3Property LastInfo As String 最后一次系统返回的各种信息4Property BillForm As
10、 Object 整个单据窗体对象。可通过该对象访问单据上的任何一个对象,包括控件,菜单。共有的方法有:InsertRow(),在Grid的当前行追加一行,它没有参数。5Property BillFunc as Object代表单据对象。目前没什么用途。,其常用属性续6Property Head As Object 单据表头控件,是一个KDText控件数组7Property Grid As Object 单据分录控件,为FpSpread控件8Property SumGrid As Object单据分录合计控件,为FpSpread控件9Property HeadCtl As Variant对应表头
11、控件数组,记录每个表头项目各属性的数组如果要改变HeadCtl中的某个属性值,需先对HeadCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给HeadCtl。,单据二次开发,其常用属性续10Property EntryCtl As Variant对应分录各列,记录每个分录列各属性的数组如果要改变EntryCtl中的某个属性值,需先对EntryCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给EntryCtl11Property SaveVect As KFO.Vector二次开发外部数据存取接口。在录单过程中,用户可将某些数据保存在此Vector中,在单据保存时,再通过
12、二次开发中间层组件,将此Vector中的数据保存到指定位置。SaveVect.Item(1)为一个KFO.Dictionary对象该对象包含以下四个系统数据 SaveVect.Item(1).Value(FInterID):单据内码 SaveVect.Item(1).Value(FTransType):单据事务类型 SaveVect.Item(1).Value(ISRedBill):是否红字单据 SaveVect.Item(1).Value(BillChecked):是否审核。,单据二次开发,常用的方法Function AddUserMenuItem(ByVal Caption As Stri
13、ng,ByVal RootMenuCaption As String=)说明:添加一个用户自定义菜单项,系统一共预设了五个菜单项供二次开发使用参数:Caption:菜单名称 RootMenuCaption:根菜单名称。缺省为“自定义菜单”2Function GetGridText(ByVal Row As Long,ByVal Col As Long)As String说明:获取分录某单元格的值参数:Row:分录行,Col:分录列3Function GetHeadNumber(ByVal CtlIndex As Long)As String说明:获取表头某项的代码参数:CtlIndex:表头控
14、件索引4Function GetHeadText(ByVal CtlIndex As Long)As String说明:获取表头某项的文本参数:CtlIndex:表头控件索引,单据二次开发,单据二次开发,常用的方法续5.Function GetSumGridText(ByVal Row As Long,ByVal Col As Long)As String说明:获取合计行某列的值参数:Row:行。一般为1,Col:分录列6Function SetGridText(ByVal Row As Long,ByVal Col As Long,ByVal Value,ByVal InterID As L
15、ong=0,ByVal sName As String=)As Boolean说明:设置分录某单元格的值,当分录为查找类型时,会把相应的信息一起 携带到相应的位置,如当为物料代码时,它会携带物料的一些基本 信息物料名称等。参数:Row:分录行,Col:分录列,Value:设置的值。如果该单元格是查找 类型的,Value应设置为代码。InterID:暂未使用,sName:暂未使用,常用的方法续7Function SetHead(ByVal Index As Long,ByVal Value,ByVal InterID As Long=0,ByVal sName As String=)As Boo
16、lean说明:设置表头某项的值参数:Index:表头控件索引,Value:设置的值。如果该表头项是查找类型的,Value应设置为代码,InterID:暂未使用,sName:暂未使用8Function SetSumGridText(ByVal Row As Long,ByVal Col As Long,ByVal Value)As Boolean说明:设置分录合计某列的值参数:Row:分录行。一般为1 Col:分录列 Value:设置的值。,单据二次开发,常用的事件1.Public Event BillInitialize()单据初始化完成时激发该事件2Public Event BillTerm
17、inate()单据卸载完成时激发该事件3Public Event UserMenuClick(ByVal Index As Long,ByVal Caption As String)说明:当点击用户自定义的菜单时激发这个事件。参数:Index:表示第几个菜单、由添加菜单的先后顺序决定,Caption:菜单项的标题,如何添加自定义菜单请参见方法 AddUserMenuItem4.Public Event HeadChange(ByVal CtlIndex As Long,ByVal Value As Variant,ByVal bNewBill As Boolean,Cancel As Bool
18、ean)说明:当表头的一个项目改变时激发这个事件参数:ctlIndex 表头字段索引 Value 当前值 bNewBill是否是新增单据 Cancel是否取消,单据二次开发,常用的事件续5.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是否取消6Publ
19、ic Event GridChange(ByVal Col As Long,ByVal Row As Long,ByVal Value As Variant,ByVal bNewBill As Boolean,Cancel As Boolean)说明:当表体的一个项目改变时激发这个事件参数:Col 分录的当前列 Row分录的当前行 Value 当前值 bNewBill是否是新增单据 Cancel是否取消,单据二次开发,常用的事件续Public Event BeforGridLookUp(ByVal Row As Long,ByVal Col As Long,ByVal nLookUpClsID
20、 As Long,Cancel As Boolean)说明:在分录执行查找功能之前激发这个事件参数:Col 分录的当前列,Row分录的当前行,nLookUpClsID 当前查询的资料类型,Cancel是否取消8Public Event EndGridLookUp(ByVal Row As Long,ByVal Col As Long,ByVal nLookUpClsID As Long)说明:在分录完成查找功能之后激发这个事件参数:Col 分录的当前列,Row分录的当前行,nLookUpClsID 当前查询的资料类型9Public Event BeforHeadLookUp(ByVal Ctl
21、Index As Long,ByVal nLookUpClsID As Long,Cancel As Boolean)说明:在表头的一个项目执行查找功能之前激发这个事件参数:ctlIndex表头字段索引 nLookUpClsID 当前查询的资料类型 Cancel是否取消,单据二次开发,常用的事件续Public Event EndHeadLookUp(ByVal CtlIndex As Long,ByVal nLookUpClsID As Long)说明:在表头的一个项目完成查找功能之后激发这个事件,参数:ctlIndex表头字段索引nLookUpClsID 当前查询的资料类型11Public
22、Event BeforeSave(ByVal bNew As Boolean,ByRef ReturnCode As Long)说明:在单据执行保存功能的时候激发这个事件参数:bNew 表示是否是新增单据,ReturnCode 返回参数-1:失败,结束 单据保存;0:成功,继续单据保存,1:成功返回,结束单据保存12Public Event EndSave(ByVal BillNo As String)说明:在单据执行完成保存功能的时候激发这个事件参数:BillNo表示单据的编号,单据二次开发,常用的事件续13.Public Event LoadBillEnd(ByVal ShowType A
23、s Long)说明:在单据装载完成的时候激发这个事件参数:ShowType 单据显示状态0新增 1.修改 2.查看 3.审核14Public Event NewBillEnd()说明:在单据新增完成的时候激发这个事件15Public Event SetMenuBarCtlPropEnd(ByVal ShowType As Long,ByVal BillChecked As Boolean)说明:在单据设置菜单、工具条各属性完成的时候激发这个事件参数:ShowType单据显示状态 0新增 1.修改 2.查看 3.审核 BillChecked 单据是否已被审核16Public Event Befo
24、reFillBillData(ByVal BillTransType As Long,ByVal BillInterID As Long)说明:在装载某张单据之前激发这个事件参数:BillTransType 单据事务类型 BillInterID单据内码,单据二次开发,常用的事件续17Public Event EndBillFormActive()说明:在显示单据之后激发这个事件18Public Event GridFormat(ByVal Col As Long,ByVal Row As Long)说明:在设置单据体格式后激发这个事件参数:Col要设置格式的目标列 Row要设置格式的目标行19
25、Public Event RefreshControl()说明:在设置单据的单元格和单据头的锁定状态后激发这个事件20Public Event BeforeEntrySplit(ByVal pCurRow As Long,ByVal pSplitCount As Long,ByVal pSplitMethod As Long,ByRef pCancel As Boolean)说明:在单据的拆分操作之前激发此事件参数:pCurRow要拆分的当前分录行 pSplitCount拆分的数目 pSplitMethod拆分分录位置 0 插入式,1追加式 pCancel是否取消拆分 true:取消拆分fal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- k3 二次开发 课件

链接地址:https://www.31ppt.com/p-5377436.html