1/7用友股份-LE支持服务业务本部产品方案--《资产变动或减少参照不到卡片的几种情况》建立日期:2013-12-10修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-CP-2013-10422/7文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围内部员工伙伴客户发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-12-10洪波产品支持部V1。0版本领域模块备注3/7目录资产变动或减少参照不到卡片的几种情况............................................................4一、问题描述............................................................................................................4二、问题分析及解决................................................................................................4情况一:................................................................................................................4情况二:................................................................................................................4情况三:................................................................................................................64/7资产变动或减少参照不到卡片的几种情况注:此解决方案涉及数据库操作或代码操作,请由计算机专业人士操作,并且操作前请做好备份工作!一、问题描述固定资产在资产变动或减少时参照不到相应的卡片。二、问题分析及解决总结一下出现此问题的几种情况和解决脚本:情况一:参照不到的卡片已被变动单引用但未生效,在前台查询不到此未审核的变动单或者说bill_code字段值有异常:解决方案,通用脚本:updatefa_logsetbill_code=nullwherecode=(selectpk_cardfromfa_cardwheredr=0andcard_code='问题卡片编码'andpk_corp=(selectpk_corpfrombd_corpwhereunitcode='公司编码'))情况二:由于资产卡片(fa_log)日志表信息丢失而导致此问题:解决方案,通用脚本:5/7先查询出有问题公司的公司主键,再将以下的“公司主键”都替换成查询到的公司主键值。--begin查询哪些卡片丢失了fa_log表记录:select*fromfa_cardwhere(selectcount(*)fromfa_logwherecode=pk_card)=0andpk_corp='公司主键'--也可以用以下脚本判断一下该卡片在fa_log中是否真的没有记录,没有记录才能执行下面的insert语句:select*fromfa_logwherecode=(selectpk_cardfromfa_cardwherepk_corp='公司主键'anddr=0andasset_code='有问题的资产编码');--写入日志表信息(通版)Insertintofa_log(accyear,bill_code,busi_date,code,deleted_flag,dr,fk_accbook,logid,logtype,period,pk_corp,pk_log,redep_flag,ts)values(2009,'','',(selectpk_cardfromfa_cardwherepk_corp='公司主键'anddr=0andasset_code='有问题的资产编码'),0,0,'0001R6100000000002C4',(selectmax(logid)fromfa_logwherepk_corp='公司主键')+1,0,'11','公司主键','主键',0,'2010-12-2304:38:04');commit;--注:主键需要每次加1如第一个为:1004I811111111111001,第二个为:1004I811111111111002,依次增加--举例6/7insertintofa_log(accyear,bill_code,busi_date,code,deleted_flag,dr,fk_accbook,logid,logtype,period,pk_corp,pk_log,redep_flag,ts)values(会计年度,'','',(selectpk_cardfromfa_cardwherepk_corp='公司主键'anddr=0andasset_code='资产编码'),0,0,'账簿主键',(selectmax(logid)fromfa_logwherepk_corp='公司主键')+1,0,'11','公司主键','1004I811111111111001',0,'2010-12-2304:38:04');commit;--end//执行后重启中间件,清除缓存。情况三:因卡片来源字段为空而参照不到卡片的情况:解决方案,通用脚本:查询有问题数据:select*fromfa_cardwheresourceisnullanddr=0;备份有问题数据:createtablefa_card_temp20110323asselect*fromfa_cardwheresourceisnullanddr=0;将卡片来源source字段值修改为1updatefa_cardsetsource=1wheresourceisnullanddr=0;commit;1-表示手工录入;2-调拨单产生;3-拆分单产生;4-新增审批单产生;5-合并生成的卡片;6-合并单据;7-盘盈单据;8-设备卡片备注:遇到这种问题请先确认问题原因,定位后注意先备份数据再执行相应脚本。7/7情况一和情况二在各版本中都可能出现;情况三只在5.6以后版本中才会出现,因为代码中增加了对source卡片来源字段的效验,此字段不可为空。所以升级到5.6版本的项目可能会遇到此问题。