资源预览内容
第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
第9页 / 共59页
第10页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
二次开发简介 曹且根,金蝶软件(中国)有限公司,研发中心,提纲,工业老单二次开发 工业老单二次开发所需环境及要点 工业老单序时薄二次开发 工业老单单据二次开发 工业老单实战演练 组件编译及布署 问题交流,二次开发所需环境及要点,单据二次开发是针对现目前单据的一些功能无法满足一些客户的特殊要求,同时分公司又有能力进行二次开发而提出的,这样既可以在现有的系统不做变动的情况下面满足用户的需求,同时也增强了系统的稳定性。 本篇所介绍所用到的动态连接库名为:K3BillTransfer.dll 通过该说明文档,你可以了解到 1.如何通过K3BillTransfer组件在录单过程中对单据上各项目加以控制。 2.如何通过K3BillTransfer组件实现自定义功能菜单。 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中的FcomName填入需要调用组件的名称,注意:不要覆盖原有内容,要在原有内容上用“| ”分割后加入自己的组件,可以加多个组件。第一个插件前一定要加“|”,因为之前的部分是记录了其他信息。 2)二次开发组件必须实现MainFunction(ByVal sKey As string,oList AsObject,Byref bCancel as Boolean)方法。要终止事件,请将bCancel设置为true。 3)oList为一个即是ICList,可以使用其中的任何Public方法。 比方说 GetSelData 为取得选取的对象,序时薄二次开发流程图,序时薄二次开发,范例 增加元数据按钮菜单名“FMenuPC”,新增加一个不存在的FToolID Delete From t_MenuToolBar Where FToolID = 10002 insert 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,FToolCaption_CHT,FToolCaption_EN) values (10002,FMenuPC,外购入库拆分,外购入库拆分,外购入库拆分,39,外购入库拆分,外购入库拆分,外购入库拆分,0,0,1,0,0,0,0,0,外购入库拆分,外购入库拆分,外购入库拆分),序时薄二次开发,范例续 将上面的按钮插入到菜单栏和工具栏 在t_BandToolMapping中的FcomName填入需要调用组件的名称,注意:不要覆盖原有内容,要在原有内容上用“| ”分割后加入自己的组件,可以加多个组件。第一个插件前一定要加“|”,因为之前的部分是记录了其他信息。 FID对应iclisttemplate里的FMenuID, 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 = 82 insert into t_BandToolMapping (FID,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 = 82 insert into t_BandToolMapping (FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup) values (82,52,10002,0,65,|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中添加以下代码,以上只是序时薄二次开发实现的一个简单的例子,具体的二次开发,要根据不同的需求,进行相应的开发,接口都是统一调用MainFunction函数,再根据具体情况进行扩展。,序时薄二次开发,单据二次开发,单据二次开发主要通过K3BillTransfer组件控制单据上一些操作。 其常用属性 1.Property Cnnstring As String 当前数据库的MMTS.PropsString连接串。 2Property SystemName As String 当前系统名称。 3Property LastInfo As String 最后一次系统返回的各种信息 4Property BillForm As 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 对应表头控件数组,记录每个表头项目各属性的数组 如果要改变HeadCtl中的某个属性值,需先对HeadCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给HeadCtl。 。,单据二次开发,其常用属性续 10Property EntryCtl As Variant 对应分录各列,记录每个分录列各属性的数组 如果要改变EntryCtl中的某个属性值,需先对EntryCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给EntryCtl 11Property SaveVect As KFO.Vector 二次开发外部数据存取接口。在录单过程中,用户可将某些数据保存在此Vector中,在单据保存时,再通过二次开发中间层组件,将此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 String, 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:表头控件索引 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 Long = 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 Boolean 说明:设置表头某项的值 参数: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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号