问题描述:计提折旧时提示“科目无权限”
分析过程:
为什么说没有权限呢?登陆的身份是系统管理员,具有所有的权限,所以真正的原因肯定不是因为权限的问题。使用profile工具进行跟踪,发现程序在科目表中查找一条内码为0的科目,为什么会是内码为0呢?这说明某个卡片使用的科目内码为0。经查找t_faexpense和t_fabalexpense表,发现折旧费用科目有为0的记录。
解答:一般来说是固定资产所使用的科目内码为0,如累计折旧科目。这种问题一般来说是升级或导数据的原因造成的。处理的方法是到卡片表t_facard和t_fabalcard中把fdepracctid为0的记录改为正确的科目内码即可
案例
问题描述:1.计提折旧提示“核算项目没有权限”
分析过程:这个问题和提示“科目没有权限”类似,但内容不一样,这一次是“核算项目”。经查,固定资产相关科目设置了核算项目,如果不设置类别核算的话,是不需要用到核算项目的。到 t_faexpense和 t_fabalexpense表中查找到 fdetailid,然后在 t_itemdetail查找对应的核算项目,发现这些核算项目内码对应的 t_item表的记录为非明细核算项目或则该核算项目已经做了删除标志,这当然是不允许的。
解答:一般是所对应的使用部门或折旧费用科目所对应的核算项目不存在或非明细的核算项目。处理方法是到部门分配表 (t_fadept和t_fabaldept)和核算项目详情表 t_itemdetail中把核算项目内码更正过来或者把对应的核算项目置为最明细即可。
案例
问题描述:计提折旧提示“ with block对象或变量错误”
分析过程:
使用 profile跟踪,发现程序在数据库中查找 fyeear=2003,fperiod=0的余额表记录,但是数据库中并没有这种数据。为什么要找这些数据呢?经分析,原来这个帐套是引入过来的,原帐套的开始期间是 1999.1,而当前帐套是2003.1启用,而按照当前帐套的设置,初始记录的期间应该是 2003.1,但实际的启用期间并不是 2003.1而是 1999.1,而计提折旧需要用到录入时候的数据,而大部分的卡片都是初始化的时候录入的,找不到相应的数据,当然会出错。
解答:这种问题可能是固定资产系统的启用期间和余额表不对应引起的。处理的方法是到余额表中找出最早年度和期间,然后把 t_systemprofile系统参数表中把固定资产系统的开始年度和期间改为相应的年度和期间即可。
案例
问题描述:计提折旧时提示“名称或代码已经在系统中存在”。分析过程:按照错误提示,“名称
或代码在系统中已经存在”,按照字面理解,应该是在数据库中已经存在同样的记录,导致无法保存;但据知固定资产计提折旧知识更新余额表的相关字段,并没有涉及到新插入记录的问题,应该是不会违反主键约束的。点开错误提示的“高级”按钮查看,发现真正的错误明细提示是“事务超时 ……”。由于提示“名称或代码已经存在”错误很大一部分原因是由于系统环境缓慢导致的,换了一台配置较高的机器来计提,顺利通过,说明的确是事务超时的问题导致的。解答:这种问题可能是由于卡片太多,事务超时引起的。可以到中间层服务器的管理工具的“组件服务管理器”中把组件的超时时间改为 0看看。据经验,如果固定资产卡片超过了 20000条,则可能会出现这种问题。 V94版本已经作了优化。
案例
问题描述:点击类别管理时提示“ element notfound”。
分析过程:
错误的意思是说“元素未发现”,这种“元素”一般是在填充某个数据树状结构的控件时的某个节点。为说明说“没有发现”呢?原来程序在填充这些节点的时候,是按照先填充上级节点,然后填充下级节点的顺序进行的,填充下级节点的时候,需要提供“上级节点”的值,如果这个值有误或不存在,则会出错。由于固定资产的类别是分级的,可能是数据库记录上下级次紊乱,查找 t_fagroup固定资产类别表,发现有些记录的 fparentid(父级内码)根本就非法,该内码是不存在的,改为正确的、存在的内码即可。
解答:一般是固定资产类别表 t_fagroup表记录有非法情况引起的,如某类别的上级类别不存在。
处理方法是把该记录的上级内码改为正确的、存在的上级内码即可。
问题描述:卡片新增保存时提示“类型不匹配”
分析过程:查看固定资产相关的数据很正常,使用 profile工具也跟踪不到有用的 sql,后来求助开发部使用程序进行断点跟踪,发现原来在保存的时候日期格式不对,为什么不对呢?原来系统保存时要取当前期间是从哪天开始的,而在 t_systemprofile中没有有关固定资产期间定义的记录。
该问题在 v93以前是不存在, v93版本开始卡片保存时才需要用到这个定义信息。同样的帐套,使用 v91版本来新增保存是正常的。
解答:可能是由于固定资产期间定义丢失导致的。在 t_systemprofile中有一个perioddates的记录,是专门用于记录每个期间是从哪月哪日开始的,手工插入即可。可以参考总帐的定义,一般和总帐是一致的。
案例
问题描述:某个卡片作变动时提示“缺少余额数据”
分析过程:
提示“ ……缺少余额 ID Fassetid=180”,根据错误提示到 t_fabalance表中查找fassetid=180的记录,发现只有初始录入的那条记录,而按照标准,每一个期间都是需要有一条数据的。这说明数据残缺。
解答:可能是在当期 t_fabalance等等相关数据引起的。一旦出现这种错误,在t_fabalance表中除了一条录入该卡片时的记录之外,其它期间的记录可能都已经丢失。处理的方法是反结帐一直回到该卡片新增时的期间,编辑该卡片并重新保存,然后一期一期结账过来即可。这种问题一般是有金蝶 2000帐套升级上来导致的。
问题描述:固定资产自动对帐和总帐对不上,但其它报表和总帐对的上。
案例
分析过程:固定资产变动情况表的数据是最准确的,正常情况下,各种报表之间数据都是一致的。但是如果存在问题的话,可能就不一致。经查看 t_fabalance余额表,发现其它报表的数据是对的,而自动对帐的数据是错误的。经过跟踪,发现自动对帐查找数据的 sql使用了余额表和变动相关表,而余额表和变动相关表相关连的条件是固定资产内码之外,还有固定资产的变动日期。去除变动日期的限制,数据就和其它报表的一致了,这说明变动相关表和固定资产余额表的变动日期有某些卡片存在不一致的情况。经查,确实如此。解答:这种情况一般是固定资产变动相关表和余额相关表的日期不相同导致的。正常情况下, t_faalter和t_fabalance的变动日期是一致的,但是由于升级或其它的原因导致不一样,而自动对帐的 sql中是用到了这个变动日期的。使用下面的 sql可以修正:
update bal set faltdate=faalter.fdate from t_fabalance bal,t_faalter faalter
where
faalter.fassetid=bal.fassetid
and faalter.falterid=(select max(falterid) from t_faalter where
fassetid=faalter.fassetid
and (fyear<bal.fyear or (fyear=bal.fyear and fperiod<=bal.fperiod)))
问题描述: 1.折旧明细表和折旧费用分配表的折旧额不一致,其它报
分析过程:
表正常。
固定资产明细表和折旧费用分配表都涉及到了“分配”的问题,只不过不同的是“明细表”在部门和类别中分配,“费用分配表”在“折旧费用项目”中分配。既然有分配的问题,就有分配率的问题。经跟踪两个表的 sql语句,发现都使用了余额表,折旧分配表还使用了折旧费用科目分配表。查找 t_fabalance、t_fabaldept和t_fabalexpense的记录数目,发现 t_fabalexpense的数量少于 t_fabalance,而按照规则, t_fabalance和t_fabalexpense的记录数应该是对应的,最起码应该是 t_fabalexpense和t_fabalance纪录数一样多,而不应该少于 t_fabalance表,因此发现了 t_fabalexpense记录缺少。
解答:这种情况一般是 t_fabalexpense或t_fabaldept等等相关表有某个表记录丢失引起导致的。如余额表 t_fabalance表有 1000记录,而 t_fabalexpense
只有 999条记录,说明 t_fabalexpense缺少了一条,必须补上。修补的方法是参考 t_fabaldept表或 t_fabalexpense表对应的记录补上。