By:Suntime(黄臻) 2008-3-22
二月份时,曾为一做会计的老同学作过一个固定资产折旧故障维护。
以下是我根据记忆还原环境、整理成文的。
产品版本:金蝶KIS专业版V9.1
操作系统及数据库环境:Windows XP SP2+MS SQLServer 2000 With SP4
问题:在计提固定资产折旧时报错,软件提示(简体中文环境)
------------------------------------------------------------
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需操作需要一个当前的记录。
错误代码:5(5H)
Source:KISEBSFADepr.DeprUpdate.CalculateDepr
------------------------------------------------------------
或者(英文环境):
------------------------------------------------------------
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
错误代码:5(5H)
Source:KISEBSFADepr.DeprUpdate.CalculateDepr”
------------------------------------------------------------
截图如下

点击【确定】按钮后,程序就停止计提折旧,无法继续下去。
解决思路及方法:
先通过SQL事件探查器跟踪、查询,发现问题账套在计提折旧时,当程序执行到
------------------------------------------------------------
Select vi.FItemClassID, ic.FNumber From t_ItemDetailV vi ,t_Account a, t_ItemClass ic Where a.FAccountID=1185 And a.FDetailID=vi.FDetailID AND vi.FItemID in (-1,-2) And vi.FItemClassID=ic.FItemClassID
------------------------------------------------------------
时就会产生回滚、停止计提折旧,而正常账套不会。
复制上述代码SQL查询分析器,F5执行,结果发现问题账套,查询问题账套没有任何结果,而正常账套能查询出结果。
从上面的代码分析看,FAccountID=1185 的科目(5502.08 管理费用—折旧)应当是要挂核算项目,后面的条件才有意义。
而执行 Select FDetailID From t_Account Where FAccountID=1185 ,返回的结果却是0值,也就是该科目没有使用核算项目。
再备份账套,导出固定资产标准卡片,清空固定资产模块数据之后,导入先前导出的固定资产标准卡片,与手工新增的固定资产卡片数据进行对比,发现问题卡片相对于正常卡片在t_FAExpense (折旧费用分配表)、t_FABalExpense(折旧费用每期分配情况表)中,其FDetailID值均不为0,而正常卡片其FDetailID值为0。
说明问题卡片的折旧费用分配科目,是要使用核算项目的,而程序的GUI界面上看不出来。
通过上述分析,说明相关问题固定资产卡片,其在固资产系统相关表中,其折旧费用分配科目是有核算项目设置的,而具体对应的会计科目表中的相关科目,却未使用核算项目,从而导致在折旧计提时,发生费用归集报错。
该问题账套原为金蝶2000,后考虑数据稳定性及同学企业要使用进销存,我建议他升级为专业版的。
经询问同学才知道,此金蝶2000账套是由其前任财务经理初始化设置的,那位仁兄把成本类、损益类科目全设置成了部门核算及往来业务核算,同学接手处理之后,郁闷得要死,自己把相关科目的部门核算及往来业务核算全给取消了。
给同学两个处理建议,选其一:
1、 取消相应的问题卡片的折旧费用科目的部门核算,即通过后台清理其FDetailID值。
UPDATE t_FABExpense SET FDetailID=0 Where FAcctID=1185
UPDATE t_FABalExpense SET FDetailID=0 Where FAcctID=1185
UPDATE t_FAExpenseMulAlter SET FDetailID=0 Where FAcctID=1185
UPDATE t_FAExpenseDetailMulAlter SET FDetailID=0 Where FAcctID=1185
2、 恢复相应问题科目(折旧费用科目)的部门核算设置,修改前期凭证。
UPDATE t_Account SET FDetailID=4 Where FNumber in ('5502.08','4105.08')
相关折旧费用及结转期间损益凭证就重新再做一次吧。
其他说明:
1、 本问题在K/3 V11.0 账套中进行问题还原,对于先前要进行部门核算的折旧费用科目FDetailID值修改为0后,计提折旧仍然正常,可以正常归集分配相应折旧费用,说明K/3 V11.0无此问题。其版本的K/3未作测试,有兴趣的朋友可作测试。
2、 Kangsir 网友在 SoftBBS.net 论坛上发贴说,计提折旧时,软件报“BOF 或 EOF 中有一个是'真',或者当前的记录已被删除,所需操作需要一个当前的记录。”、“我的帐套是从9.0升级上9.1的,帐务系统都没问题,就是固定资产折旧出现这个问题(以前期间已经建有很多的固定资产了),望高手解决”。因为没有在专业版V9.0 及之前的其他版本作过测试,我相信应是前文所描述的症状,但不作保票,有兴趣的朋友也可作测试。这实际上也是我写本文的初衷。
3、 文中所述代码,请根据实际情况进行分析、执行。若产生的一切不良后果,与偶无关,J。
本文欢迎传播,但敬请注明出处。若有不解,请与我联系,QQ:408877590,交流讨论群:4362985。