Page tree
Skip to end of metadata
Go to start of metadata

问题描述:
1、在业务草稿里面打开单据过账提示:本张草稿已经过账,请确认后重试!

2、在业务草稿里面勾选多张单据点击批量过账提示:所选单据不能包含已过账单据,请刷新后重新选择!

处理方法:
1、先执行【本张草稿已过账.sql】,会将异常单据直接写入到经营历程里面,该脚本只是将草稿修改为过账状态。注意:该脚本无法修改费用类、收付款单、调账单据的状态。
2、执行完上面脚本后,要通知客户到经营历程里面找到之前异常单据红冲或删除了重新做。
3
、重做后,在执行对应成本算法库存重算的脚本。
      https://share.weiyun.com/f1XUb9mY         --- 本张草稿已过账.sql
      https://share.weiyun.com/YrN7TErK           ---【移动加权】库存重算.sql
      https://share.weiyun.com/CCdWrvgA        ---【手工指定】库存重算.sql

问题原因:
1、多人在同一个时间点同时操作同一张单据,比如1个人过账,另外1个人修改单据,过账的人先提交,修改的人后提交,导致单据被写回到草稿,时间差可能只有0.0几秒的样子,就容易导致该现象,可以打开单据,点击单据助手-单据操作记录,查看操作记录,如果要避免,需要客户优化操作流程,尽量避免多人并发操作的流程。
2、优化服务器和客户端电脑的配置,性能越高出现并发的几率越小,比如提供资源比较充足的内存、CPU,优化网络的上行和下行速度等。
3、可以在SQL数据库里面执行下面语句,查询并发导致单据过账又被写回草稿的单据日志。
select o.id,o.billnumberid,o.OperateType,e.usercode 操作员编号,e.fullname 操作员名称,o.operatetime 操作时间,o.IP,o.billcode,o.billdate,case when ifcheck ='f' then '草稿' when ifcheck='t' then '过账' end 单据状态 ,b.usercode 往来单位编号,b.fullname 往来单位名称,o.ntotalmoney 单据金额,bn.billname from BillOperateLog o left join employee e on e.typeid=o.etypeid left join btype b on b.typeid=o.btypeid left join billname bn on bn.billtype=o.billtype 
where o.billnumberid in(
select billnumberid from billindex b where ( b.ifcheck='f' or b.draft = 1)
and ( exists (select 1 from inoutstocktable i where i.billnumberid=b.billnumberid and i.billtype=b.billtype)
or exists(select 1 from listtable l where l.billnumberid=b.billnumberid and l.billtype=b.billtype)))
order by o.billnumberid,o.id

  • No labels