如何实现用友政务软件辅助核算组向AO2011导入

作 者:

作者简介:
方心富,南陵县审计局

原文出处:
安徽审计

内容提要:


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

关 键 词:

字号:

      由用友政务软件公司开发的用友政务A++5.2是一款基于Oracle平台的财务管理软件产品。该软件对辅助账以“组”的方式存储,即对会计科目指定辅助核算项,每项之间以“/”分隔,其中每个部分代表一个辅助核算。通过ODBC将数据导入到SQL Server后,下面以凭证表(VOUCHER)、余额表(BALANCE)为例,详细讲解如何拆分辅助核算项,并将凭证表、余额表转换为“单表横排”、“单表竖排”格式,以实现向A02011现场审计实施系统的导入。

      一、科目表(ACCOUNT)、余额表(BALANCE)及凭证表(VOUCHER)结构

      1.科目表数据示例如下:

      

      科目表定义了每个科目的辅助核算内容,如500102020101科目(事业支出-非财政补助支出-项目支出-工资福利支出-基本工资)分别按资金来源、功能分类及项目信息内容进行辅助核算。

      2.凭证表数据示例如下:

      

      凭证表按科目表定义的辅助核算组,在辅助核算组列存储了各类辅助核算编码,并以正斜杠分割,编码顺序与科目表辅助核算项内容一一对应。

      3.余额表数据示例如下:

      

      余额表存储了每个科目各月的期初余额,辅助核算组列同样按科目表定义的辅助核算项内容、顺序反映各科目辅助余额。

      为了能详细反映单位往来、个人往来、部门核算、资金来源、功能分类、项目信息、专项核算等辅助核算内容,导入辅助凭证表及辅助余额表必须对上述凭证表、余额表进行适当处理,加工成符合AO2011格式。下面将凭证表、余额表分别按“单表横排”、“单表竖排”两种方式处理为例,详细介绍辅助凭证表、辅助余额表生成方法。

      二、数据处理方法

      1.辅助凭证表

      凭证表包含了辅助核算组,因此,它也是一张辅助凭证表。按辅助凭证表导入AO2011要求,各辅助核算内容应按辅助内容分列存储,即单位往来、个人往来、资金来源、专项核算等辅助项各占一列。为了实现上述要求,需要从凭证表中的辅助核算组中依次提取出每个辅助核算代码,普通的SQL语句较难实现,以下通过在SQL Server中编写一个UDF(用户自定义函数)实现提取功能。代码如下:

      CREATE FUNCTION get_new_str

      @v_str VARCHAR(4000),

      @v_sp CHAR(1),

      @n INT

      RETURNS VARCHAR(100)

      BEGIN

      DECIARE @new_str1 VARCHAR(100),@new_str2VARCHAR (4000),@s INT=1,@e INT,@count INT=1,@num INT,@chacter VARCHAR(100);

      DECLARE @tb AS TABLE (c INT,string VARCHAR(100));

      IF RIGHT(@v_str,1)<>@v_sp

      SET @new_str2=CONCAT(@v_str,@v_sp);

      SET @new_str2=@v_str;

      SET @num=LEN (@new_str2)-LEN (REPLACE(@new_str2,@v_sp,’’));

      WHILE @count<=@num

      BEGIN

      SELECT @e=CHARINDEX(@v_sp,@new_str2,@s);

      SELECT @new_str1=SUBSTRING(@new_str2,@s,@e-@s);

      INSERT INTO @tb(c,string)VALUES(@count,@new_str1);

      SELECT @s=@e+1;

      SELECT @count=@count+1;

      SET @chacter=(SELECT string FROM @tb WHERE c=@n);

      RETURN @chacter,

      函数dbo.get_new_str有三个参数,第一个参数是要处理的字符串,第二个参数是字符串中的分隔符号,第三个参数指定需要提取哪部分字符。如:dbo.get_new_str(‘501-3201-02’,’-‘,2)是将以“-”分隔的字符串“501-3201-02”第2部分提取出来,返回字符“3201”。如果分隔符输入错误或者截取的数字无效,将返回空值。

      因为该软件定义了单位往来、个人往来、部门核算、功能分类、资金来源等7个辅助核算,故辅助凭证表中要产生单位往来、个人往来、部门核算、功能分类、资金来源、项目信息、专项核算7列,分别存储各辅助核算代码。以下是将凭证表与科目表关联,调用dbo.get_new_str函数,并利用CASE语句判断,将从辅助核算组中提取的代码依次存入对应列中,示例中只对单位往来进行了拆分,其他辅助核算内容拆分原理相同,SQL语句如下:

相关文章: