金蝶曾经发布过“KIS财务接口使用说明“,
1、概述
接口插件名称为KISProfessionalPlugin.dll;该接口用到三个类,Voucher和VoucherEntry和clsDataBase。Voucher为’凭证头’类, VoucherEntry为凭证科目明细类(该类的对象作为类Voucher的一个属性使用),clsDataBase为数据库操作类。2、应用范围
Ø 金蝶KIS专业版V9.0及以上版本
3、接口说明
一、Voucher类属性和方法说明
4、调用示列
Private sub cmdSave_Click()
Dim objCn As Object
DimstrConn As String
Dimi As Integer
DimstrErrorNum As String
Dim strErrorDesc As String '但是少了下面一句,数据库连接语句,我把补充了。
strConn= "ConnectString={Persist Security Info=True;Provider=SQLOLEDB.1;User ID=sa;Password=kingdee;DataSource=127.0.0.1;Initial Catalog=KIS_Sample};UserName=Manager;UserID=16394;DBMSName=Microsoft SQL Server;DBMSVersion=2000;SubID=super;AcctType=gy;Setuptype=industry"
SetobjCn = CreateObject(“KISProfessionalPlugin.clsDataBase”)
‘//初始化数据库连接对象
objCn.InitConnection (strConn) ‘//strConn传入的数据库连接字符串
objCn.BeginTrans ‘//开始一个事务
‘//循环保存凭证,每次循环保存一张凭证。
For i = 0 To 3
If Not Savedata(i, strErrorNum, strErrorDesc) Then
objCn.RollBackTrans’//出错回滚事务
MsgBox "保存第"& i & "个凭证失败!失败原因:错误号:" & strErrorNum &" 错误描述:" & strErrorDesc
Exit Sub
End If
Next
objCn.CommitTrans’//提交事务
Set objCn=Nothing
MsgBox "保存成功!"
End sub
‘//保存凭证过程
Private Function Savedata(ByVal i As Variant, ByRef errornum AsVariant, ByRef errorDesc As Variant) As Boolean
Dim obj As Object
Setobj = CreateObject (“KISProfessionalPlugin.Voucher”)
‘//////----”凭证头”----------
obj.VchGroup = "收"
obj.VchAttachment= 2
obj.VchDate = CDate("2006-07-25")
‘//下面的代码说明怎么新增一个凭证科目明细,注意:在为obj对象的属性VouchEntry赋值前,要先执行obj.InsertEntry(新增一个凭证科目明细对象)
‘//新增一个借方凭证科目明细
obj.InsertEntry
obj.VouchEntry(obj.nCount -1).VchExp = "现金"
obj.VouchEntry(obj.nCount- 1).AcctID = " 1001.01"
obj.VouchEntry(obj.nCount- 1).VchDebit = 100
obj.VouchEntry(obj.nCount- 1).VchCyid = "RMB"
‘//新增一个贷方凭证科目明细
obj.InsertEntry
obj.VouchEntry(obj.nCount -1).VchExp = "销售出库"
obj.VouchEntry(obj.nCount- 1).AcctID = " 4101.03 "
obj.VouchEntry(obj.nCount - 1). VchCredit=100 (注意这里和上面VchDebit不同)
obj.VouchEntry(obj.nCount- 1).VchCyid = "RMB"
obj.VouchEntry(obj.nCount -1).ItemID = "152,100,162"
obj.VouchEntry(obj.nCount- 1).VchTransID = "343434"
Savedata= obj.Save()’//保存
'//保存失败返回错误编号和错误描述
IfNot Savedata Then
errornum= obj.ErrNumber
errorDesc= obj.ErrDescription
EndIf
Setobj = Nothing
Endfunction上面我放到专业版10.0的环境中测试能生成凭证传到专业版的演示帐套中,但是有一个问题,如果会计科目下挂了核算项目的情况,即使写了核算项目语句:obj.VouchEntry(obj.nCount -1).ItemID = "152,100,162",但核算项目也不会被添加到凭证分录中去的,就是想咨询一下总部的同事,这个能解决么?