对于单据的编码规则,实施人员在配置了编码规则后,单据新增时根据编码规则自动生成的编码中CU的编码为空,咨询研发相关人员后得知,目前的编码规则生成时,如果要生成新的编码需要调用getNumber(info,org)方法,readNumber(info,org)取得的结果始终是临时显示用。取得新的编码时,如果涉及当前单据的属性值的,则必须要包含在info中,才能生成正确的编码规则。
基于此原则,就是因为info中没有设置CU的对象,所以解决方法如下:
在EditUI中在createNewData()的方法中增加:
objectValue.setCU(SysContext.getSysContext().getCurrentControlUnit());
注意:
getNumber(info,org)中的org是过滤编码规则用的,对生成编码规则没有用;
这里要说说readnumber(info,org)和getNumber(info,org)的联系和区别:
联系:二者都能取到编码规则
区别:readNumber取到编码规则时不会在后台自动增加计数,也就是说如果没有其他用户调用相同编码规则,则每次取回来的编码一定是相同的;而对于getNumber来说,如果编码规则中含有序数,则每调一次都会按照步长返回一个新的编码。
对于客户端单据新增时显示的编码,是调用readNumber的,真正单据在服务端保存时,框架再自动调用getNumber来取一次编码赋给单据,这是因为客户端新增时,可能中途放弃新增,那么这时如果是用getNumber的话就会浪费一个编码,所以要用readNumber。

本文详细解释了单据编码规则的生成原理,包括getNumber与readNumber方法的区别及应用场景,并给出了编码缺失问题的具体解决方案。
6177

被折叠的 条评论
为什么被折叠?



