K/3 系统凭证接口使用参考
客户化开发工具包参考手册
目录
目录 ...........................................................................................................1
概述 ...........................................................................................................1
凭证对象所需要的相关数据 ...............................................................................2
凭证头信息 ..............................................................................................2
凭证分录信息............................................................................................3
科目相关的核算项目 ...................................................................................3
银行科目相关的结算方式与结算号 ...................................................................3
现金流量科目相关的现金流量.........................................................................4
凭证数据的校验和控制点 ..............................................................................4
通过 Ebcgl 组件来操纵凭证接口 .........................................................................4
概述.......................................................................................................4
凭证查询 .................................................................................................4
凭证新增 .................................................................................................5
凭证修改 .................................................................................................6
凭证删除 .................................................................................................6
凭证汇总 .................................................................................................6
直接调用中间层来操纵凭证接口 .........................................................................6
GetList 方法(凭证浏览信息) .......................................................................6
GetDetail 方法和 GetDetailByNumber(凭证明细信息) .........................................7
新增凭证 .................................................................................................9
修改凭证 .................................................................................................9
删除凭证 .................................................................................................9
设置(取消)凭证/出纳复核函数 .....................................................................9
设置(取消)凭证审核函数 ...........................................................................9
指定凭证过帐函数 ......................................................................................9
指定凭证反过帐函数 ................................................................................. 10
当前凭证期间所有凭证反过帐函数 ................................................................. 10
凭证接口对象流程 ........................................................................................10
接口对象流程图 ....................................................................................... 10
概述
凭证是 K/3 系统财务模块中一个重要的支撑子模块,所以在 K/3 系统的二次开发过程中,用户对于获
1
取 K/3 系统本身的凭证信息,和开发外部程序向 K/3 系统中存储凭证等凭证的相关处理上都有较迫切的需
求,但原有的很多的开发都是基于直接读取数据库等方式进行的。这样不仅效率低下,而且开发的周期长、
出错的几率较高。K/3 系统本身独特而先进的三层结构技术,在系统的设计过程中就已经考虑到了如何的
灵活、正确、快捷的去让用户自定义自己的一些应用。在凭证这个模块上,提供了通过客户端组件调用和
中间层接口实现等多种方式来实现对 K/3 系统的凭证对象的各种操作。
注意:所有数据与中间层接口传送采用都采用 KFO(KFO10.dll)中的 Dictory 及 Vector 接口。
通过该说明文档,你可以了解到
1. 凭证对象所需要的相关数据。
2. 如何通过客户端组件来实现凭证数据的交互。
3. 如何通过中间层组件来实现凭证数据的交互。
4. 凭证相关的开发的策略。
该文档阅读的适用对象
1. 金蝶软件研发中心的程序员
2. 需要通过 K/3 的数据客户端读取相应的凭证信息的开发者
3. 需要编写自己的客户端与 K/3 系统中间层进行数据交换的行业开发者
4. 需要了解 K/3 系统客户端于中间层如何进行数据交换的技术爱好者
凭证对象所需要的相关数据
一张凭证所包含的信息主要有:凭证头、凭证体、币别信息、与科目相关的核算项目和结算方式与结
算号。
凭证头信息
从以上的凭证录入界面的一部分,我们可以看出凭证头信息所包含的内容主要有
数据信息
可供参考的字段命名
凭证日期
业务日期
凭证字
参考信息
FDate
FTransDate
FGroupID
FReference
2
FAttachments
FSerialNum
根据凭证日期和会计期间的设置而产生
凭证号为系统自动生成,不能手工指定。
附件张数
凭证序号
会计期间
凭证号
凭证分录信息
一张凭证中可以包含有两条或者两条以上的凭证分录,每条凭证分录中包含有以下信息。
数据信息
可供参考的字段命名
FExplanation
FAccountID
FCurrencyID
FMeasureUnitID
FExchangeRate
Fdebit
Fcredit
FAmountFor
摘要
科目
币别
计量单位
汇率
借方金额
贷方金额
总计
科目相关的核算项目
在凭证中的每条凭证分录中,当所选明细科目中包含核算项目时,则可以录入相关的核算项目信息。
核算项目所包含的数据内容有:
数据信息
可供参考的字段命名
核算项目类别 ID
FItemClassID
核算项目 ID
FitemID
银行科目相关的结算方式与结算号
当凭证中的的科目为“银行存款”科目的时候,则必须有相应的结算方式和结算号。
数据信息
结算方式
结算号
可供参考的字段命名
3
现金流量科目相关的现金流量
当凭证中的的科目为“银行存款”科目的时候,则必须有相应的结算方式和结算号。
数据信息
可供参考的字段命名
现金流量科目
币别
FitemID
FcurryID
本位币金额
FamountFor
凭证数据的校验和控制点
凭证信息之间有数据的合法性检查,如果要进行相应的凭证开发则必须注意以下的检查要点。
1. 检验凭证借贷方是否平衡。
2. 检验科目是否为最明细级。
3. 检验本位币金额是否等于汇率乘原币。
4. 检验金额是否等于数量乘单价。
5. 检验往来核算项目的客户是否已超出授信值。
通过 Ebcgl 组件来操纵凭证接口
概述
注意:本节所介绍内容的相关组件是 EBCGL10.DLL, EBCGLV10.DLL
在 Ebcgl 组件中有主要有 6 个对象:
1. VouCherSet,凭证 Recorderset 对象。
2. Voucher,凭证对象。
3. VoucherEntrySet,凭证分录 Recorderset 对象
4. VoucherEntry,凭证分录对象。
5. VoucherDetailSet,凭证核算项目 Recorderset 对象
6. VoucherDetail,凭证核算项目对象。
详细具体的属性、方法的描述,请参看“Ebcgl 组件参考手册”。
本篇所介绍的是通过 Ebcgl 组件如何的实现凭证的一些基本的功能。
凭证查询
可以对凭证信息中的每个字段进行条件过滤的查询。
4
凭证新增
可以在指定账套中按照指定的数据交换格式向系统新增一张凭证。
操作流程:
1. 调用 Ebcgl. VoucherSet 对象的 CreateNew 方法新建一个 Ebcgl.Voucher 对象。
2. 将 Voucher 对象中相应的属性赋值,包括:
属性名称
描述
Attachments
附件张数
数据类型
Long
Group 或者 GroupID 凭证字/凭证字 ID
String/Long
Number
Period
Reference
凭证序号
会计期间
参考信息
VoucherDate
凭证填制日期
TransDate
业务日期
Long
Long
String
Date
Date
3. Voucher 对象中的 Entries 属性是一个 VoucherEntrySet 对象,所以可以调用 Voucher 对象中
的 Entries 属性的 CreateNewEntry 方法,新建一条或者多条凭证分录,创建的是 VoucherEntry
对象。(必须是两条或者两条以上)
4. 将每个 VoucherEntry 对象的相应的属性赋值,包括:
属性名称
AccountID
CurrencyID
DC
Debit
Credit
描述
科目 ID
币别 ID
数据类型
Long
String/Long
借贷方向(1-借方 -1 –贷方) Long
借方金额(要和借贷方向结合) Curry
贷方金额(要和借贷方向结合) Curry
ExchangeRate
汇率
MeasureUnitID
计量单位 ID
Double
Long
5. 检查指定的 AccountID 科目是否为明细科目,通过 Ebcgl.AccountSet 对象来查询指定 ID 的
Ebcgl.Account 对象中的 Detail 属性。
6. 检 查 指 定 的 AccountID 科 目 是 否 有 核 算 项 目 , 则 通 过 EbcglView.GLData 接 口 中 的
GetAccountItem(lAccountID As Long)函数,将 AccountID 传入。返回值为一个 Recordset
对象。若指定 AccountID 科目没有核算项目则 Recordset.RecordCount 为零。
7. 如果有核算项目则通过 VoucherEntry 的 Details 属性,该属性为一个 Ebcgl.VoucherDetailSet
对象,调用该对象的 Add 方法,向该条凭证分录中增加相应的核算项目-Ebcgl.VoucherDetail
对象。属性赋值包括:
5
属性名称
描述
ItemClassID
核算项目类别 ID
ItemID
核算项目 ID
数据类型
Long
Long
8. 检查指定的 AccountID 科目是否是银行科目若是则必须录入结算方式和结算号。
9. 检查指定的 AccountID 科目是否是现金流量科目,若是则必须录入相应的现金流量科目。
10. 调用 Ebcgl.Voucher 的 SaveChanges 方法,将新增的凭证保存。
示例代码:
凭证修改
可以在读出相应的凭证信息,对其进行修改后再进行保存。
需要注意的是在更改了凭证分录的科目后,要检查核算项目、是否银行科目、是否现金流量科目的变
化。
凭证删除
可以删除指定账套中的指定的凭证。
通过调用 Ebcgl.VoucherSet 对象的 Remove 方法,就可以删除指定的凭证。
Remove 方法,请参看“Ebcgl 组件参考手册”。
凭证汇总
将记账凭证按照指定的范围和条件汇总其一级科目的借贷发生额。
直接调用中间层来操纵凭证接口
其实在大部分情况下 Ebcgl 组件已经可以满足开发者关于凭证接口的调用了。为了更加灵活使用凭证
接口进行相应的开发工作,我们也可以直接调用凭证中间层来完成相应的数据操作。凭证信息和中间层的
数据交换,其主要信息结构是通过 KFO 组件来进行传递的。而 KFO 的数据包则是通过调用中间层组件
EBSGLVoucher. VoucherInfo 和 EbSGLVoucher.VoucherUpdate 的接口来获取。
注意:凭证信息在存储打包和读取打包的时候其 KFO 数据包的结构是不一样的。
GetList 方法(凭证浏览信息)
参数
sDsn:账套连接参数,可以通过 K3Login 组件来得到
6
Options:Long 类型,缺省值为 0
Filter:过滤条件,String 类型,缺省值 vbNullString
Sort:排序方式,String 类型,缺省值 vbNullString
CursorLocation:Ado 的数据连接方式,Long 类型,缺省值 3
在 K/3 系统的账套中储存的有多张凭证,特别是在用户的业务相对较为复杂的时候,储存在一个账套
中的凭证信息可能会高达数万。如果我们在读取凭证的相关信息的时候,一次性的把所有的凭证信息读取
到客户端,则会因为数据量太大、速度慢而导致效率低下,显然这种方法是不可取的。
所以如果不需要凭证具体的明细信息,我们可以直接的调用 EbsglVoucher.VoucherInfo 接口的
GetList 方法。它的返回值是一个 KFO 的 Dictionary 对象,该对象主要的内容有以下部分:
字段名称
描述
数据类型
FvoucherID
Fdate
FgroupID
Fnumber
Fperiod
Fposted
Fchecked
凭证 ID
填置日期
凭证字 ID
凭证号
会计期间
是否过帐
是否审核
Long
Date
Long
String
Long
Boolean
Boolean
GetDetail 方法和 GetDetailByNumber(凭证明细信息)
GetDetail 和 GetDetailByNumber 方法返回的结果集的内容都是一样的,只是入口参数不一样。
GetDetail 方法是通过 VoucherID 来查询凭证的明细信息。
GetDetailByNumber 方法则是通过会计年度、会计期间、凭证字、凭证号来查询的。
GetDetail 的入口参数
SDsn:账套连接参数
VoucherID:凭证 ID
GetDetailByNumber 的入口参数
SDsn:账套连接参数,String 类型
Nyear:会计年度,Long 类型
Period:会计期间,Long 类型
Group:凭证字,Long 类型
Number:凭证号,Long 类型
7
字段名称
描述
FAttachments
附件张数
Fcashier
FcashierID
Fchecked
Fchecker
FcheckerID
Fdate
Fgroup
FgroupID
Fhandler
FinternalInd
Fnumber
FobjectName
出纳
出纳 ID
是否审核
审核人
审核人 ID
凭证日期
凭证字
凭证字 ID
会计主管
不为空是 机制凭证(不能修改
删除)
凭证号
其他系统传入凭证对象接口描
述
Fparameter
接口参数
Fperiod
Fposted
Fposter
FposterID
Fpreparer
凭证期间
是否过账
过账人
过账人 ID
制单人
FpreparerID
制单人 ID
Freference
FserialNum
FtransDate
FvoucherID
Fyear
_ Entries
参考消息
凭证序号
业务日期
凭证 ID
当前年期
凭证分录
CashFlowDetail
现金流转科目
数据类型
Long
String
Long
Boolean
String
Long
Date
String
Long
String
String
Long
String
String
Long
Boolean
String
Long
String
Long
String
Long
Date
Long
Long
Vector
Vector
8