用友R9升级版财务数据导入AO的采集和转换方法

作 者:
任杏 

作者简介:
任杏,吉林省审计厅

原文出处:
当代审计

内容提要:


期刊代号:V3
分类名称:审计文摘
复印期号:2013 年 09 期

关 键 词:

字号:

      日前,审计人员为某行政单位预算执行审计进行电子数据采集整理工作。该单位使用财务管理软件为用友政务R9会计集中核算收支分类改革版,并经过升级。审计人员经沟通取得近三年财务数据备份.Bak文件,通过对原始财务电子数据的分析和整理,总结了一些用友R9升级版财务数据的采集和整理方法,与大家共同探讨。

      本次数据整理目的:一是将被审计单位财务资料导入AO软件,以便其他审计人员能够查阅;二是尽量通过数据库分析方法,找到和发现准确的审计切入点,以提高工作效率和质量。

      方法一:AO模板导入

      AO模板导入简单快捷,是数据整理的首选方法。但AO中无本例直接对应的财务软件转换模板,审计人员多次试探,如,使用用友安易GRP_R9数据库备份模板导入,均无法重建账套,仅能导入凭证库,观察导入的凭证,仅有科目代码而不能显示会计科目,至此,模板导入失败。

      方法二:sql采集整理

      审计人员分析模板导入的凭证库,初步猜测是财务数据的会计科目表与采集模板中科目表不匹配,决定利用sql进入后台数据库,观察并整理数据资料。

      第一步 利用.Bak文件恢复数据库。

      首先,显示备份文件中的逻辑文件名

      restore filelistonly from disk='C:\11.bak'

      然后,用语句恢复数据库

      restore database zw8897_R972_R9

      from disk='C:\11.bak'

      with move 'acctTplt' to 'C:\Program Files\Microsoft SQLServer\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\zw8897_R972_R9.mdf',move 'acctTplt_log' to 'C:\Program Files\MicrosoftSQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\zw8897_R972_R9.ldf'

      

      如上图所示,代码中,C:\11.bak是备份回来的文件存放路径;zw8897_R972_R9是恢复的数据库名,从显示结果中可以看到;acctTplt、acctTplt_log是显示出的逻辑文件名;C:\Program Files\Microsoft SQLServ_er\MSSQL10_50.SQLEX-PRESS\MSSQL\DATA,是恢复后的数据库存放路径。

      第二步 整理数据库

      1.找表。R9升级版中科目表、余额表、凭证表的命名基本遵循用友常用规则,凭证分主表、从表两张表存储。

      

      2.整理

      (1)科目表

      首先,分析科目代码(kmdm)字段的编码方式。

      select distinct len(kmdm)frm GL_Kmxx

      

      由此可见,该单位科目代码为7级编码,长度3-2-2-2-2-2-2。

      然后,确定会计年度。由于备份文件是被审计单位提供,为加强对资料的了解,审计人员试探性测试科目表:

      select kmdm,count(*)from gl_kmxx group by kmdm

      以会计科目分组,科目数量为1至4,最大是4。

      select kjnd,count(*)from gl_kmxx group by kjnd

      以会计年度分组测试,执行结果如下:

      

      由此得出,备份数据的会计年度为2007至2010年,是4个年度的数据备份。按年度整理科目表,将2010年科目表命名为b。

      select distinct rtrim(kmdm)kmdm,kmmc into b

      from GL_Kmxx where kjnd='2010'

      最后,整理科目代码表

      select km.kmdm,km.kmmc,kmqc=kl.kmmc

      +case when len(km.kmdm)3 then'/'+k2.kmmcelse"end

      +case when len(km.kmdm)5 then'/'+k3.kmmcelse"end

      +case when len(km.kmdm)7 then'/'+k4.kmmcelse"end

      +case when len(km.kmdm)9 then'/'+k5.kmmc else"end

      +case when len(km.kmdm)11 then'/'+k6.kmmc else"end

相关文章: