中国财务软件数据接口标准CSIA/ABM 98001号
中国软件行业协会财务及企业管理软件分会
编者按:标准应该是衡量事务的准则。标准的制定一般都由国际/国家有关标准机构或行业主管部门完成。但一些行业的生产厂商为了保护用户的投资,促进行业有序发展,也根据本行业的特点,联合起来制定了一些大家认可并共同遵守的规范,这种做法在国外已被广泛采用。随着中国改革开放的深入,国内一些行业的厂家也开始进行这方面的探索,本期我们刊登的《中国财务软件数据接口标准》就是由该财务软件行业的民间组织——中国软件行业协会财务及企业管理软件分会制定的,起草者为著名财务软件厂商深圳金蝶公司。
一、背景
目前,国内财务软件众多,它们采用的数据库平台和数据库结构各不相同,不同财务软件之间的数据交换,因为数据库平台和结构不同而产生许多困难,几乎任意两个不同软件之间要实现数据传递都会存在专门的数据转换问题。烦琐的数据转换工作浪费了大量人力和物力,同时也阻碍了财务软件产业的健康发展。国内财务软件的商业化已经比较成熟,各财务软件公司都有一批用户。由于各种原因,一些用户希望从一个软件交叉升级为另一软件。由于用户在旧软件上已做了大量的工作,必然希望升级后原有数据能移植到新的软件中,但是有些软件的数据文件经过加密或数据库结构未公开,要从中直接读取数据几乎不可能。为了保护用户已付出的劳动,各财务软件需要提供一个标准的数据输入输出接口。这样,建立一个公用的数据交换标准是非常必要的。
用户在使用财务软件时,有一些需求通过财务软件本身是难以实现的,如:用户希望把会计报表通过电子表格软件处理输出为各种特殊形式;另一些高级用户,则希望在其他管理软件中能取到财务数据。这些数据交换工作都需要有一个标准的数据接口来规范。财务会计经过长期的发展已形成一定的理论,财务会计工作也有规范可循,国内财务软件是在这些理论和规范的基础上开发出来的,各软件保存财务数据的模式也大同小异。财务数据主要按会计科目、凭证、余额及发生额、报表几个部分分块存储,它们之间既分离又紧密相连、不可分割。这使财务软件数据接口标准有了产生的理论基础和可能性。
二、目的
1. 增进财务软件之间的交流,便于相互数据转换。
2. 保护财务软件用户的利益,为用户的特殊需求和二次开发提供数据接口。
3. 便于政府和行业主管部门编制汇总和合并报表。
三、适用范围
本标准适用于我国各种财务软件以及与财务有关的其他管理软件。
四、描述
本标准规定:
数据交换以计算机文件作为媒介。计算机文件分为两类,一类是格式定义文件,一类是数据文件。在一次数据交换中文件数可能有多个,但格式定义文件只有一个,其余文件全部是数据文件。下面分别对两种文件进行描述:
1. 格式定义文件
格式定义文件名规定为:FORMAT.INI。格式定义文件描述了数据来源、数据文件名、数据结构以及一些用户定义信息。格式定义文件以文本方式存储,分为帐套、会计月历、科目、货币、凭证、余额、报表七个段,每一段中有若干项目,用户可以根据需要增加自定义段或项目。格式定义文件的语法和说明如下:
表1
语法 | 语法 |
[帐套] 帐套名称=当前帐套名称 单位名称=当前帐套使用单位的名称 启用会计期=当前帐套启用会计期 会计年度=当前帐套会计年度 软件名称=某财务软件 软件版本=版本号 帐套号=当前帐套号 |
帐套段开始,段名曲方括号括起,“帐套”是关键字。 “帐套名称”是关键字,等号右边为当前输出帐套的名称。 “单位名称”是关键字,等号右边为当前输出帐套的使用单位名称。 “启用会计期”是关键字,等号右边为当前输出帐套的启用会计日期(格式为:YYMMDD) “会计年度”是关键字,等号右边为当前输出帐套的会计年度(格式为:YYYY) “软件名称”是关键字,等号右边为操作源帐套的软件名称。 “软件版本”是关键字,等号右边为操作源帐套的软件版本号。 “帐套号”推荐使用项目,但不是关键字,等号右边为当前输出帐套的代码,用字符串表示 |
[会计月历] 期间数=本会计年度期间数 期间=期间,起始日期,结束日期,是否结帐 |
会计月历段开始,段名曲方括号括起,“会计月历”是关键字。 “期间数”是关键字,等号右边为当前帐套当前会计年度的会计期间数。 “期间”是关键字,等号右边分为四个部分,各部分用“,”隔开,其中:“期间”表示 要描述的期间,“起始日期”表示该期间的起始日期(格式:YYMMDD),“结束日期”表示该期间的结束日期(格式:YYMMDD),“是否结帐”表示该期间是否已结帐(0表示未结帐,1表示已结帐。 如:期间=2,19980201,19980228,1表示第二期从1998年2月1日至1998年2月28日,已经结帐 |
[科目] 文件名=科目文件名 |
科目段开始,“科目”是关键字 “文件名”是关键字,等号右边保存科目数据的文件名。科目文件和结构定义文件不在同一目录时,文件名可以不包含路径,本标准推荐科目文件和结构定义文件在同一目录, 科目文件名为“ACCOUNT.DAT” |
表2
语法 | 说明 |
科目级数=级数 科目结构=第1级长,第二级长.... 字段数=字段数目 字段=字段名,位置,类型 |
“科目级数”是关键字,等号右边是科目的最大级数 例如:科目级数是4 ”科目结构“是关键字,等号右边描述每级科目代码字符长度,每级长度之间用“,”隔开 如:科目结构=3,2,2,2。 “字段数”是关键字,等号右边表示科目文件中存储数据的字段数目。 “字段”是关键字,等号右边描述某一字段的意义和结构信息,之间用“,”隔开, 字段名描述该字段的意义,位置描述该字段在所有字段中的排列次序,类型表示字段的数据类型。本标准中预定了以下几个常用字段 科目代码 科目几次 科目名称 科目类别 科目方向 科目单位 币别 以上字段名都是关键字,在科目文件的结构定义中,上面6个字段缺一不可(其中借贷方向 表示余额的科目方向。)科目类别根据会计要素进行分类:资产、负债、权益、成本、损益 借贷方向取值方法为:“借”或“贷”科目级次表示本科目属于第几级科目,币别表示科目核算的币种,用字符串表示,当科目取“*”表示科目核算所有币种,用户可以字定义一些字段,但其字段名不得与以上字段名相同。 本标准预定义不了以下几个数据类型: 数值型 字符串型 布尔型(1-TRUE,0-FALSE) 日期型(格式为:YYMMDD,年4位,月2位,日2位) 举例如下: 字段=科目名称,2,2 表示科目文件的结构中第二个字段为“科目名称”,其类型为字符串。 字段=是否核算外币,5,3 表示科目文件的结构中第5个字段为自定义字段“是否核算外币”,其类型为布尔型。 |
表3
语法 | 说明 |
[货币] 文件名=货币文件名 字段数=字段数目 字段=字段名,位置,类型 |
货币段开始,“货币”是关键字 参照科目段说明 货币文件名推荐为“CY.DAT” 参照科目段说明 参照科目段说明,本标准预定义字段名为: 货币代码 货币名称 是否本位币(取值方法、0表示否,1表示是) 折算方式 以上字段在凭证文件的数据结构中缺一不可,其中折算方式字段用字符串“*”表示乘法, 字符串“/”表示除法。另外推荐使用下面字段: 汇率类型 汇率小数 折算误差 其中汇率类型分为固定汇率,变动汇率两种。 |
[凭证] 文件名=凭证文件名 字段数=字段数目 字段=字段名,位置,类型 |
凭证段开始,“凭证”是关键字 参照科目段说明,凭证文件名推荐为“VOUCHER.DAT” 参照科目段说明 参照科目段说明 本标准预定义凭证字段名为: 期间 凭证日期 凭证字 凭证号 摘要 科目代码 货币代码 汇率 原币金额 借方金额 贷方金额 数量 单价 制单人 审核人 过帐人 附单据数 是否已过帐 以上字段在凭证文件的数据结构中缺一不可,另外推荐使用下面字段: 结算方式 结算号 程序员还可以根据需要自定义字段,自定义字段名不能与以上预定义字段名相同。 |
[余额] 文件名=余额文件名 字段数=字段数目 |
余额段开始,“余额”是关键字 余额文件名推荐为“BAI.DAT” 参照科目段说明 |
表4
语法 | 说明 |
字段=字段名,位置,类型 |
参照科目段说明 本标准预定义余额字段名为: 会计年度 会计期间 科目代码 货币代码 原币本期借方发生额 本位币本期借方发生额 本期借方数量 原币本期贷方发生额 本位币本期贷方发生额 本期贷方数量 原币期末借方发余额 本位币期末借方发余额 期末贷方数量 原币期末贷方发余额 本位币期末贷方发余额 期末贷方数量 原币期初借方发余额 本位币期初借方发余额 期初借方数量 原币期初贷方发余额 本位币期初贷方发余额 期初贷方数量 以上字段在余额文件结构中缺一不可 |
[报表] 报表数=报表数目 报表名=报表名,报表文件名 字段数=字段数目 字段=字段名,位置,类型 |
报表段开始,“报表”是关键字 “报表”是关键字。等号右边是本次数据交换报表(文件)个数。 “报表名”是关键字 数据交换可以有多个报表,一个报表保存在一个文件中,报表名与报表文件名不能重复 报表文件和本格式定义文件不在同一目录时,报表文件名可以不包含路径 参照科目段说明 参照科目段说明 本标准预定义报表字段名为: 会计年度 会计期间 行号 列号 类型(取值方法:1表示数值型,2字符型) 值 |
以上格式文件定义了用于财务交换的内容、结构和数据文件,真正的财务数据保存在数据文件中。
2. 数据文件
本标准规定:
(1) 数据文件采用文本方式保存;
(2) 每一条记录在文件中是一行;
(3) 行与行之间通过"回车换行"分隔;
(4) 每一行中包括格式文件中定义的所有有关字段;
(5) 字段之间用制表符(ASCII码为9)分隔;
(6) 一个数据文件中每一行的字段数必须相同;
(7) 若字段为空,制表分隔符不能省略;
(8) 数值型数据左对齐,其余类型数据右对齐。