现场审计实施系统(AO)在资料管理功能中提供了会计电算化系统内部控制、固定资产内部控制、货币资金内部控制等9个内控调查模板,以供审计人员在审计被审计单位的内控管理情况时使用。如何更好地利用这些模板,高效、准确地对被审计单位的内控情况作出评价呢?笔者在审计的过程中以其中的货币资金内控调查模板为例通过编写asl脚本语言,进行自动测评,提高了工作效率,取得了较好的成效。 一、审计思路 将AO中提供的货币资金内部控制调查参考模板进行整理生成货币资金内控调查表,由被审计单位填写相关内控措施是否符合后作为业务数据连中关键控点表(只包含关键控点列,无初始值)引入AO系统。根据被审计单位的实际情况,选择该单位的关键控点输入计算机,同时赋予关键控点更重的权重。然后进行自动分析,对被审计单位现金内控情况进行打分、测评。最后将一般控点不符合要求和关键控点不符合要求分别插入疑点库,以便审计人员进行下一步审查。 二、所需数据 (一)货币资金内控调查表(编号、控制措施调查问题、是否符合、权重)。 (二)关键控点表(关键控点)。 三、分析步骤 步骤一:将AO中提供的货币资金内部控制调查参考模板(半结构化),结合被审计单位实际进行适当整理,生成货币资金内控调查表(结构化)。 (1)利用excel的工具-分列功能,将《资金内部控制调查参考模板》中“调查问题”列,拆分为2列,分别命名为“编号”和“控制措施调查问题”。 (2)删除《资金内部控制调查参考模板》中的“是”、“否”、“不实用”、“备注列”。 (3)增加一列“是否符合”,利用excel的工具-有效性,限定该列为选择性输入“是”或“否”。保证被审计人员填写调查表的准确性。 (4)新增一列“权重” 步骤二:被审计人员填写整理后的《货币资金内控调查表》,由审计人员审核后,连同《关键控点表》作为业务数据引入AO系统。 步骤三:初始化关键控点表和货币资金内控调查表。将货币资金内控调查表中“权重”列付值1。清空关键控点表的内容。 具体asl语句如下: Var i,j,k; begin k:='update[货币资金内控调查表]set[权重]=1';//将货币资金内控调查表中权重列初始值设为1 ExecuteUpdate(k); k:='delete from[关键控点表]’;//清空关键控点表的内容 ExecuteUpdate(k); 步骤四:审计人员判断该单位共有几个关键控点,并根据电脑的提示输入关键控点个数和关键控点序号。 var i,j,a,m,k; begin i:=Select CSTR(count(*))as控点数量From[货币资金内控调查表]';//统计货币资金内控调查表控点数 j:=CreateQ(i,-1); a:=QFDValuee(j,'控点数量'); showmsg('结合该单位实际和参考审计署模版设计的该单位[货币资金内控调查表]共有'+a+'个控点,您认为关键控点有几个?');//提示输入关键控点数量 read(i); j:=0; while j<>i do begin j:=j+1; showmsg('请输入关键控点'); read(k);//循环输入关键控点编号 m:='insert into[关键控点表](关键控点)values('+k+')';//将关键控点编号插入关键控点表 ExecuteUpdate(m);
步骤五:审计人员结合被审计单位情况增加关键控点的权重,根据提示输入关键控点的新权重。 var i,j,k; begin showmsg('所有控点的初始权重是1,您选择的关键控点将是本次审计重点审查对象,结合被审计单位的实际,您认为关键控点权重应更改为?'); read(i);///输入关键控点的新权重 k:='update[货币资金内控调查表]set[权重]=val('+i+')where CSTR([编号])in(select[关键控点]from[关键控点表])';//更新货币资金内控调查表中关键控点的权重数 ExecuteUpdate(k);
步骤六:将不符合要求的控点分别插入疑点库《一般内控不符合要求》和《关键控点不符合要求》。 Var,i,k,m,n,a,b,q,z,c; begin z:='Select*From[货币资金内控调查表]WHERE[是否符合]like "%否%"and[权重]=1';