金蝶KIS专业版二次开发技术详解.docx
- 文档编号:11395268
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:22
- 大小:368.01KB
金蝶KIS专业版二次开发技术详解.docx
《金蝶KIS专业版二次开发技术详解.docx》由会员分享,可在线阅读,更多相关《金蝶KIS专业版二次开发技术详解.docx(22页珍藏版)》请在冰豆网上搜索。
金蝶KIS专业版二次开发技术详解
金蝶KIS专业版二次开发技术详解
KIS增值开发组
2008年11月
目录
第一章概述1
第一节个性化介绍1
第二章二次开发类别2
第三章技术详解3
第一节单据嵌入式插件3
第二节主控台外挂报表5
第三节主控台外挂DLL组件9
第四节单据增加自定义菜单12
第五节创建新的表单序时簿14
第六节第三方系统与KIS的集成20
第七节标准Exe执行程序20
第四章附注22
第一节专业版单据相关ID22
第二节专业版数据库常用表介绍23
第一章概述
本文着重介绍如何利用KIS专业版产品自身架构,进行相关功能的二次开发,在产品标准财务、业务一体化流程基础上,实现客户个性化需求,真正做到随需应变。
第一节个性化介绍
KIS个性化ERP,又称第三代国产小企业ERP:
第一代ERP——定制化
定义:
客户需要怎么样,就做成怎么样,完全以客户需求为导向,由于客户的专业性有限,容易导致业务前后不一致,流程中断。
结果:
小部分企业成功,大部分失败。
第二代ERP——标准化
定义:
软件厂商从专业角度出发,按照理论形成稳定的标准流程,做出通用型产品,特点是产品过于通用化,不能与企业自身管理特点或企业所在行业特点很好的吻合。
结果:
小部分企业成功,大部分不满意
第三代ERP——个性化
定义:
基于产品平台接口,确保财务业务一体化流程稳定为基础,通过插件开发,实现客户个性化需求,最终实现客户ERP的个性化。
目标:
帮助顾客成功。
第二章二次开发类别
金蝶KIS专业版的二次开发共分为下面7大类别:
一、单据嵌入式插件(如:
客户品名)
二、主控台外挂报表(如:
采购价格分析表)
三、主控台外挂DLL(如:
客户订单号回写功能插件)
四、单据增加自定义菜单(如:
销售订单的“拆分生成采购入库”菜单)
五、创建新的表单序时簿(如:
预收预付协议单序时簿)
六、第三方系统与KIS的集成(如:
计件工资、税务系统)
七、独立运行的Exe,可以调用KIS登录窗口获得数据源,支持F7调用。
第三章技术详解
按照KIS专业版二次开发的7大类别,分别进行以实现原理与实际应用案例相结合的详细介绍。
第二节单据嵌入式插件
插件根据单据表头或表体界面操作,获取界面数据,并插件中进行数据加工处理,最后将结果回填到单据界面。
下面以“客户品名”(又名:
一品多名)插件为例。
插件需求
有些行业的物料名称别名很多,同样的物料销售给不同客户时,各客户要求送货单上显示自己规定的名称。
这样情况在化工和医药等行业比较普遍,如:
编码为01.001的盐酸,销售给A客户叫洗涤剂,销售给B客户叫漂白水。
销售出库单第一次输入A客户、输入01.001物料、输入客户产品名称,插件自动保存该客户对应该物料的客户产品名称,销售出库单第二次输入同样客户、同样物料时,插件自动查询并显示对应的客户产品名称。
实现步骤
步骤一:
通过下面脚本,销售出库单表体增加“客户产品名称”字段。
步骤二:
通过下面脚本,在系统的销售出库单嵌入一个VB插件类对象名(KISBillPlugCustItemName.Bill21),并且数据库中新建一张用于存放客户、物料和客户产品名称信息的表(t_custitem)。
步骤三:
用VB开发并编译在步骤二中嵌入的插件类对象,插件实现的逻辑是,在销售出库单,表体选择物料后,插件自动根据当前的客户和物料,从数据库中取出对应的客户产品名称,然后填入表体的相应单元格。
客户产品名称有编辑后,需要自动回写到数据库。
具体实现参照下面代码:
实现效果
套打:
第三节主控台外挂报表
指开发用户个性化报表,并将报表菜单挂到KIS专业版主控台的相应模块右下方。
具体实现过程如下:
插件需求
以简单的采购明细报表为例。
实现步骤
步骤一:
在KISCom目录下创建KISBOS目录,解压下面报表例子文件包,放到KISBOS目录,如下图:
步骤二:
注册上图显示KISBOSRptSample目录下的KISBOSRptSample.dll组件(DLL组件的注册方法:
双击该文件,选择打开方式为system32目录下的REGSVR32.EXE文件,提示注册成功)。
实现效果
采购模块的账簿报表中出现“采购报表例子”菜单。
点击“采购报表例子”,可以显示下面报表效果:
原理介绍
1.专业版主控台显示时,自动读取KISCom\KISBOS目录下的“xls”文件,每个xls文件中存放一条记录,该记录的相关字段说明,可以打开xls文件,查看该文件的“字段说明”页表中相关解释。
此xls相当于菜单挂接模板,如果要挂接新报表或新的dll组件,可以拷贝此文件,对相应字段进行修改即可,注意:
如果是手工Excel新建的xls文件,专业版主控台会出现不能显示的问题。
2.点击“采购报表例子”菜单后,系统读取“KISBOS\KISBOSRptSample\KISBOSReport.mdb”文件,从T_RepList表中,读取本报表对应的“数据处理插件对象”,从T_RepFilter表中,读取出报表的过滤条件设置,T_RepFilter表中,对于客户、供应商、物料、职员等基础资料的选择,请参照T_Select表,注意:
T_RepList,T_RepFilter表中的FRepKey字段的值需要与xls文件记录“RPT/001”的“001”编码一致。
3.点击报表过滤界面上的【确定】按钮,系统自动创建T_RepList表中设定的“数据处理插件对象”,并将过滤条件传到此对象。
关于“数据处理插件对象”的实现原理,请参阅“KISBOS\KISBOSRptSample\报表插件源代码”目录下的VB源代码。
第四节主控台外挂DLL组件
指开发用户个性化功能插件,并将功能菜单挂到KIS专业版主控台的相应模块右下方,相对嵌入式插件,外挂DLL组件的功能相对比较独立。
具体实现过程如下:
插件需求
销售模块的右下方,挂接一个简单的VBDLL组件程序,该演示程序介绍数据库连接的获取,F7基础资料的选择。
实现步骤
步骤一:
在KISCom目录下创建KISBOS目录,解压下面报表例子文件包,放到KISBOS目录,如下图:
步骤二:
注册上图显示KISBOSDllSample目录下的KISBOSDllSample.dll组件(DLL组件的注册方法:
双击该文件,选择打开方式为system32目录下的REGSVR32.EXE文件,提示注册成功)。
实现效果
销售模块的账簿报表中出现“Dll例子”菜单
点击“DLL例子”,可以显示下面窗口:
原理介绍
1.专业版主控台显示时,自动读取KISCom\KISBOS目录下的“xls”文件,每个xls文件中存放一条记录,该记录的相关字段说明,可以打开xls文件,查看该文件的“字段说明”页表中相关解释。
此xls相当于菜单挂接模板,如果要挂接新报表或新的dll组件,可以拷贝此文件,对相应字段进行修改即可,注意:
如果是手工Excel新建的xls文件,专业版主控台会出现不能显示的问题。
2.点击“DLL例子”菜单后,根据xls文件记录中设置的“DLL/KISBOSDllSample.Application”,创建KISBOSDllSample.Application对象,并自动调用该对象的指定方法,如下:
PublicFunctionShow(strAsString)AsBoolean
PropString=str
frmMain.Show1
EndFunction
具体代码实现,请参阅“KISBOS\KISBOSDllSample”目录下的VB源代码。
第五节单据增加自定义菜单
插件需求
贸易型企业,在接到销售订单后,直接按照订单商品进行采购,这样,订单上有很多商品,但是需要从多家供应商处进行采购,也就是需要一张销售订单,能自动生成多张采购订单。
实现步骤
步骤一:
通过下面脚本,销售订单表体增加“供应商”字段,并在销售订单顶部菜单中增加“拆分生成采购订单”的菜单,并对应此菜单,嵌入一个DLL插件到销售订单,这样通过点击此菜单,系统自动调用嵌入的DLL插件,并在插件中自动按照订单上的供应商,生成多张采购订单。
步骤二:
关于步骤一中的DLL插件,单据自定义菜单所触发的插件事件如下:
PrivateSubm_BillTransfer_UserMenuClick(ByValIndexAsLong,ByValCaptionAsString)
DimsBillNoPlaceAsInteger
DimsBillNoAsString
DimoPropAsKFO.Dictionary
DimoSvrAsObject
DimRtnCodeAsLong
DimRtnDescAsString
sBillNoPlace=GetCtlOrderByFieldName("FBillNo",0)
IfsBillNoPlace<>0Then
sBillNo=m_BillTransfer.GetHeadText(sBillNoPlace)
Else
ExitSub
EndIf
SetoProp=NewKFO.Dictionary
oProp("FBillNo")=sBillNo
SetoSvr=CreateProxy("KISMenuDllCreMulPOM.clsUpdate")
CalloSvr.CreatePO(MMTS.PropsString,oProp,RtnCode,RtnDesc)
IfRtnCode=0Then
RtnDesc="完成!
"
EndIf
MsgBoxRtnDesc,,"信息提示"
EndSub
实现效果
第六节创建新的表单序时簿
指用户根据个性化特点,需要在专业版系统上增加新的表单,对该表单数据进行增、删、改、查、套打等功能,并且希望能将新表单数据下推到系统现有的单据上。
插件需求
企业在预收款时,要记录下预收多少钱,预售什么产品、多少数量、什么价位、在做销售出库时,自动从预收款协议单下推携带、并单价自动带出来。
同时预付也实现类似功能。
实现步骤
步骤一:
通过下面脚本,在专业版系统中增加预收款协议单和预付款协议单共两套单据模板脚本,并且AddMenu.sql文件脚本将两个单据分别增加扩展菜单,用于下推到销售出库单或采购入库单。
步骤二:
将下面文件包中文件放置到对应的Advance和KISCom目录,并对dll文件进行Regsvr32.exe注册。
KISBOS目录如下图显示:
KISBOSLstPrePay.xls:
该文件用于在主控台显示“预付协议单序时簿”菜单
KISBOSLstPreRec.xls:
该文件用于在主控台显示“预收协议单序时簿”菜单
KISBOSRptPrePay.xls:
与KISBOSRptPrePay目录对应,形成预付执行情况报表
KISBOSRptPreRec.xls:
与KISBOSRptPreRec目录对应,形成预收执行情况报表
KISCom目录下:
KISMenuDllCreBillM.dll:
中间层组件,用于后台生成销售出库单或采购入库单
Advance目录下:
ERPSwitch.SSS:
该文件用access打开,在GLNoteType、ICTransType表中增加了相应的预收预付协议单记录
KIS预收协议单.NDF、KIS预付协议单.NDF:
这两个为新单据对应套打文件
KISMenuDllCreBill.dll:
该文件为单据自定义菜单调用的嵌入式组件
KISBills.dll:
该文件为专业版系统的单据组件,覆盖原有安装的文件,否则新单据上的单价和金额不能显示出来。
附注:
如果用户需要创建类似的新单据,即复制本案例的脚本文件、xls文件、ERPSwitch.SSS文件和套打文件,然后修改下相应的单据名称、并根据需要对模板的表头和表体脚本进行相关修改,即可轻松实现新单据的增删改查和套打功能,再根据前面介绍的嵌入式插件、自定义菜单功能原理,实现新单据与系统单据的下推等功能。
实现效果
主控台:
单据界面:
点击【扩展功能】的【下推采购入库】菜单,弹出下面窗口,选择明细,并输入数量,可以自动生成采购入库单。
相应报表:
第七节第三方系统与KIS的集成
第三方系统Exe程序直接在KIS专业版主控台上调出启动,并且KIS传递登录数据库的连接串,便于第三方系统与KIS在同一数据库中操作。
第三方系统集成,涉及到数据库的整合,同时还有基础资料的同步或重用,所以此类型的插件,一般由总部主导完成。
第八节标准Exe执行程序
指用VB开发可执行的标准EXE程序,程序可以调用专业版登录组件,实现KIS风格登录,获取数据库连接串,并程序中可以直接调用专业版F7基础资料查询功能。
具体实现过程参照下面例子程序:
第四章附注
本文所讲述的插件开发接口技术都是基于金蝶KIS专业版V9.1SP1版本(如需技术交流,可以发送邮件到kaihong_wang@)。
相关资料和金蝶KIS现已发布插件情况说明文档,可以从下面地址获取:
(下载时,建议采用迅雷等下载工具,由于网络原因,该地址有出现第一次下载不成功的情况,这时需要重试。
)
第一节专业版单据相关ID
单据名称
单据ID
模板Id
序时簿ID
套打ID
采购订单
71
P02
81
50
采购发票(普通)
76
I03
84
45
采购发票(专用)
75
I02
84
44
采购入库
1
A01
58
19
产品入库
2
A02
55
20
成本调整
100
T01
73
58
调拨单
41
D01
75
37
领料单
24
B04
77
29
盘亏毁损
43
C02
51
36
盘盈入库
40
C01
50
35
其他出库单
29
B09
68
34
其他入库
10
A97
57
25
销售报价单
84
G01
60
42
销售出库
21
B01
76
26
销售订单
81
S01
61
53
销售发票(普通)
86
I05
62
47
销售发票(专用)
80
I04
62
46
虚仓出库
26
ZOU
79
62
虚仓调拨
74
P05
85
60
虚仓入库
6
ZIN
54
61
单据、序时簿、套打相关对象类型表直接的关联关系,可以参照下面SQL语句:
selectdistincta.fname,a.fid,a.ftemplateid,b.ftemplateidasflistid,b.fnameasflistname,c.fnotetypeidfromictransactiontypea
innerjoiniclisttemplatebona.fid=b.fbilltemplateid
innerjoinglnotetypecona.ftemplateid=c.ftemplateid
orderbya.fname
第二节专业版数据库常用表介绍
ictransactiontype单据类型表(FTemplateID是关联模板信息表的字段,FID关联ICStockBill中的FTranType字段)
ictemplate,ictemplateentry单据模板信息主子表
icinvbal物料库存余额表(包含FAuxPropID),icbal物料库存余额表
icinventory:
物料即时库存数据存放表
icstockbill除组装拆卸外的库存类单据主表
icstockbillentry除组装拆卸外的库存类单据明细表
icstockbill中调整单类型号100,当FBillTypeID为12542代表调入,FBillTypeID为12541代表调出
ICPurchase采购发票主表
ICPurchaseEntry采购发票明细表
icsale销售发票主表
icsaleentry销售发票明细表
selectFInvoiceAmountFor,FInvoiceAmount,FReceiveAmountFor,FReceiveAmount,FUnReceiveAmountFor,*fromicsalewhereFInterID=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*fromT_RP_CheckInfo
ICHookRelations暂估处理发票钩稽关系表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 金蝶 KIS 专业版 二次开发 技术 详解
![提示](https://static.bdocx.com/images/bang_tan.gif)