龙图平台一体化财务核算数据导入AO2011的方法
近两年,我省各级财政部门陆续使用了龙图财政管理一体化信息系统,可满足预算编制、预算执行、收入管理、账务管理、监控分析等财政业务需求,全面覆盖财政资金范围,支撑财政资金运行的全过程管理,能够从多角度反映一级或多级财政的收支状况,该平台是以预算管理为源头,以国库收支管理为主线,以财政决算和查询分析为闭环回路结点的财政管理一体化信息系统。
目前在AO软件中没有龙图软件数据采集模板,本人经过对该系统数据结构的分析,经处理后成功导入AO软件,现总结出来与大家共飨。
一、数据采集
龙图财政管理一体化信息系统后台数据库为Oracle,审计人员可要求被审计单位将数据导出为数据库备份文件(dmp文件),在审计人员自己的笔记本电脑中安装Oracle数据库管理系统,用Oracle的imp命令将dmp文件还原至审计人员的笔记本电脑中,再将数据导入到一新建的SQL Server数据库中(可通过本人开发的MyOracleTool软件自动完成数据的还原、导出)。
二、数据整理
以下以某单位2012年总预算会计账套(账套号136)为例介绍一下数据整理的过程,如需整理其他账套和年度的数据,可修改SQL语句中的年度和账套号即可。
--科目表处理 IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_科目表') DROP TABLE 龙图_科目表 GO SELECT 科目编码=CAST(ACCTCODE AS VARCHAR(50)),科目名称=CAST(ACCTNAME AS VARCHAR(100)), 科目全称=CAST(WHOLENAME AS VARCHAR(200)),借贷方向=CASE WHEN DC=1 THEN '借' ELSE '贷'END INTO 龙图_科目表 FROM T_FMACCOUNT WHERE ACCTSYSTYPEID=136 ORDER BY ACCTCODE GO
--余额表 IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_余额表') DROP TABLE 龙图_余额表 GO SELECT 科目编码=CAST(ACCTCODE AS VARCHAR(50)),年初余额=CASE WHEN Y.DC=1 THEN STARTBAL ELSE -STARTBAL END INTO 龙图_余额表 FROM T_FMYEARINITBALREC Y JOIN T_FMACCOUNT K ON ACCOUNT=ACCTID AND ACCTSYSTYPE=ACCTSYSTYPEID WHERE ACCTSYSTYPE=136 GO
------逐级汇总余额表 DECLARE JC CURSOR FOR SELECT DISTINCT LEN(科目编码) FROM 龙图_余额表 ORDER BY 1 DESC DECLARE @JC INT,@XJ INT,@SJ INT,@SQL VARCHAR(200) OPEN JC FETCH NEXT FROM JC INTO @JC SET @XJ=@JC FETCH NEXT FROM JC INTO @JC WHILE @@FETCH_STATUS=0 BEGIN SET @SJ=@JC SET @SQL='INSERT INTO 龙图_余额表 SELECT LEFT(科目编码,'+STR(@SJ,2)+'),SUM(年初余额) FROM 龙图_余额表 WHERE LEN(科目编码)='+STR(@XJ,2)+' GROUP BY LEFT(科目编码,'+STR(@SJ,2)+')' EXEC(@SQL) SET @XJ=@SJ FETCH NEXT FROM JC INTO @JC END CLOSE JC DEALLOCATE JC GO
--凭证主表 IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_凭证主表') DROP TABLE 龙图_凭证主表 GO SELECT 凭证ID=CAST(VCHID AS INT),凭证类型=VCHCLSNAME,凭证日期=CAST(ACCTDATE AS DATE),凭证号=CAST(VCHNO AS INT), 附件数=APPENUM,制单人=ZD.NAME,审核人=SH.NAME,记账人=JZ.NAME INTO 龙图_凭证主表 FROM T_GLVOUCHERFM Z JOIN T_FMVOUCHERCLS L ON Z.VCHCLSID=L.VCHCLSID JOIN T_CAUSER ZD ON CREATER=ZD.USERID JOIN T_CAUSER SH ON AUDITOR=SH.USERID JOIN T_CAUSER JZ ON POSTER=JZ.USERID WHERE ACCTSYSTYPE=136 AND Z.ACCTYEAR=2013 ORDER BY 凭证ID GO
--凭证明细表 IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_凭证明细表') DROP TABLE 龙图_凭证明细表 GO SELECT 分录ID=CAST(RECID AS INT),凭证ID=CAST(VCHID AS INT),摘要=DIGEST,科目编码=CAST(ACCTCODE AS VARCHAR(50)), 借贷方向=CASE WHEN M.DC=1 THEN '借' ELSE '贷' END,金额=AMT,资金性质辅助核算项目ID=CAST(FUNDTYPE AS INT), 单位辅助核算项目ID=CAST(BDGAGENCY AS INT),功能辅助核算项目ID=CAST(EXPFUNC AS INT), 支出经济分类辅助核算项目ID=CAST(EXPECONORMIC AS INT),支付方式辅助核算项目ID=CAST(PAYTYPE AS INT), 银行账户辅助核算项目ID=CAST(AGENTBANK AS INT),付款账户辅助核算项目ID=CAST(PAYMENTBANKACCOUNT AS INT), 项目辅助核算项目ID=CAST(PROGRAM AS INT),预算来源性质辅助核算项目ID=CAST(FUNDSOURCE AS INT) INTO 龙图_凭证明细表 FROM T_GLRECORDFM M JOIN T_FMACCOUNT K ON ACCOUNT=ACCTID AND ACCTSYSTYPE=ACCTSYSTYPEID WHERE ACCTSYSTYPE=136 AND M.ACCTYEAR=2013 ORDER BY 凭证ID,ACCTSEQ,ACCTSEQSUB GO
--辅助余额表 IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_辅助余额表') DROP TABLE 龙图_辅助余额表 GO SELECT 科目编码=CAST(ACCTCODE AS VARCHAR(50)),借贷方向=CASE WHEN Y.DC=1 THEN '借' ELSE '贷' END, 年初余额=STARTBAL,资金性质辅助核算项目ID=CAST(FUNDTYPE AS INT), 单位辅助核算项目ID=CAST(BDGAGENCY AS INT),功能辅助核算项目ID=CAST(EXPFUNC AS INT), 支出经济分类辅助核算项目ID=CAST(EXPECONORMIC AS INT),支付方式辅助核算项目ID=CAST(PAYTYPE AS INT), 银行账户辅助核算项目ID=CAST(AGENTBANK AS INT),付款账户辅助核算项目ID=CAST(PAYMENTBANKACCOUNT AS INT), 项目辅助核算项目ID=CAST(PROGRAM AS INT),预算来源性质辅助核算项目ID=CAST(FUNDSOURCE AS INT) INTO 龙图_辅助余额表 FROM T_FMYEARINITBALRECDETAIL Y JOIN T_FMACCOUNT K ON ACCOUNT=ACCTID AND ACCTSYSTYPE=ACCTSYSTYPEID WHERE ACCTSYSTYPE=136 AND Y.ACCTYEAR=2013 GO
--资金性质辅助核算项目表(T_PUBFUNDTYPE) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_资金性质辅助核算项目表') DROP TABLE 龙图_资金性质辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBFUNDTYPE') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 资金性质辅助核算项目ID<>0 and 资金性质辅助核算项目ID IS NOT NULL) SELECT 资金性质辅助核算项目ID=CAST(ITEMID AS INT),名称=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_资金性质辅助核算项目表 FROM T_PUBFUNDTYPE GO
--单位辅助核算项目表(T_PUBAGENCY) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_单位辅助核算项目表') DROP TABLE 龙图_单位辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBAGENCY') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 单位辅助核算项目ID<>0 and 单位辅助核算项目ID IS NOT NULL) SELECT 单位辅助核算项目ID=CAST(ITEMID AS INT),名称=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_单位辅助核算项目表 FROM T_PUBAGENCY GO
--功能辅助核算项目表(T_PUBFUNC) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_功能辅助核算项目表') DROP TABLE 龙图_功能辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBFUNC') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 功能辅助核算项目ID<>0 and 功能辅助核算项目ID IS NOT NULL) SELECT 功能辅助核算项目ID=CAST(ITEMID AS INT),名称=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_功能辅助核算项目表 FROM T_PUBFUNC GO
--支出经济分类辅助核算项目表(T_PUBEXPECONORMIC) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_支出经济分类辅助核算项目表') DROP TABLE 龙图_支出经济分类辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBEXPECONORMIC') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 支出经济分类辅助核算项目ID<>0 and 支出经济分类辅助核算项目ID IS NOT NULL) SELECT 支出经济分类辅助核算项目ID=CAST(ITEMID AS INT),名称=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_支出经济分类辅助核算项目表 FROM T_PUBEXPECONORMIC GO
--支付方式辅助核算项目表(T_PUBPAYTYPE) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_支付方式辅助核算项目表') DROP TABLE 龙图_支付方式辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBPAYTYPE') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 支付方式辅助核算项目ID<>0 and 支付方式辅助核算项目ID IS NOT NULL) SELECT 支付方式辅助核算项目ID=CAST(ITEMID AS INT),名称=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_支付方式辅助核算项目表 FROM T_PUBPAYTYPE GO
--银行账户辅助核算项目表(T_PUBBANKACCOUNT) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_银行账户辅助核算项目表') DROP TABLE 龙图_银行账户辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBBANKACCOUNT') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 银行账户辅助核算项目ID<>0 and 银行账户辅助核算项目ID IS NOT NULL) SELECT 银行账户编码=CAST(AGENTBANK AS INT),银行账户名=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_银行账户辅助核算项目表 FROM T_PUBBANKACCOUNT GO
--付款账户辅助核算项目表(T_PUBBANKACCOUNT) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_付款账户辅助核算项目表') DROP TABLE 龙图_付款账户辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBBANKACCOUNT') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 付款账户辅助核算项目ID<>0 and 付款账户辅助核算项目ID IS NOT NULL) SELECT 付款账户辅助核算项目ID=CAST(ITEMID AS INT),银行账户名=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_付款账户辅助核算项目表 FROM T_PUBBANKACCOUNT GO
--项目辅助核算项目表(T_PUBPROGRAM) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_项目辅助核算项目表') DROP TABLE 龙图_项目辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBPROGRAM') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 项目辅助核算项目ID<>0 and 项目辅助核算项目ID IS NOT NULL) SELECT 项目辅助核算项目ID=CAST(ITEMID AS INT),名称=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_项目辅助核算项目表 FROM T_PUBPROGRAM GO
--预算来源性质辅助核算项目表(T_PUBINDSOURCE) IF EXISTS(SELECT * FROM SYS.objects WHERE name='龙图_预算来源性质辅助核算项目表') DROP TABLE 龙图_预算来源性质辅助核算项目表 GO IF EXISTS(SELECT * FROM SYS.objects WHERE name='T_PUBINDSOURCE') IF EXISTS(SELECT * FROM 龙图_凭证明细表 WHERE 预算来源性质辅助核算项目ID<>0 and 预算来源性质辅助核算项目ID IS NOT NULL) SELECT 预算来源性质辅助核算项目ID=CAST(ITEMID AS INT),名称=NAME,上级ID=CAST(SUPERITEMID AS INT) INTO 龙图_预算来源性质辅助核算项目表 FROM T_PUBINDSOURCE GO |
三、在AO2011中的采集方法
注:请在AO2011中采集,AO2011SP1中采集会出现辅助账采集失败。
在AO2011中选择“采集转换→财务数据→财务软件数据库数据→采集数据功能”功能。
选择数据源后单击“下一步”。
在上图所示的步骤中选择数据整理阶段生成的所有以“龙图_”开头的表,然后单击“下一步”。
数据采集完后新建一账套,然后在“选择导入方式”步骤中选择“源数据凭证表为主表和明细表”。
以下步骤全部用AO2011的辅助导入功能完成。
1.余额表的导入
2.会计科目表的导入
3.凭证主表的导入
4.凭证明细表的导入
5.辅助信息表的导入
具体辅助信息根据实际导入的表确定,各项辅助信息的设置参见下表:
6.辅助余额表的导入
7.凭证辅助明细表的导入
所有表导入完毕后关闭导入向导,账表重建后即完成龙图平台一体化财务核算数据导入AO2011的过程。
供稿:信息中心 张合喜