利用AO采集金蝶K3财务软件数据库数据的步骤与方法某市某公司使用的是金蝶软件公司开发的K3财务管理系统,其版本为v10.4,后台数据库为MicrosoftSQLServer2000。该公司于2007年建账,当时使用的是KIS标准版,在2009年的时候,账套由标准版升级到K3。另从2010年开始,重新建了帐套。这样,同一个公司,需要采集两个账套的数据,一个是07年到09年由KIS标准版升级而来的账套,一个是2010年新建的账套。但在使用AO进行数据采集时,审计人员仅能通过AO中的金蝶K39.31SQL备份模板,转换该公司2010年的财务软件备份数据,而2007年至2009年的备份文件却显示数据源不匹配。现通过采集软件数据库方式将其财务数据导入AO。采集转换的步骤与方法如下:一、采集原始财务软件数据库根据所需要的财务软件备份数据文件,通过K3的账套管理工具,找到该账套相对应的数据实体(即后台数据库),查找其存储路径,请对方计算机管理人员复制此数据库文件(该公司2007到2009年的账套文件,名称为:E:\K3账套\AIS20091104164640_data.mdf和E:\K3账套\AIS20091104164640_log.ldf),并附加到审计人员计算机中的SQL数据库中。二、简化数据库(一)找到所需要的源数据表使用SQL企业管理器,打开刚才附加的数据库,这里面有2500多个项目表。其中t_TableDescription为表描述表,说明了各张表的含义。根据它,我们可以轻松地找到t_Balance(余额表),t_Voucher(凭证表),t_VoucherEntry(凭证分录表),t_Account(科目表)。为方便使用,我们可以将上述表名分别改为yyeb(源余额表)、ypzb(源凭证表)、ypzfb(源凭证附表)、ykmb(源科目表)。(二)修改数据表的字段名金蝶K3的数据库中,表的列名都是英文的,对于不熟悉的审计人员来说,不方便识别。如果没有数据字典,我们可以从数据库中找到t_FieldDescription这张表。它是表字段描述表,说明了一些字段的含义。根据它,我们可以在表设计界面里,对照字段含义将上述几张表里的常用的列名分别由英文改为中文,注意不要变动各列的数据类型,改完保存即可。(三)新建简化数据库原数据库里数据太多,不方便查找且很多数据审计人员并不需要。我们可以新建一个数据库如:cssj(测试数据),再将原来的企业数据库中的4张表yyeb、ypzb、ypzfb、ykmb导入测试数据库。三、分析整理三张表在新建的cssj数据库中,我们可以通过查询分析,对需要导入AO的3张表进行整理。(一)整理科目表分析科目表ykmb中的“科目代码”字段,发现其编制不是很规则。它用小数点作为分隔符,共分4级,但有的级次编码位数不固定,如有的是4.3.2.2,有的是4.2.3.2等。(查询语句如下图)为了使科目表能顺利导入AO,须对“科目代码”字段进行修改,首先使编码统一为4-3-3-3,其次要去掉分隔符(测试时,如果不去掉会出错)。举例说明:查找二级科目的位数,发现科目代码有的是7位,如:5502.07,有的是8位,如:1002.001。这时,需将7位的变成8位,即在5502.后面加0,变成5502.007(SQL语句见下图)。采用同样的方法,可将三级和四级科目都统一编制成为规则的代码。语句示例如下:selectdistinctlen(科目代码)fromykmbwhere科目级次='3'(返回结果为11、12)select*fromykmbwherelen(科目代码)=11and科目级次='3'updateykmbset科目代码=left(科目代码,9)+'0'+right(科目代码,2)wherelen(科目代码)=11;selectdistinctlen(科目代码)fromykmbwhere科目级次='4'(返回结果为14)select*fromykmbwherelen(科目代码)=14and科目级次='4'updateykmbset科目代码=left(科目代码,9)+'0'+right(科目代码,5)wherelen(科目代码)=14;selectdistinctlen(科目代码)fromykmbwhere科目级次='4'(返回结果为15)select*fromykmbwherelen(科目代码)=15and科目级次='4'updateykmbset科目代码=left(科目代码,13)+'0'+right(科目代码,2)wherelen(科目代码)=15。在此基础上,我们用updateykmbset科目代码=replace(科目代码,'.','')fromykmb的语句去掉科目代码中的分隔符——小数点。经过以上整理,科目表已符合AO的导入要求。(二)整理凭证表源凭证表,分为两张表。一为凭证表ypzb,一为凭证分录表ypzfb。前者包含的字段主要有:会计年度、会计期间、凭证号、借方金额合计、贷方金额合计、单据类型、记账人、审核人等。后者包含的字段主要有:分录号、摘要、科目内码、核算项目、余额方向、原币金额、对方科目等。为了方便导入AO,最好通过“凭证内码”(唯一的凭证识别码)把凭证表ypzb和凭证附表ypzfb合并生成一张新凭证表(pzb)。考虑到凭证附表中只有“科目内码”(科目ID),没有能区分科目级别的“科目代码”。因此还需通过“科目内码”字段将凭证附表与科目表相关联,以将“科目代码”这个字段加入新的凭证表。SQL语句为:Selecta.凭证日期,a.会计年度,a.会计期间,a.凭证号,a.借方金额合计,a.贷方金额合计,a.单据类型,a.记账人,a.审核人,b.分录号,b.摘要,b.科目内码,b.核算项目,b.余额方向,b.原币金额,b.本位币金额,b.对方科目,c.科目代码intopzbfromypzba,ypzfbb,ykmbcwherea.凭证内码=b.凭证内码andb.科目内码=c.科目内码此时,凭证表(pzb)已整理完毕。因为本表中包含2007年至2009年的数据,为简化操作,把它们按年度筛选成3张表。Select*intopzb2009frompzbwhere会计年度=’2009’Select*intopzb2008frompzbwhere会计年度=’2008’Select*intopzb2007frompzbwhere会计年度=’2007’(三)整理余额表1、将源余额表增加“科目代码”字段数据库的源余额表中,也是只有“科目内码”,没有“科目代码”。我们同样可以通过选择源余额表里的所有内容以及科目表里的科目代码(两者通过“科目内码”关联),生成过渡余额表(gdyeb)。SQL语句为:selecta.*,b.科目代码intogdyebfromyyeba,ykmbbwherea.科目内码=b.科目内码2、将余额表分年度Select*intoyeb2009fromgdyebwhere会计年度=’2009’Select*intoyeb2008fromgdyebwhere会计年度=’2008’Select*intoyeb2007fromgdyebwhere会计年度=’2007’3、去掉余额表中核算项目内码为0的记录测试过程中,在将余额表导入AO后,有的会计科目如“在建工程”中的许多明细科目期初余额与账面数有较大误差,经过分析发现是由于这一级别的会计科目没有再设置下级明细科目,但设置了项目辅助核算。在余额表里面,表现为相同的科目代码,有着不同的核算项目内码和对应的余额。此时,这些科目的余额应该是该科目下辖的每个辅助项目的余额汇总数。如下图中:2009年8月份三级科目代码1603001002的科目名称为:“建设用地报批税费”。相同的三级代码共有3个,没有4级代码,分别对应的核算项目使用内码为“0、30、62”。其中内码为30的是指支付“建设用地报批税费”的对象之一“某市财政局”、内码为62的是指支付“建设用地报批税费”的对象之二“某市征拨土地事务处”,而内码为0的则是下面两个辅助核算单位的汇总数。但是AO在导入期初余额时因为1603001002号的科目没有下级编码,无法对3个相同的代码进行取舍,只取了其中核算内码为“30”的值,导致账表重建时期初余额出错。在没有找到更好的导入辅助信息的方法下,审计人员只有将期初余额全部都取“核算项目使用内码”为“0”的值,并生成新的余额表。如2009年的余额表查询语句为:select*intoxyeb2009fromyeb2009where核算项目使用内码='0'此时,余额表已整理完毕。(备注:这种办法的不足之处是对于一些设置了辅助核算的科目,无法看到其明细情况)四、利用AO采集转换功能生成电子帐套以2009年为例:将以上整理后的科目表ykmb、凭证表pzb2009、余额表xyeb2009,通过财务软件数据库采集方式导入AO,然后利用辅助导入向导按照提示输入即可完成。1、在AO中新建审计项目。2、采集转换,使用辅助导入功能。步骤:(1)会计期间定义:——财务数据——财务软件数据库数据——采集数据,新建账套——添加数据源为SQL——使用windownt集成安全设置——选数据库名(cssj)——测试连接——选表ykmb,pzb2009,xyeb2009——生成财务数据临时表——凭证表为一张表——辅助导入——2009——保存,关闭;(2)科目余额表:辅助导入——选余额表xyeb2009——是否存储多年科目余额:否(因为已将源表分年度)——只存储余额,根据余额正负决定余额借贷方向(可通过查看得出此结论)——期初余额:“本币期初余额”,正-借,负-贷——科目编码的存储方式,一个字段:“科目代码”——科目余额按月存储,会计月字段:“会计期间”,年初余额在“1”月——导入。(3)会计科目表:辅助导入——选会计科目表ykmb——是否存储多年会计科目表,否——一个字段:“科目代码”——会计科目名称:“科目名称”——导入科目借贷方向:1-借,-1-贷——导入。(4)科目设置:辅助导入——科目设置:规则——科目编码格式:4-3-3-3,——保存,关闭。(5)凭证库:辅助导入——选凭证表pzb2009——不存储多年凭证——无记账标志,凭证日期字段:“凭证日期”——凭证流水号字段:“凭证号”,凭证类型字段:“单据类型”——存储发生额和借贷方向——发生额字段:“本位币金额”,发生额方向字段:“余额方向”,借方1,贷方0——摘要字段:“摘要”,科目编码字段:“科目代码”——其他附件之类的不需导入——完成,关闭生成财务数据临时表向导。(6)进行会计科目调整——账表重建。3、通过AO的账表分析功能进行辅助审计(根据审计人员经验进行)。