金蝶K3

冯  浩某被审计单位使用的财务核算软件为金蝶K3-V10,后台数据库是SQL Server 2000,审计组在AO软件中,使用数据转换模板导入电子数据时,遇到无法重建账表的错误提示,从而不能正常生成电子账套。随后,在访问金审工程服务网站查询有关内容时,也未给出详细的解决办法。面对这一问题,在认真分析金蝶K3-V10电子数据结构的基础上,对数据进行一系列必要的整理等工作后,采取手工导入方式完成数据转换工作,最终顺利地将电子数据导入AO,生成了电子账套,使这一问题得到了解决。第一步:分析数据结构,确定将要用到的表及重要字段将备份电子数据还原到SQL Server 2000中,经分析,确定将要用到的表,如表1所示:序号表名中文含义功能作用1t_TableDescription表描述表说明各表的功能作用,确定与账务信息有关的关键表2t_FieldDescription字段描述表说明各表的字段功能含义,帮助理解分析关键表字段含义3t_Account科目表说明会计科目设置基本信息4t_Balance科目余额表记录各年度各科目余额信息5t_VoucherEntry凭证分录表记录各记账凭证分录信息6t_Voucher凭证表记录各张凭证基本信息7t_Item基础资料主表记录核算项目定义信息8t_ItemClass基础资料类别表记录项目类别信息9t_Itemdetailv核算项目使用详情纵表核算项目代码、名称与有关表记录之间的中间表表1第二步:关键表结构分析及数据整理(一)科目表:t_Account1、科目设置基本情况:科目设置及使用不分年度,被审单位科目设置的最高级次为4级。2、需重点关注的字段,如表2所示:序号字段名称含义备注1FAccountID科目内码会计科目ID(关键字)2Fnumber会计科目代码3Fname会计科目名称4FDC借贷方向1- 借方   -1 - 贷方5FFullName全名表23、科目表数据整理过程经过对会计科目表科目设置情况进行查验,发现科目代码(FNumber)最大级次为四级,分隔符为“.”,绝大多数级次长度按照4-3-2-2的格式进行定义(这个长度不包括科目代码分隔符),但有6个二级科目(也是末级科目)长度为2,而不是3,分别是:'1231.01','1231.02','1122.01','1122.02','1122.03','1122.04',应该对这6个二级科目进行规范化,统一规范为4-3-2-2的格式,即在上述6个科目代码的二级前面加上一位即可,但应注意避免与现有科目代码的重复。经查询,可以将其规范为:'1231.601','1231.602','1122.601','1122.602','1122.603','1122.604'的形式。语句如下:update t_account set fnumber=stuff(fnumber,6,1,'60') from t_account where len(fnumber)=7(备注:科目代码分隔符:“.”,在向AO手工导入设置科目代码规则时要进行指定,并将AO默认的4-4-3-3改为4-3-2-2)至此,科目表数据整理完毕。(二)科目余额表:t_Balance1、科目余额表基本情况:存储多年度数据(2008年-2011年), 余额按月存储 iperoid ,各年初余额即各年1月份余额数。2、重点关注的字段,如表3所示:序号字段名称含义备注1FYear会计年度2008年-2011年2FAccountID科目内码与科目表关联的外键3FPeriod会计期间1-124FBeginBalance本币期初余额由正负来表示借、贷表33、数据整理过程:科目余额表的处理比较麻烦,大致步骤如下:(1)增加科目代码(Fnumber)列原表中,缺少手工导入时所需的科目代码列(FNumber,varchar 40),修改表结构,增加该列,并用UPDATE更新其值,语句如下:UPDATE [dbo].[t_Balance]SET [dbo].[t_Balance].FNumber = t_Account.FNumberFROM [dbo].[t_Balance], t_AccountWHERE [dbo].[t_Balance].FAccountID = t_Account.FaccountID(2)删除重复记录经查询并对记录的深入观察分析,发现该表中存在科目余额重复记录情况,应将重复记录删除。重复情况分为两种:第一种重复:由币别内码(FCurrencyiID)引起的记录重复经过分析,发现记录重复,即因为FCurrencyiID=0与FCurrencyiID=1的记录重复,将FCurrencyiID=0的记录删除:Delete from [dbo].[t_Balance] where FCurrencyiID=0第二种重复:由核算项目使用内码(FDetailID)引起的重复每一科目代码的Fdetailid=0的期初值等于Fdetailid<>0各记录(各核算项目)期初值相加,即科目余额表中,也反映了各核算单位的期初数,但如不将核算单位的期初数记录删除,对于科目代码来讲存在数值上的重复,所以也应将各核算单位的期初数记录删除。Delete from [dbo].[t_Balance] where Fdetailid<>0(3)按年度将记录分别保存Select * into t_Balance_new_2008 from t_Balance where fyear=2008;Select * into t_Balance_new_2009 from t_Balance where fyear=2009;Select * into t_Balance_new_2010 from t_Balance where fyear=2010;至此,科目余额表数据整理完毕。(三)凭证辅助表:t_VoucherEntry1、凭证辅助表表基本情况:记录了多年度的凭证分录,与凭证主表相应记录为1:N的关系,通过FVoucherID与凭证主表相关联,通过FaccountID与科目表相关联。2、重点关注的字段,如表4所示:序号字段名称含义备注1FAccountID科目内码2FAmount本币位金额发生额3FExplanation摘要4FVoucherID凭证内码凭证号,唯一5FDC余额方向0-贷方,1- 借方表43、数据整理过程(1)增加会计年度(Fyear int 4)用凭证主表对应记录进行更新Update t_VoucherEntry set t_VoucherEntry.Fyear= t_Voucher.FyearFrom t_VoucherEntry , t_VoucherWhere t_VoucherEntry.Fvoucherid= t_Voucher.Fvoucherid(2)增加科目代码(FNumber)列,用科目表对其进行更新UPDATE t_VoucherEntrySET t_VoucherEntry.FNumber = t_Account.FNumberFROM t_VoucherEntry, t_AccountWHERE t_VoucherEntry.FAccountID = t_Account.FaccountID接下来,为方便审计人员对记录的查询检索,我们决定将项目分类名称、涉及单位名称等信息加到摘要上去,形如:“银行存息-商行XX街支行_单位_XXX污水处理厂”,这样,审计人员可以通过对摘要,实现类似辅助账数据分析功能。(3)增加Fdetailfullname (varchar 255),用于更新(摘要)字段此处注意,要更新t_VoucherEntry.Fdetailfullname,需要借助t_Itemdetailv表。首先,将t_Itemdetailv表增加相关列:分别是Fdetailname(varchar 255),Fdetailclassname(varchar 255), Fdetailfulllname(varchar,255),然后对其值进行分别更新,语句如下:update dbo.t_ItemDetailVset dbo.t_ItemDetailV.fdetailname=dbo.t_Item.fnamefrom dbo.t_ItemDetailV,dbo.t_Itemwhere dbo.t_ItemDetailV.fitemid=dbo.t_Item.fitemid  --在表dbo.t_ItemDetailV增加FDetailName字段,然后用T_Item表进行更新update dbo.t_ItemDetailVset dbo.t_ItemDetailV.Fdetailclassname=dbo.t_ItemClass.fnamefrom dbo.t_ItemDetailV,dbo.t_ItemClasswhere dbo.t_ItemDetailV.fitemclassid=dbo.t_ItemClass.fitemclassid经过观察发现,一些记录Fdetailname值为空,为避免在SQL查询器中更新Fdetailfulllname字段时出现与空串连接结果为空的情况,先给空值赋上一个值“NULL”:Update  dbo.t_ItemDetailV set fdetailname=’NULL’ from dbo.t_ItemDetailV where fdetailname is null经验证,Fdetailclassname字段没有空值,无需做上述操作。更新Fdetailfullname字段:Update dbo.t_ItemDetailV set fdetailclassname=fdetailname+’_’+fdetailclassname from dbo.t_ItemDetailV其次,再用dbo.t_ItemDetailV.Fdetailfullname去更新t_VoucherEntry.Fdetailfullnameupdate t_voucherentry  set t_voucherentry.fdetailfullname=dbo.t_ItemDetailV.fdetailfullnamefrom t_voucherentry,dbo.t_ItemDetailVwhere t_voucherentry.fdetailid=dbo.t_ItemDetailV.fdetailid第三,更新摘要:Update t_Voucherentry  set  fexplanation=fexplanation+’_’+fdetailfullname from t_Voucherentry最后,为方便导入数据,可把记录按年度分开:Select * into t_voucherentry_2008 from t_voucherentry where fyear=2008;Select * into t_voucherentry_2009 from t_voucherentry where fyear=2009;Select * into t_voucherentry_2010 from t_voucherentry where fyear=2010;(四)凭证主表:t_Voucher1、基本情况存放从2006至2011年多年度电子凭证,凭证号不重复。通过FVoucherID与凭证辅助表相关系2、重点关注的字段,如表5所示:序号字段名称含义备注1FVoucherID凭证内码2FYear会计年度3FDate凭证日期4FPeriod会计期间5FExplanation摘要表53、数据整理过程(1)对摘要(Fexplanation)进行更新因为前面对凭证辅助表的摘要进行了更新,为使凭证表中的摘要与之相一致,也应对摘要内容进行更新。update t_voucher set t_voucher.fexplanation = t_voucherentry.fexplanationfrom t_voucher,t_voucherentrywhere t_voucher.fvoucherid=t_voucherentry.fvoucherid and t_voucherentry.fentryid=0至此,数据导入AO前,要做的数据整理工作全部完成,接下来要具体向AO中导入数据时,将要用到的表有如表6所示:序号表名含义1t_Account会计科目表2t_Balance_new_2008科目余额表(2008年度)3t_Balance_new_2009科目余额表(2009年度)4t_Balance_new_2010科目余额表(2010年度)5t_Voucher_2008凭证主表(2008年度)6t_Voucher_2009凭证主表(2009年度)7t_Voucher_2010凭证主表(2010年度)8t_VoucherEntry_2008凭证辅助表(2008年度)9t_VoucherEntry_2009凭证辅助表(2009年度)10t_VoucherEntry_2010凭证辅助表(2010年度)表6第三步:账表重建,生成电子账套为方便起见,可以将上述表从SQL Server 2000导出到ACCESS。然后,将2008-2010三个年度数据分别手工导入AO。在进行账表重建后,发现分录数不对,在科目余额表或会计科目中多数科目只显示有一级科目的内容,而没有二级科目及以下级次的科目凭证信息。我们又从AO后台数据库入手进行分析,发现是由会计科目表中的科目级别只有一级科目显示为1,其它均为0,且上级科目代码字段均为空两个字段。所以,应想办法将这两个字段值填上正确的级次和科目代码,语句如下:更新科目级别:(在ACCESS环境下更新)UPDATE 会计科目表 SET 科目级别=2 where len(科目代码)=7;UPDATE 会计科目表 SET 科目级别=3 where len(科目代码)=9;UPDATE 会计科目表 SET 科目级别=4 where len(科目代码)=11;更新上级科目代码:(在ACCESS环境下更新)UPDATE 会计科目表 SET 上级科目代码=mid(科目代码,1,4) where len(科目代码)=7;UPDATE 会计科目表 SET 上级科目代码=mid(科目代码,1,7) where len(科目代码)=9;UPDATE 会计科目表 SET 上级科目代码=mid(科目代码,1,9) where len(科目代码)=11;然后,再次进行账表重建即可。

