1、K3总账关键数据分析,技术支持部,2,培训目的,通过练习,掌握基础资料之间的关系通过练习,掌握科目与核算项目使用详情横纵表之间的关系通过练习,掌握总账系统中常见数据问题的分析和解决的方法,3,将涉及到资料信息与表有:,系统参数表:t_systemprofile 科目:t_account 币别:t_currency,ID=1表示为记账本位币 凭证字:t_vouchergroup 计量单位:t_measureunit,t_unitgroup,这两个表中必须存在ID为0的记录 核算项目:包括客户、部门、职员、物料、仓库、供应商和自定义的核算项目;涉及的表为t_item,t_itemclass及其中定
2、义的明细表, t_item、 t_itemclass表中必须存在ID为0的记录 凭证分录表:t_voucher,t_voucherentry 核算项目横纵表:t_itemdetail,t_itemdetailv ,这两个表中必须存在ID为0的记录 科目余额表:t_balance 损益类科目本年实际发生表:t_profitandloss,4,将涉及到资料信息与表有:,数量余额表:t_quantitybalance 现金流量表:t_CashFlowBal ,记录总账系统中所有的现金流量信息 初始化往来余额表:t_transinitbalance ,用于记录初始化时的往来数据 往来核销表:t_tra
3、nscheckinfo,用于记录总账中的往来核销记录 自动转账:t_autotransfer、t_autotransferentry、t_AutoTransferEntryItem 自动步长编码表:为表实现自动内码编码,表中的数据规律: update t_identity set fnext=(select max(fitemid) from t_item )+1 where fname=t_item,5,系统参数表关键参数: StartPeriod:启用年度 StartYear:启用期间 PeriodByMonth:是否自定义期间 PeriodCount:每年度的期间数 PeriodDate
4、s:会计年度的时间序列EarnAccount:本年利润科目内码 EarnAssignAccount:利润分配科目内码 CurrentPeriod:当前期间 CurrentYear:当前年度 Closed:是否结束初始化,将涉及到资料信息与表有:,T_voucher,T_balance,调汇,结损益,自动转账,t_ProfitAndLoss,t_Quantity Balance,过账,过账,T_voucher,账表查询,数据流向图,期末结账,现金流量 t_CashFlowBal,核销往来 t_transcheckinfo,7,基础资料,核算项目横表:涉及的表为t_ItemDetail,此表是联接
5、各个核算项目业务表的纽带,如科目表,凭证表,余额表等等都与此表有很大的联系。核算项目纵表为t_ItemDetailV ,此表是由核算项目横表来生成的,可以用SP_CleanItemDetailV这个存储过程来生成 。是核算项目横表另一种形式的表现。在平时的各种报表计算时,程序是直接关联的该表。关于基础资料之间的具体关系,可以参考Mykingdee上的四月视频培训K3总账部份。,8,t_ProfitandLoss,t_ItemDetailv,t_ItemDetail,t_Item,t_Balance,t_ VoucherEntry,各表与核算项目使用详情横表和纵表的关联,t_ItemClass,
6、Fitemclassid,t_Account,t_QuantityBalance,t_transinitbalance,t_transcheckinfo,9,T_itemclass,T_itemdetailv,T_itemdetail,T_itemclass与t_itemdetail、t_itemdetailv,其中,自定义的核算项目类别的Fitemclassid是从F3001开始的,增加自定义核算项目类别时,将同时在t_itemdetail表中增加对应的列;但删除该类别时,在t_itemdetail表中该列不会被删除。,10,各数据表与t_itemdetail、t_itemdetailv,1
7、1,数据逻辑:,1、t_itemdetail表中的Fdetailcount必须正确 Fdetailcount:表示Fdetailid对应的核算项目类别个数,如果错误,将造成凭证无法过账、账薄报表无法查询、无法结转损益,提示:在结果列中多次出现F1等等。 否则将造成科目余额表、试算平衡表等报表不平衡,以及无法结转损益或结转损益后凭证无法过账 exec sp_cleanitemdetailv -数据教正 update a set a.fdetailcount=b.Fcount from t_itemdetail a join (select Fdetailid,count(Fitemid) Fco
8、unt from t_itemdetailv where fitemid0 group by Fdetailid) bon a.fdetailid=b.fdetailid exec sp_cleanitemdetailv,12,数据逻辑:,所有核算项目组合使用详情ID即Fdetailid值,相同组合,不允许重复。 2、以下Fdetailid只能为科目属性值使用,即只能出现在t_account表中 select *from t_itemdetail where fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1)
9、select *from t_itemdetailV fitemid=-1 如果这些Fdetailid值出现在余额表等数据表中,将造成无法结转损益、查询账薄报表时无法看到具体的名称只能看到数据 如果被科目使用的Fdetailid值重复,建议删除重复值,保留其中的一条。从目前数据来看,非被科目使用的Fdetailid值还没有出现重复的情况。 如果出现重复,将可能产生凭证无法过账、凭证录入时显示要求输入的核算项目类别与实际不符、在科目基础资料中显示的核算项目管理信息与实际不符等等错误。下面是一个案例,其他组合则请更正: and Fdetailcount=3 and F1=-1 and F2=-1
10、and F3=-1部份的条件即可。 -例:删除客户、职员、部门这三个核算项目类别组合使用ID中的重复值,13,数据逻辑:,1、update t_account 更正科目表上引用的Fdetailid set Fdetailid =(select min(fdetailid) from t_itemdetail-取最小值where fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1)and Fdetailcount=3 and F1=-1 and F2=-1 and F3=-1) where Fdetailid in
11、 (select (fdetailid) from t_itemdetailwhere fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1)and Fdetailcount=3 and F1=-1 and F2=-1 and F3=-1) 2、delete from t_itemdetail 删除重复值 where Fdetailid in(select (fdetailid) from t_itemdetailwhere fdetailid in (select Fdetailid from t_itemdet
12、ailv where fitemid=-1)and Fdetailcount=3 and F1=-1 and F2=-1 and F3=-1) and Fdetailid (select min(fdetailid) from t_itemdetailwhere fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1)and Fdetailcount=3 and F1=-1 and F2=-1 and F3=-1)exec sp_cleanitemdetailv-更正t_itemdetailv,14,数据逻辑:,3、
13、以下Fdetailid只能出现在各余额表、凭证分录表中 select *from t_itemdetail where fdetailid in (select Fdetailid from t_itemdetailv where fitemid-1) select *from t_itemdetailV fitemid-1 如果这些Fdetailid值出现在科目表中,则该科目在凭证录入时将显示错误的核算项目管理信息,以及损益类科目无法结转损益;或凭证无法过账。以下凭证分录记录必须必须由用户在软件上补充丢失的核算项目select b.Fyear,b.Fperiod,c.Fname,b.Fnum
14、ber,a.Fentryid,e.Fnumber from t_voucherentry a join t_voucher b on a.fvoucherid=b.fvoucherid inner join t_account e on e.faccountid=a.faccountid inner join t_vouchergroup c on c.fgroupid=b.fgroupid where a.fdetailid not in (select Fdetailid from t_itemdetailv where fitemid not in (-1) order by b.fye
15、ar,b.fperiod,c.fname,b.fnumber,a.fentryid,e.fnumber,15,数据逻辑:,4、以下Fdetailid出现在t_balance等数据表中,必须删除 delete from t_balance where fdetailid not in (select Fdetailid from t_itemdetailv where fitemid not in (-1) delete from t_quantitybalance where fdetailid not in (select Fdetailid from t_itemdetailv where
16、 fitemid not in (-1) delete from t_profitandloss where fdetailid not in (select Fdetailid from t_itemdetailvwhere fitemid not in (-1) 否则将造成科目余额表、试算平衡表等报表不平衡,以及无法结转损益或结转损益后凭证无法过账,报表数据查询只显示数据不显示名称等;建议反结账到出现这种情况的上一期再删除。,16,数据逻辑:,5、在t_itemdetail表和t_itemdetailv表中必须存在Fdetailid=0的记录 如果该记录丢失,必须补充,否则将造成凭证无法过
17、账、账薄报表无法查询数据等。Fdetailid=0表示不使用核算项目。 其实在许多表中,都必须要求存在ID=0的记录,如t_measureunit、t_unitgroup、t_item、t_itemclass、t_currency等等 如果t_measureunit、t_unitgroup表中缺少ID=0的记录,数量金额类账薄将无法查询。在结转损益类科目时,将无法结转出数量。 这些零都是系统预置的,有特定的用途,系统预置的零记录不能删除。以补充计量单位表中的0记录为例:insert into t_UnitGroup (FUnitGroupID,FName,FDefaultUnitID) val
18、ues(0,*,0)系统预设0记录可以参考其他正常账套格式补充,17,数据逻辑:,5、同时,必须注意,在t_itemdetail表中的Fx列中的值,除了-1的记录外,必须是=0的值 ,默认=0;除(0,-1)外就是具体的核算项目在t_item表中的Fitemid。 不允许在Fx列中出现NULL值。如果出现Null值,一般都是该表的约束或默认值值丢失,需要更正: update t_itemdetail set F3003=0 where F3003 is null ALTER TABLE t_ItemDetail ALTER column F3003 int NOT NULL,18,数据逻辑:,
19、6、 计量单位 t_measureunit中默认计量的FMeasureUnitID必须是t_unitgroup中对应FDefaultUnitID t_measureunit. Fstandard=1表示为默认计量单位,一个计量单位组只能有一个默认计量单位。 t_measureunit. Fcoefficient不能为0如果t_measureunit中默认计量的FMeasureUnitIDt_unitgroup中对应FDefaultUnitID,则损益类科目在结转损益时无法结转数量。 根据计量单位表中的默认计量记录更正计量单位组中的缺省计量单位update b set b.fdefaultuni
20、tid=a.fmeasureunitid from t_measureunit a join t_unitgroup b on a.funitgroupid=b.funitgroupid where a.fstandard=1 and a.fmeasureunitidb.fdefaultunitid,19,数据逻辑:,7、如果查询账薄时提示列名 f3001 无效,则应该检查地t_itemdetail表中该对应的列是否存在,如果不存在,应该补充 If Not Exists(Select c.Name from syscolumns c,sysobjects o where c.Id=o.Id a
21、nd c.name=F3001 and o.name=t_ItemDetail) Begin Alter Table t_ItemDetail Add F3001 int not null default(0) Create Index ix_ItemDetail_3001 On t_ItemDetail(F3001) END 如果是其他的列,则对照着修改条件。,20,数据逻辑:,8、账薄报表取数 汇总类账薄:总账、科目余额表、数量金额总账、核算项目余额表等等 直接从余额表t_balance取数(其中数量金额总账的数量从t_quantitybalance取数据)到临时表,然后在建立多个的临时表
22、分别从关联基础资料表、核算项目使用详情横纵表、计量单位表等关联数据表取得科目名称、核算项目名称、计量单位名称等等。 明细类账薄:明细账、数量金额明细账、多栏账等等 期初:直接从余额表t_balance取数(其中数量金额明细账的数量从t_quantitybalance取数据)到临时表 明细:从凭证分录表t_voucherentry取数到临时表 然后在建立多个的临时表分别从关联基础资料表、核算项目使用详情横纵表、计量单位表等关联数据表取得科目名称、核算项目名称、计量单位名称等等。 账薄报表上的汇总数据:对临时表按科目、核算项目进行分类求和后,分类插入汇总数据到临时表,最后形成账薄报表上的数据。,2
23、1,数据逻辑:,9、自动转账 自動转账,涉及到四张数据表: 自动转账方案表:t_AutoTransferScheme,记录方案名称、创建人 自動转账表:t_autotransfer,记录了适用期間FPeriodRange、转账机制凭证类型FInternalInd(无-NULL,自动转账-AutoTrans,结转损瘟-TransferPL,期末调汇-RateAdjust)、凭证字FGroupID 自動转账方案明細分示表:t_autotransferentry,记录了: FDC:方向,0-自动判断,1-借方,2-贷方 Ftype:转账方式,1-转入 FFormulatype:公式取数方式 Famo
24、untforformula:转账公式定义 FPosted:是否包括未过账凭证 FMcLdgNoCal:1参与多栏账汇总,0不参与 Fdetailid:核算項目组合ID,在10.2中,它始终=0;在以前的产中,它表示具体的核算項目组合ID,0表示所有核算項目(当科目不管理核算項目时,则表示0),22,数据逻辑:,9、自动转账 自動转账方案核算項目明細表:t_autotransferentryitem Fitemclassid:需要转出的核算項目类別ID Fitemnumber:需要转出的核算項目开始代碼 Fenditemnumber:需要转出的核算項目结束代碼 Fistransferid:是否转
25、入 如果不指定起始代碼和结束代碼,则表示该类別下的所有核算項目 关系: t_AutoTransferScheme = t_autotransfer.Ftransferid t_autotransfer.Ftransferid=t_autotransferentry.Ftransferid t_autotransfer.Ftransferid =t_autotransferentryitem.Ftransferid t_autotransferentry.Fentryid=t_autotransferentryitem. Fentryid,23,数据逻辑:,9、自动转账 在10.2和10.3的自
26、动转账中,目前存在这样的問題: 1、在成本类科目与损益类科目形成对方分录的自动转账中,如 借:管理費用 贷:制造費用 如果在分录体中,任意一分录行选择了“不参与多栏账汇总”,那么凭证过账后,损益类科目的sL、sy数据无法取得;同時多栏账数据錯誤,无法显示数据。 2、在上述模式的自动转账方案中,不选择“不参与多栏账汇总”时,凭证过账后,损益类科目的sL、sy数据可以正常取得;损益类科目的多栏账正常,但对方科目的多栏账中却把这笔转账中的金額以负数显示,使得该科目的发生额合计不正确。 3、分录行中任意一行选择了“不参与多栏账汇总”,则整个分录的所有行都被設置为不參与多栏账汇总,而不是只限制在选定的那
27、一行。,24,数据逻辑:,10、结转损益 结转损益的过程,是将损益类科目在科目余额表中有余额明細科目的余额,生成与本年利潤科目存对方科目的特殊自账凭证。 形成损益数据的来源,有以下几种: 1、手工录入的包含有损益类科目的凭证 2、自动转账或其他系統生成的涉及损益类科目的凭证损益数据的形成:凭证过账过程中,程序自动将损益类数据写入损益类科目实际发生额表t_profitandLoss表中;结转损益的凭证在过账时该分录上金額不计算在损益类科目的实际发生额中。 以下类型的凭证,不能计算损益: 1、手工录入的包含了损益类科目的凭证中,包括了对方科目为本年利润科目的凭证; 2、自动转账方案中,在分录行中选
28、择了“不参与多栏账汇总”而生成的凭证(在10.2和10.3中); 3、自动转账方案中,方案中机制凭证类型为“结转损益“而生成的凭证; 4、结转损益时自动生成的凭证。,25,总账系统中常见数据问题与分析,一、凭证账表数据错误 1、科目设置了核算项目,在凭证录入时不提示需要输入核算 2、科目设置了核算项目,在凭证查询时,看不到核算项目信息 3、在科目余额表中无法查看核算项目明细,但未过账前在包括未过账凭证时可以正常显示 4、无法结转损益,提示分录缺少核算项目 5、凭证无法过账,提示分录缺少核算项目 6、账薄查询时,提示F3001列无效 7、凭证过账时提示:在结果列中多次出现列名F1 8、应收应付系
29、统初始化转余额到总账失败 9、其他凭证模板如自动转账、各类型的单据模板等生成凭证失败上述错误,都是因为与Fdetailid值相关的记录不正确造成的。比照数据逻辑进行处理。,26,总账系统中常见数据问题与分析,一般的处理Fdetailid相关信息的逻辑顺序为: 1、查询被科目使用的核算项目使用详情信息 2、查询、更正核算项目使用详情组合个数 3、根据实际情况,更正科目表中的Fdetailid和删除t_itemdetail表中的重复记录 4、补充检查出来的账套中预设的0记录(一般情况下不会有) 5、反结账到到出现问题的期间,建议同时将反结账后期间的凭证的反过账; 6、如果检查出凭证分录中有Fdet
30、ailid值错误,则要反结账到出现该错误的期间,并将凭证反过账,并修正凭证分录 7、删除三个余额表中的错误Fdetailid记录 8、如果结转损益的凭证数据有误,建议删除 9、更正和补充其他相关数据(如补充t_itemdetail表中丢失的列等) 10、数据修正完后,凭证重新过账,重新结转损益过账,再结账到当前期间。,27,总账系统中常见数据问题与分析,一、凭证账表数据错误 10、在进行凭证预览或打印时提示:使用NULL无效,但换一个人登录又可以正常使用 一般是由于记录的个人套打信息有误造成的 delete from t_VoucherGroupNote where FNoteID not i
31、n (select FNoteID from t_Note)11、结账时提示不能在t_balance表中插入重复键 一般是由于在三个余额表中保存了当前期间以后的记录造成的 12、查询明细账发现上期末不等于当期初 上述错误,余额表中的记录错误,也可能是Fdetailid值错误造成的。一般反结账到上期再结账回来就正确。,28,总账系统中常见数据问题与分析,一、凭证账表数据错误 13、凭证序时薄中显示的列错位或凭证分录行中科目信息错行显示而不是自动分行 14、明细账中的数据错列位 上述错误,是因为在科目表、基础资料表、凭证分录表中可能包括了回车、换行等控制性字符造成的。 -例:去掉科目代码、名称中的
32、回车、换行符 update t_account set Fnumber=replace(Fnumber,char(10)+char(13),),Fname=replace(Fname,char(10)+char(13),),FFullname=replace(FFullname,char(10)+char(13),) where charindex(char(10)+char(13),Fnumber)0 or charindex(char(10)+char(13), Fname)0 or charindex(char(10)+char(13), FFullname)0,29,总账系统中常见数据
33、问题与分析,二、现金流量表数据错误: 1、提取T型账或附表项目提示不能插入重复键 一般是由于在提取流量项目后会在t_cashflowbal表中有重复记录,这时需要根据跟踪出错时的Update语句错误时的fvoucherid来找到对应的凭证 select b.fyear,b.fperiod,c.fname,b.fnumber from t_CashFlowBal a join t_voucher b on a.fvoucherid=b.fvoucherid join t_vouchergroup c on c.fgroupid=b.fgroupid where a.fvoucherid=521
34、-and a.FCashAccountID=1269 然后要么删除张表凭证的流量信息,要么重新在凭证上指定: delete from t_CashFlowBal where fvoucherid=521,30,总账系统中常见数据问题与分析,二、现金流量表数据错误: 2、T型账中的非现金数据的借贷差额,与科目余额表上现金、银行存款等现金科目的期末减期初不等 3、现金流量表中的现金流量净额,与科目余额表上现金、银行存款等现金科目的期末减期初不等 上述错误,一般是由于现金类科目指定不正确造成的。 select Fdetailid,FIsCash,FIsBank,FIsCashFlow,* from
35、t_account-查询现金类科目 where 1 in (FIsCash,FIsBank,FIsCashFlow) order by fnumber 4、主表与附表不等 一般是由于指定流量表的数据不正确造成的。没有指定完主表项目就指定附表项目很容易产生这种问题。出现上述错误,建议在更正现金类科目后,删除当期的现金流量数据t_CashFlowBal 重新指定。,31,总账系统中常见数据问题与分析,三、往来数据错误 1、核销金额错误 2、往来对账时按核销状态的“未核销”和按“全部”查询的数据不一致 上述问题一般是以前版本存在核销时对本位币的换算错误,往来业务的核销记录保存在t_transchec
36、kinfo表中, FInitBalance=1表示该条记录为初始化数据。 3、在凭证录入中无法查询设置往来业务管理的科目的初始化往来数据 一般是因为该往来科目没有录入初始化往来数据或在初始化时没有进行往来业务管理造成的。往来初始化数据表:t_transinitbalance 4、账龄分析表的数据翻倍 一般是由于t_LastContactDate表中包括报初始化往来数据,32,总账系统中常见数据问题与分析,四、查询账薄报表显示的错误 1、当同一个用户建立超过12个凭证查询方案时,进入凭证查询系统即报错:方法 作用于对象 失败 一般是由于个人凭证查询方案超过了12个,目前暂不支持; delete
37、from t_userprofile where fuserid=(select fuserid from t_user where fname=AAA) -同样适用于不同用户登录系统后查询科目表结果不一样的问题。 2、在明细账中选择某方案时系统报错:运行时错误381,无效属性数组索引 一般是由于账薄查询方案表中的记录信息不正常,需要将t_LedgerPageSetup 方案中的对应用户的方案删除后,重新设置。 3、某用户进行凭证查询、录入、账薄查询无提示:方法 作用于对象 失败 一般是个人用户信息错乱以权限控制有误 delete from t_userprofile where fuseri
38、d=(select fuserid from t_user where fname=AAA) 再将用户“AAA”的功能权限“全清”,“授权”确认后,再重新授予。,33,总账系统中常见数据问题与分析,四、查询账薄报表显示的错误 4、查询核算项目组合表提示“定义的应用程序或对象错误”,高级中显示:多步操作产生错误。请检查每一步的状态值。 这种情况一般都是因为核算项目名称太长 declare num int set num=34 -不断地改变这个值来判断,一般超过34容易产生这样的问题 select len(a.fname) 名称长度, b.fname 项目类别,a.fnumber 代码,a.fna
39、me 名称 ,right(a.fname,len(a.fname)-num) 多出来的字 from t_item a join t_itemclass b on a.fitemclassid=b.fitemclassid where len(a.fname)num order by a.fitemclassid,a.fnumber,34,案例,10.2总账模块经常出现的数据问题的处理错误现象:(1)凭证过账时报错:名称代码已被使用,高级提示:在结果列的列表中多次出现列名F8(2)在结转损益生成凭证时,查看凭证,发现某些分录的科目丢失核算项目。导致结转损益凭证过帐报错:某某分录缺少核算项目。,3
40、5,案例,10.2总账模块经常出现的数据问题的处理错误现象:(1)凭证过账时报错:名称代码已被使用,高级提示:在结果列的列表中多次出现列名F8(2)在结转损益生成凭证时,查看凭证,发现某些分录的科目丢失核算项目。导致结转损益凭证过帐报错:某某分录缺少核算项目。,36,案例,(3)在查询某个挂核算项目的科目时出现如下情况:,37,处理过程,如上问题大部分可以通过如下处理方法来解决,但是并不能排除有特殊情况。即使没有解决问题,经过以下的处理后,可以避免以后类似的问题出现。下面是一个处理范例,如有类似数据错误,请根据如下步骤来处理:,38,处理过程1,select * from t_itemdeta
41、il-所有应该为科目属性使用的Fdetailid where fdetailid in (select fdetailid from t_itemdetailv where fitemid=-1),39,处理过程2,查询已经被科目使用的核算项目使用详情信息 select fdetailid,* from t_account where fdetailid in (select fdetailid from t_itemdetail where Fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1) ),从上述两个查
42、询结果看,有两处错误: 1、Fdetailcount数值不正确 2、相同组合存在重复记录。本例为核算客户。,40,处理过程3,更正数据 3.1-更正Fdetailcount值 Select * into t_account_temp from t_account Select * into t_itemdetail _temp from t_itemdetail Select * into t_ itemdetailv _temp from t_itemdetailv exec sp_cleanitemdetailv update a set a.fdetailcount=b.Fcount f
43、rom t_itemdetail a join (select Fdetailid,count(Fitemid) Fcount from t_itemdetailv where fitemid0 group by Fdetailid) bon a.fdetailid=b.fdetailid exec sp_cleanitemdetailv,41,处理过程3,更正数据 3.2-更正被科目使用的FdetaiLID update t_account 更正科目表上引用的Fdetailid set Fdetailid =(select max(fdetailid) from t_itemdetail-取
44、最大值where fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1)and Fdetailcount=1 and F1=-1)-客户 where Fdetailid in (select (fdetailid) from t_itemdetailwhere fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1)and Fdetailcount=1 and F1=-1),42,处理过程3,更正数据 3.3-删除重复FdetaiLID值
45、 delete from t_itemdetail where Fdetailid in(select (fdetailid) from t_itemdetailwhere fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1)and Fdetailcount=1 and F1=-1) and Fdetailid (select max(fdetailid) from t_itemdetailwhere fdetailid in (select Fdetailid from t_itemdetailv where
46、fitemid=-1)and Fdetailcount=1 and F1=-1) -同理重复3.2和3.3,更正其他核算项目类别组合的FdetaiLID值,下图为正确的数据,43,处理过程4,检查并更正t_itemdetail表中记录为应该被科目所使用的FdetaiLid值,但实际没有使用的并且是多余的数据删除 select * from t_itemdetail where Fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1) and fdetailid not in (select fdetailid fro
47、m t_account)Delete from t_itemdetail 删除这些冗余数据 where Fdetailid in (select Fdetailid from t_itemdetailv where fitemid=-1) and fdetailid not in (select fdetailid from t_account) 最后再执行: exec sp_cleanitemdetailv-更正t_itemdetailv,44,处理过程5,查看t_balance中是否有fdetailid不在t_itemdetail中的记录。记下这些记录的会计期间N期(前两个字段),后面会用
48、到。select * from t_balance where fdetailid not in (select fdetailid from t_itemdetail),45,处理过程5,这些FDetailID=-1的记录是非法数据,需反结账到到出现问题的期间将这些数据删除掉。同理检查并删除t_quantitybalance、t_profitandloss表 delete from t_balance where fdetailid not in (select fdetailid from t_itemdetail)delete from t_quantitybalance where f
49、detailid not in (select fdetailid from t_itemdetail)delete from t_profitandloss where fdetailid not in (select fdetailid from t_itemdetail)注:1、在操作这前,建议先备份这三张余额表 2、如果有结转损益的凭证,建议先删除结转损益的凭证,然后再执行上述操作的操作。,46,处理过程6,经过处理后,凭证过帐、结转损益、查询科目余额表正常。 在进行凭证反过账时,建议使用反结帐中的反过帐。(用反结帐提供的反过帐功能:如果当期有已过帐凭证,在反结帐时提示:本期有已过帐凭证,是否将已过帐凭证全部反过帐,选择“是”)。如图:,47,思考:,请思考: 1、那些F2=-1 and F3=1且FDetailCount=2的记录,该如何处理? 2、科目余额表中记录了Fdetailid与科目管理的核算项目类别个数不一致的Fdetailid,该如何处理? 3、如何处理:模式凭证保存时都报“定义的应用程序或对象错误。”,提示:不能违反pk_VoucherEntryTemplate约束的错误?,