扫码下载APP
及时接收最新考试资讯及
备考信息
今年在对某单位开展计算机审计时,了解到被审计单位财务核算软件为用友8.0,后台数据库为SQL Server 2000。笔者使用用友8.x SQLServer备份模板将该单位财务数据导入到AO中,但在进行会计科目审查时发现,由于被审计单位对预付账款、其他应收款、应付账款等往来核算项目实行了辅助核算,因此在AO科目审查中无法查看到往来核算明细科目。
在这种情况下,审计人员要对往来核算明细进行审查,就仍然要翻阅手工明细账,给审计工作带来了很大的不便,也极大地影响了审计效率的提高。笔者经过对财务软件后台数据库表进行分析,探索出了利用Access查询生成新的科目表、余额表及凭证表,从而实现在AO中导入往来辅助账的方法,介绍出来供读者参考。
一、确定导入往来辅助账所需要的数据表及表间关系
(一)基本数据表:
1.code 科目表;
2.GL_accsum 科目余额表;
3.GL_accvouch 凭证表
(二)往来辅助核算表:
1.Customer 单位往来编码表
2.Person 个人往来编码表
3.Vendor 应付款项编码表
(三)辅助核算表与凭证表之间的关系如下所示:
序号 | 凭证表 | 关联字段 | 辅助核算表 | 关联字段 |
1 | GL_accvouch | cperson_id | Personc | PersonCode |
2 | GL_accvouch | ccus_id | Customer | CusCode |
3 | GL_accvouch | csup_id | Vendor | VenCode |
二、具体步骤
(一)采集原始数据并进行数据整理
1.采集数据。从被审计单位采集用友8.0财务软件的SQL Server备份数据,拷贝到审计人员的电脑中进行数据库还原,然后选择code、GL_accsum、GL_accvouch、Customer、Person、Vendor共六张表导出到Access数据库中。
2.数据整理。由于被审计单位在对辅助核算科目进行编码时存在个别不规则的现象,因此要对数据进行规范化整理。例如Customer表的cCusCode字段应以“KH”加数字编码组成,对其进行整理时,执行如下查询:
Select * from Customer where cCusCode not like 'KH*'
筛选出编码不规则的记录,利用编辑菜单的替换功能进行批量更改。Person表的cPersonCode字段应以“GR” 加数字编码组成,Vendor表的cVenCode字段应以“GYS”加数字编码组成,整理方法同Customer表。
(二)生成新的数据表
1.生成新科目余额表
⑴生成余额表。查询语句如下:
SELECT GL_accsum.ccode AS 科目编码, GL_accsum.mb AS 期初余额, GL_accsum.cendd_c AS 余额方向 INTO 余额表 FROM GL_accsum
WHERE (((GL_accsum.iperiod)=1))
ORDER BY GL_accsum.ccode;
⑵生成往来余额明细表。查询语句如下:
SELECT GL_accvouch.ccode AS 科目编码, GL_accvouch.md AS 借方余额, GL_accvouch.mc AS 贷方余额, GL_accvouch.cperson_id AS 个人往来编码, Person.cPersonName, GL_accvouch.csup_id AS 应付单位编码, Vendor.cVenName, GL_accvouch.ccus_id AS 单位往来编码, Customer.cCusName, GL_accvouch.dbill_date INTO 往来余额明细表
FROM Vendor RIGHT JOIN (Customer RIGHT JOIN (Person RIGHT JOIN GL_accvouch ON Person.cPersonCode = GL_accvouch.cperson_id) ON Customer.cCusCode = GL_accvouch.ccus_id) ON Vendor.cVenCode = GL_accvouch.csup_id WHERE (((GL_accvouch.dbill_date) Like '2007-12-31'));
⑶生成新往来余额表。查询语句如下:
SELECT
IIf([单位往来编码] Is Not Null,IIf(Len([单位往来编码])=3,余额表.科目编码+'0'+Right([单位往来编码],1),余额表.科目编码+Right([单位往来编码],2)),
IIf([应付单位编码] Is Not Null,IIf(Len([应付单位编码])=4,余额表.科目编码+'0'+Right([应付单位编码],1),余额表.科目编码+Right([应付单位编码],2)),
IIf(Len([个人往来编码])=3,余额表.科目编码+'0'+Right([个人往来编码],1),余额表.科目编码+Right([个人往来编码],2)))) AS 新科目编码,
IIf([借方余额]>0,[借方余额],[贷方余额]) AS 余额,
IIf([借方余额]>0,'借','贷') AS 方向,
IIf([cpersonname] Is Not Null,[cpersonname],IIf([cvenname] Is Not Null,[cvenname],[ccusname])) AS 科目名称 INTO 新往来余额表
FROM 往来余额明细表 INNER JOIN 余额表 ON 往来余额明细表.科目编码 = 余额表.科目编码;
⑷生成新余额表。查询语句如下:
SELECT * INTO 新余额表 FROM [SELECT * from 余额表
union select 新科目编码,余额,方向 from 新往来余额表]. AS A
ORDER BY A.科目编码;
2.生成新凭证表
⑴生成新凭证中间表。查询语句如下:
SELECT GL_accvouch.dbill_date AS 编制日期, GL_accvouch.ino_id AS 凭证编号, GL_accvouch.ccode AS 科目编码, GL_accvouch.md AS 借方金额, GL_accvouch.mc AS 贷方金额, GL_accvouch.cdigest AS 摘要, GL_accvouch.cperson_id AS 个人编码, Person.cPersonName, GL_accvouch.ccus_id AS 单位往来编码, Customer.cCusName, GL_accvouch.csup_id AS 应付款编码, Vendor.cVenName INTO 新凭证中间表
FROM Vendor RIGHT JOIN (Person RIGHT JOIN (Customer RIGHT JOIN GL_accvouch ON Customer.cCusCode = GL_accvouch.ccus_id) ON Person.cPersonCode = GL_accvouch.cperson_id) ON Vendor.cVenCode = GL_accvouch.csup_id
WHERE (((GL_accvouch.dbill_date) Like '2008*') AND ((GL_accvouch.ino_id) Is Not Null))
ORDER BY GL_accvouch.dbill_date, GL_accvouch.ino_id;
⑵生成新凭证表。查询语句如下:
SELECT 新凭证中间表.编制日期, 新凭证中间表.凭证编号,
IIf([单位往来编码] Is Not Null,IIf(Len([单位往来编码])=3,[科目编码]+'0'+Right([单位往来编码],1),[科目编码]+Right([单位往来编码],2)),
IIf([应付款编码] Is Not Null,IIf(Len([应付款编码])=4,[科目编码]+'0'+Right([应付款编码],1),[科目编码]+Right([应付款编码],2)),
IIf([个人编码] Is Not Null,IIf(Len([个人编码])=3,[科目编码]+'0'+Right([个人编码],1),[科目编码]+Right([个人编码],2)),[科目编码])
)) AS 新科目编码,
新凭证中间表.借方金额, 新凭证中间表.贷方金额, 新凭证中间表.摘要 INTO 新凭证表 FROM 新凭证中间表;
3.生成新科目表
⑴生成科目表。查询语句如下:
SELECT code.ccode AS 科目编码, code.ccode_name AS 科目名称 INTO 科目表 FROM code;
⑵生成新科目表。查询语句如下:
SELECT * INTO 新科目表
FROM (SELECT DISTINCT
iif([单位往来编码] Is Not Null,IIf(Len([单位往来编码])=3,科目表.科目编码+'0'+Right([单位往来编码],1),科目表.科目编码+Right([单位往来编码],2)),
IIf([应付款编码] Is Not Null,IIf(Len([应付款编码])=4,科目表.科目编码+'0'+Right([应付款编码],1),科目表.科目编码+Right([应付款编码],2)),
IIf([个人编码] Is Not Null,IIf(Len([个人编码])=3,科目表.科目编码+'0'+Right([个人编码],1),科目表.科目编码+Right([个人编码],2)),科目表.科目编码))) AS 新科目编码,
iif([单位往来编码] Is Not Null,[ccusname],
iif([应付款编码] Is Not Null,[cVenName],
iif([个人编码] Is Not Null,[cPersonName],[科目名称])
)) AS 新科目名称
FROM 新凭证中间表 RIGHT JOIN 科目表 ON 新凭证中间表.科目编码 = 科目表.科目编码
union select * from 科目表 union select 新科目编码,科目名称 from 新往来余额表) AS A;
(三)利用AO采集转换功能生成电子账套
将以上在Access数据库中整理后形成的新科目表、新余额表和新凭证表,通过财务软件数据库采集方式导入AO,然后利用辅助导入向导按照提示输入即可完成。
(四)数据核对
数据导入AO完成后,需对操作的准确性进行判断。可从AO 的“审计分析/账表分析/报表审查”菜单生成被审计单位的资产负债表,与该单位的纸制报表进行核对;或“审计分析/账表分析/会计科目审查”界面,将科目树中的信息与被审计单位提供的纸制会计账簿进行核对。如果相符,则证明数据导入成功。
三、几点体会
审计人员在数据采集过程中遇到需要采集辅助账的情况时,只要通过对数据库表进行认真分析,找出导入数据所需的关键数据表及其相互关系,就可以实现将辅助核算数据导入AO中。例如本例中通过Access查询实现导入往来辅助账后,审计人员可以方便地在AO中对往来明细科目进行审查,极大地提高审计工作效率。
上一篇:加快计算机速度的六小技巧
Copyright © 2000 - www.chinaacc.com All Rights Reserved. 北京正保会计科技有限公司 版权所有
京B2-20200959 京ICP备20012371号-7 出版物经营许可证 京公网安备 11010802044457号