(0)

相关推荐

  • SAP清账及配置

    什么是清账 用简单的话来说,清账只是链接两个FI凭证. 为什么要链接两个FI凭证 现在,让我们以ECC系统来跟踪其业务的组织为例.假设组织从供应商那里购买了一些商品.此后,供应商发送购买商品的发票(或 ...

  • 金蝶K3凭证导入二次开发之核算项目和现金流

    金蝶K3凭证导入二次开发之核算项目和现金流 1.添加组件引用 X 2.登录验证,获取K/3连接字符串. Private K3Login As Object '当前连接对象 Private Sub Lo ...

  • 金蝶K3 单据序时簿关联自定义报表 · 语雀

    加入语雀,获得更好的阅读体验 或 后可以收藏本文随时阅读,还可以关注作者获得最新文章推送 金蝶K3 单据序时簿关联自定义报表 整体步骤 1.使用查询查询分析自定义报表,定义查询分析关键字,用于设置关联 ...

  • 金蝶K3 WISE版本过服务期后打补丁方法

    读了这位博主的内容有所启发 https://blog.csdn.net/hzfw2008/article/details/106991629 金蝶补丁一般安装过后,都会进行解包,分两部分,第一部分为完 ...

  • 会计实务:金蝶K3各种采购暂估处理会计分录案例

    案例背景 金蝶K3系统主要有四种采购暂估处理方式:工业模式月初一次冲回,工业模式单到冲回,商业模式差额调整,商业模式单到冲回.一个账套同时只能选择工业或商业一种暂估方式,工业或商业模式(由参数&quo ...

  • 金蝶K3单据新增页面在单据体体现物料即时库存数据

    默认单据新增或查询中,单据体没有物料的即时库存数据,如果业务部门希望在新增单据的时候希望能够实时查看该物料的库存数据情况,可以采取如下方式增加: 1.在物料数据增加库存字段,类型为实数,保存: 2.K ...

  • 金蝶K3修改序时簿字段栏位名称

    SELECTFID,*FROM ICTransactionTypeWHERE FName LIKE'%销售订单%' --根据单据的类型ID去查询该单据的序时薄模板ID(FTemplateID),例如根 ...

  • 金蝶K3 序时簿 增加即时库存

    K3序时簿增加显示即时库存一. 步骤1. 创建视图,按物料合计库存.2. 获取目标序时簿typeid3. 修改序时簿关联关系表ICTableRelation,追加与即时库存关联关系4. 修改序时簿字段 ...

  • 金蝶K3序时簿页面增加物料即时库存显示功能

    K3默认序时簿是不体现即时库存的,如果需要在序时簿将物料的即时库存数据带入,可以按照下方的步骤实现: 本文以销售订单序时簿增加即时库存为例,其他单据以此方法参考即可. 如果希望在订单新增环节体现物料即 ...

  • 金蝶K3案例教程简介

    内容简介 本教程由经验丰富的金蝶K3顾问编写,源于真实公司场景,以案例实现K3系统前台操作与系统配置,内容涵盖金蝶K3财务会计.实际成本.供应链.计划.生产模块,以及若干独立案例专题章节.案例内容实用 ...