《5074534187金蝶KIS专业版二次开发技术详解(论文资料).doc》由会员分享,可在线阅读,更多相关《5074534187金蝶KIS专业版二次开发技术详解(论文资料).doc(27页珍藏版)》请在三一办公上搜索。
1、金蝶KIS专业版二次开发技术详解目 录第一章 概述1第一节 个性化介绍1第二章 二次开发类别2第三章 技术详解3第一节 单据嵌入式插件3第二节 主控台外挂报表5第三节 主控台外挂DLL组件9第四节 单据增加自定义菜单12第五节 创建新的表单序时簿14第六节 第三方系统与KIS的集成20第七节 标准Exe执行程序20第四章 附注22第一节专业版单据相关ID22第二节专业版数据库常用表介绍23第一章 概述本文着重介绍如何利用KIS专业版产品自身架构,进行相关功能的二次开发,在产品标准财务、业务一体化流程基础上,实现客户个性化需求,真正做到随需应变。第一节 个性化介绍KIS个性化ERP,又称第三代国
2、产小企业ERP:第一代ERP定制化定义:客户需要怎么样,就做成怎么样,完全以客户需求为导向,由于客户的专业性有限,容易导致业务前后不一致,流程中断。结果:小部分企业成功,大部分失败。第二代ERP标准化定义:软件厂商从专业角度出发,按照理论形成稳定的标准流程,做出通用型产品,特点是产品过于通用化,不能与企业自身管理特点或企业所在行业特点很好的吻合。结果:小部分企业成功,大部分不满意第三代ERP个性化定义:基于产品平台接口,确保财务业务一体化流程稳定为基础,通过插件开发,实现客户个性化需求,最终实现客户ERP的个性化。目标:帮助顾客成功。第二章 二次开发类别金蝶KIS专业版的二次开发共分为下面7大
3、类别: 一、 单据嵌入式插件(如:客户品名)二、 主控台外挂报表(如:采购价格分析表)三、 主控台外挂DLL(如:客户订单号回写功能插件)四、 单据增加自定义菜单(如:销售订单的“拆分生成采购入库”菜单)五、 创建新的表单序时簿(如:预收预付协议单序时簿)六、 第三方系统与KIS的集成(如:计件工资、税务系统)七、 独立运行的 Exe ,可以调用KIS登录窗口获得数据源,支持F7调用。第三章 技术详解按照KIS专业版二次开发的7大类别,分别进行以实现原理与实际应用案例相结合的详细介绍。第一节 单据嵌入式插件插件根据单据表头或表体界面操作,获取界面数据,并插件中进行数据加工处理,最后将结果回填到
4、单据界面。下面以“客户品名”(又名:一品多名)插件为例。插件需求有些行业的物料名称别名很多,同样的物料销售给不同客户时,各客户要求送货单上显示自己规定的名称。这样情况在化工和医药等行业比较普遍,如:编码为01.001的盐酸,销售给A客户叫洗涤剂,销售给B客户叫漂白水。销售出库单第一次输入A客户、输入01.001物料、输入客户产品名称,插件自动保存该客户对应该物料的客户产品名称,销售出库单第二次输入同样客户、同样物料时,插件自动查询并显示对应的客户产品名称。实现步骤步骤一:通过下面脚本,销售出库单表体增加“客户产品名称”字段。步骤二:通过下面脚本,在系统的销售出库单嵌入一个VB插件类对象名(KI
5、SBillPlugCustItemName.Bill21),并且数据库中新建一张用于存放客户、物料和客户产品名称信息的表(t_custitem)。步骤三:用VB开发并编译在步骤二中嵌入的插件类对象,插件实现的逻辑是,在销售出库单,表体选择物料后,插件自动根据当前的客户和物料,从数据库中取出对应的客户产品名称,然后填入表体的相应单元格。客户产品名称有编辑后,需要自动回写到数据库。具体实现参照下面代码:实现效果套打:第二节 主控台外挂报表指开发用户个性化报表,并将报表菜单挂到KIS专业版主控台的相应模块右下方。具体实现过程如下:插件需求以简单的采购明细报表为例。实现步骤步骤一:在KISCom目录下
6、创建KISBOS目录,解压下面报表例子文件包,放到KISBOS目录,如下图:步骤二:注册上图显示KISBOSRptSample目录下的KISBOSRptSample.dll组件(DLL组件的注册方法:双击该文件,选择打开方式为 system32目录下的REGSVR32.EXE文件,提示注册成功)。实现效果采购模块的账簿报表中出现“采购报表例子”菜单。点击“采购报表例子”,可以显示下面报表效果:原理介绍1. 专业版主控台显示时,自动读取KISComKISBOS 目录下的 “xls”文件,每个xls文件中存放一条记录,该记录的相关字段说明,可以打开xls文件,查看该文件的“字段说明”页表中相关解释
7、。此xls相当于菜单挂接模板,如果要挂接新报表或新的dll组件,可以拷贝此文件,对相应字段进行修改即可,注意:如果是手工Excel新建的xls文件,专业版主控台会出现不能显示的问题。2. 点击“采购报表例子”菜单后,系统读取 “KISBOSKISBOSRptSampleKISBOSReport.mdb” 文件,从T_RepList表中,读取本报表对应的“数据处理插件对象”,从T_RepFilter表中,读取出报表的过滤条件设置,T_RepFilter表中,对于客户、供应商、物料、职员等基础资料的选择,请参照T_Select表,注意:T_RepList,T_RepFilter表中的FRepKey
8、字段的值需要与xls文件记录“RPT/001”的“001”编码一致。3. 点击报表过滤界面上的【确定】按钮,系统自动创建T_RepList表中设定的“数据处理插件对象”,并将过滤条件传到此对象。关于“数据处理插件对象”的实现原理,请参阅“KISBOSKISBOSRptSample报表插件源代码”目录下的VB源代码。第三节 主控台外挂DLL组件指开发用户个性化功能插件,并将功能菜单挂到KIS专业版主控台的相应模块右下方,相对嵌入式插件,外挂DLL组件的功能相对比较独立。具体实现过程如下:插件需求销售模块的右下方,挂接一个简单的VB DLL组件程序,该演示程序介绍数据库连接的获取,F7基础资料的选
9、择。实现步骤步骤一:在KISCom目录下创建KISBOS目录,解压下面报表例子文件包,放到KISBOS目录,如下图:步骤二:注册上图显示KISBOSDllSample目录下的KISBOSDllSample.dll组件(DLL组件的注册方法:双击该文件,选择打开方式为 system32目录下的REGSVR32.EXE文件,提示注册成功)。实现效果销售模块的账簿报表中出现“Dll例子”菜单点击“DLL例子”,可以显示下面窗口:原理介绍1. 专业版主控台显示时,自动读取KISComKISBOS 目录下的 “xls”文件,每个xls文件中存放一条记录,该记录的相关字段说明,可以打开xls文件,查看该文
10、件的“字段说明”页表中相关解释。此xls相当于菜单挂接模板,如果要挂接新报表或新的dll组件,可以拷贝此文件,对相应字段进行修改即可,注意:如果是手工Excel新建的xls文件,专业版主控台会出现不能显示的问题。2. 点击“DLL例子”菜单后,根据xls文件记录中设置的“DLL/KISBOSDllSample.Application”,创建KISBOSDllSample.Application对象,并自动调用该对象的指定方法,如下:Public Function Show(str As String) As BooleanPropString = strfrmMain.Show 1End Fu
11、nction具体代码实现,请参阅“KISBOSKISBOSDllSample”目录下的VB源代码。第四节 单据增加自定义菜单插件需求贸易型企业,在接到销售订单后,直接按照订单商品进行采购,这样,订单上有很多商品,但是需要从多家供应商处进行采购,也就是需要一张销售订单,能自动生成多张采购订单。实现步骤步骤一:通过下面脚本,销售订单表体增加“供应商”字段,并在销售订单顶部菜单中增加“拆分生成采购订单”的菜单,并对应此菜单,嵌入一个DLL插件到销售订单,这样通过点击此菜单,系统自动调用嵌入的DLL插件,并在插件中自动按照订单上的供应商,生成多张采购订单。步骤二:关于步骤一中的DLL插件,单据自定义菜
12、单所触发的插件事件如下:Private Sub m_BillTransfer_UserMenuClick(ByVal Index As Long, ByVal Caption As String) Dim sBillNoPlace As Integer Dim sBillNo As String Dim oProp As KFO.Dictionary Dim oSvr As Object Dim RtnCode As Long Dim RtnDesc As String sBillNoPlace = GetCtlOrderByFieldName(FBillNo, 0) If sBillNoPl
13、ace 0 Then sBillNo = m_BillTransfer.GetHeadText(sBillNoPlace) Else Exit Sub End If Set oProp = New KFO.Dictionary oProp(FBillNo) = sBillNo Set oSvr = CreateProxy(KISMenuDllCreMulPOM.clsUpdate) Call oSvr.CreatePO(MMTS.PropsString, oProp, RtnCode, RtnDesc) If RtnCode = 0 Then RtnDesc = 完成! End If MsgB
14、ox RtnDesc, , 信息提示End Sub实现效果第五节 创建新的表单序时簿指用户根据个性化特点,需要在专业版系统上增加新的表单,对该表单数据进行增、删、改、查、套打等功能,并且希望能将新表单数据下推到系统现有的单据上。插件需求企业在预收款时,要记录下预收多少钱,预售什么产品、多少数量、什么价位、在做销售出库时,自动从预收款协议单下推携带、并单价自动带出来。同时预付也实现类似功能。实现步骤步骤一:通过下面脚本,在专业版系统中增加预收款协议单和预付款协议单共两套单据模板脚本,并且AddMenu.sql 文件脚本将两个单据分别增加扩展菜单,用于下推到销售出库单或采购入库单。步骤二:将下面文
15、件包中文件放置到对应的Advance和KISCom目录,并对dll文件进行Regsvr32.exe注册。KISBOS目录如下图显示:KISBOSLstPrePay.xls :该文件用于在主控台显示“预付协议单序时簿”菜单KISBOSLstPreRec.xls :该文件用于在主控台显示“预收协议单序时簿”菜单KISBOSRptPrePay.xls :与KISBOSRptPrePay目录对应,形成预付执行情况报表KISBOSRptPreRec.xls :与KISBOSRptPreRec目录对应,形成预收执行情况报表KISCom目录下:KISMenuDllCreBillM.dll :中间层组件,用于
16、后台生成销售出库单或采购入库单Advance目录下:ERPSwitch.SSS :该文件用access打开,在GLNoteType、ICTransType表中增加了相应的预收预付协议单记录KIS预收协议单.NDF、KIS预付协议单.NDF :这两个为新单据对应套打文件KISMenuDllCreBill.dll :该文件为单据自定义菜单调用的嵌入式组件KISBills.dll :该文件为专业版系统的单据组件,覆盖原有安装的文件,否则新单据上的单价和金额不能显示出来。附注:如果用户需要创建类似的新单据,即复制本案例的脚本文件、xls文件、ERPSwitch.SSS文件和套打文件,然后修改下相应的单
17、据名称、并根据需要对模板的表头和表体脚本进行相关修改,即可轻松实现新单据的增删改查和套打功能,再根据前面介绍的嵌入式插件、自定义菜单功能原理,实现新单据与系统单据的下推等功能。实现效果主控台:单据界面:点击【扩展功能】的【下推采购入库】菜单,弹出下面窗口,选择明细,并输入数量,可以自动生成采购入库单。相应报表:第六节 第三方系统与KIS的集成第三方系统Exe程序直接在KIS专业版主控台上调出启动,并且KIS传递登录数据库的连接串,便于第三方系统与KIS在同一数据库中操作。第三方系统集成,涉及到数据库的整合,同时还有基础资料的同步或重用,所以此类型的插件,一般由总部主导完成。第七节 标准Exe执
18、行程序指用VB开发可执行的标准EXE程序,程序可以调用专业版登录组件,实现KIS风格登录,获取数据库连接串,并程序中可以直接调用专业版F7基础资料查询功能。具体实现过程参照下面例子程序:第四章 附注本文所讲述的插件开发接口技术都是基于金蝶KIS专业版V9.1SP1版本(如需技术交流,可以发送邮件到kaihong_wang)。相关资料和金蝶KIS现已发布插件情况说明文档,可以从下面地址获取:(下载时,建议采用迅雷等下载工具,由于网络原因,该地址有出现第一次下载不成功的情况,这时需要重试。)第一节 专业版单据相关ID单据名称单据ID模板Id序时簿ID套打ID采购订单71P028150采购发票(普通
19、)76I038445采购发票(专用)75I028444采购入库1A015819产品入库2A025520成本调整100T017358调拨单41D017537领料单24B047729盘亏毁损43C025136盘盈入库40C015035其他出库单29B096834其他入库10A975725销售报价单84G016042销售出库21B017626销售订单81S016153销售发票(普通)86I056247销售发票(专用)80I046246虚仓出库26ZOU7962虚仓调拨74P058560虚仓入库6ZIN5461单据、序时簿、套打相关对象类型表直接的关联关系,可以参照下面SQL语句:select dis
20、tinct a.fname,a.fid,a.ftemplateid,b.ftemplateid as flistid,b.fname as flistname,c.fnotetypeid from ictransactiontype ainner join iclisttemplate b on a.fid=b.fbilltemplateidinner join glnotetype c on a.ftemplateid=c.ftemplateidorder by a.fname第二节 专业版数据库常用表介绍ictransactiontype 单据类型表 (FTemplateID 是关联模板信
21、息表的字段,FID 关联 ICStockBill 中的 FTranType字段)ictemplate,ictemplateentry 单据模板信息主子表icinvbal 物料库存余额表(包含FAuxPropID),icbal 物料库存余额表icinventory :物料即时库存数据存放表icstockbill 除组装拆卸外的库存类单据主表icstockbillentry 除组装拆卸外的库存类单据明细表icstockbill 中调整单 类型号 100,当FBillTypeID 为 12542代表调入,FBillTypeID 为 12541代表调出ICPurchase 采购发票主表ICPurcha
22、seEntry 采购发票明细表icsale 销售发票主表icsaleentry 销售发票明细表select FInvoiceAmountFor ,FInvoiceAmount ,FReceiveAmountFor ,FReceiveAmount,FUnReceiveAmountFor,* from icsale where FInterID=1066上面字段分别为 原币发票金额,本币发票金额,原币收款金额,本币收款金额,原币未收款金额SEOrder 销售订单主表SEOrderEntry 销售订单明细表POOrder 采购订单主表POOrderEntry 采购订单明细表t_ItemClass 核算项目类别表,打开此表可以获取 核算项目 各基础资料 存放的 表名 (FItemID 为关联内码)t_RP_RBill 收款单主表 ,t_RP_RBillEntry 收款单子表t_RP_PBill 付款单主表 ,t_RP_PBillEntry 付款单子表T_RP_CheckInfo 核销单主表 ,T_RP_CheckInfoEntry 核销单子表 select * from T_RP_CheckInfoICHookRelations 暂估处理 发票钩稽关系表