浮动换算率存货质检后入库报错用友软件股份有限公司181号工程师2010年1月25日客户的问题质检属性的存货,到货单报检后,全部不合格,都做降级处理,参照不良品处理单生成采购入库单,保存时报错:单据保存失败,修改或稍后再试。入库单数量不能大于所参照到货单的数量,不能保存。分析思路首先与客户确认,是否单据数量超过上游单据数量,但是客户表示没有,单据全部不合格直接降级处理的。接着怀疑是否修改过数据精度,存着后台小数位为.999999999……,然后前台数据大于该数量,客户表示也没有。建议用户勾选允许超采购到货单入库来保存单据,但是客户表示他们企业控制不能超上游单据保存,而且客户说如果以后再出现这种现象,不能总是依靠修改选项来保存。客户询问:单据数量一直没有修改,是参照上游单据一步步做下来的,为什么会出现这种现象?分析思路客户坚持要找到问题所在原因,客户版本是872sp1,首先在同样环境上进行测试。客户处存货是浮动换算率,到货单的数量是7020.000,件数是488.000000,按照客户单据的数量开始测试,报检、检验、不良品处理,再参照做采购入库单,没有重现客户现象能够正常保存。此时怀疑还是客户操作不当!!!分析思路指导客户重现录入相同单据再次操作,客户还是不能保存单据。但是为什么不能重现客户现象?再次指导客户操作,客户每做一步操作都将现象进行描述,终于发现问题所在……发现问题当做到不良品处理单时,表头的待处理不良品数量为7020.00,件数为488.000000,但是表体的不良品数量为7020.000,不良品件数却是488.008342而不是488.000000,降级后存货的数量是7020.000,件数为488.000000,这样做当采购入库单的数量是7020.000,件数是488.000000,单据不能保存。分析问题但是为什么表体的不良品处理件数大于488.000000?查看我处软件数据精度设置,换算率的数据精度是6,而客户处的换算率是3,将换算率改成3,再测试,终于重现客户现象。问题重现不良品件数大于待处理不良品件数不能保存换算率精度改成5可以保存原因不良品处理单表体不良品的件数不是直接取自表头待处理不良品件数,而是根据表体的不良品数量以及表头的换算率反算而来。客户换算率精度是3,换算率=7020/488=14.3852459016……,表头的换算率是14.385,表体不良品件数=7020/14.385=488.008342022……>488.000000,故单据不能保存。换算率精度是4也不能保存,7020/14.3852=488.0015571……>488.000000当换算率精度为5,换算率为14.38525,表体不良品件数=7020/14.38525=487.9998609687……<488.000000,能正常保存单据解决方案建议用户将换算率数据精度改为5,避免以后再次出现该现象。谢谢!