问题描述:
通过工作流的单据转换节点,将费用报销单转换成付款单,在付款单提交节点参与人在GUI的消息中心可以处理这条待办任务,但是在web端打开待办任务报错了,如下图所示:
错误详细堆栈信息:com.kingdee.bos.dao.ObjectNotFoundException: MissingRecord:BizAccountBill id = 'UhyWdPtBQsSO5zCf8b2nokAoToE=' AIS:T01 username:zs01
at: com.kingdee.bos.dao.ormapping.ORMappingDAO.checkSize(ORMappingDAO.java:533)
该节点绑定了付款单的提交方法,且报错中的id也是付款单的id,为什么寻址到了费用报销单呢?
分析解答:
流程图如下:
查看付款单提交节点的配置,如下:
可以看到,waf2单据界面没有配置。
因最开始走的是费用报销单的流程,而单据转换后要走付款单的流程,对于使用了单据转换节点的流程,单据转换后的单据的提交节点,waf单据界面必须要配置,否则寻址会出现问题,还会找费用报销单的页面,导致拿付款单的id到报销单的实体中去找,找不到就提示MissingRecord。
在单据转换后的人工节点配置付款单编辑界面(可能会有多个编辑界面,请根据需要配置),如下图:
思维拓展:
某客户反馈借款单工作流程设置单据审核状态的自动节点挂起了,报错如下:
报错如下:
Caused by: com.kingdee.bos.workflow.WfException :
自动活动【审核】执行时出现异常:自动任务【报销单功能(com.kingdee.eas.cp.bc.app.BizAccountFunction)】的操作【设置单据审核通过状态(setPassState)】时发生错误
parameters:{
[参数值:egHxcJ/ySmeEYKsN0zxtqIEQqrI=,参数类型:class com.kingdee.bos.util.BOSUuid]
[参数值:oscAq2nDQb2a6z+b2tuhCYDvfe0=,参数类型:class com.kingdee.bos.util.BOSUuid]
}
com.kingdee.bos.dao.ObjectNotFoundException: MissingRecord:BizAccountBill id = 'egHxcJ/ySmeEYKsN0zxtqIEQqrI=' AIS:gysy username:张三
at com.kingdee.bos.dao.ormapping.ORMappingDAO.checkSize(ORMappingDAO.java:533)
【省略】
at com.sun.proxy.$Proxy308.getBizAccountBillInfo(Unknown Source)
at com.kingdee.eas.cp.bc.BizAccountBill.getBizAccountBillInfo(BizAccountBill.java:65)
【省略】
at com.sun.proxy.$Proxy307.getBizAccountBillInfo(Unknown Source)
at com.kingdee.eas.cp.bc.app.ExpenseAccountFacadeControllerBeanEx._setPassStateEvent(ExpenseAccountFacadeControllerBeanEx.java:29)
分析发现,二开方法中(ExpenseAccountFacadeControllerBeanEx._setPassStateEvent)将单据id都转成费用报销实体了,而不是根据bosType去找,所以导致用借款单的id去查了费用报销的表而报错。
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *