编码规则常见问题分析
金蝶云社区-alice_jiang_1
alice_jiang_1
2人赞赏了该文章 4,340次浏览 未经作者许可,禁止转载编辑于2015年04月30日 17:08:22
summary-icon摘要由AI智能服务提供

本文介绍了在单据中应用编码规则及其相关操作的方法,包括如何启用编码规则、让实体属性参与编码、设置编码规则的应用条件、处理不允许断号的情况、支持编码修改、将编码规则应用于其他字段、设置文本类型适用条件、解决编码重复错误、排查编码生成问题、处理编码规则序时薄不显示单据、getnumber和recyclenumber方法的调用顺序、处理数据过多异常等,并给出了注意事项。


1、 我想在单据中应用编码规则怎么处理? 让单据应用编码规则,可以在单据对应的实体中加扩展属性codingruleenable,并将该值设置为true。 2、 我想让实体的属性参与编码该怎么处理?让实体的属性参与编码可以在实体属性的扩展属性中加入isincode,并加该属性的值设置为true。 3、 我想让为定义的编码规则设置应用条件该做哪些设置?让实体的扩展属性参与到适用条件可以在该属性的扩展属性中加入isBindingProperty,并将这个属性的值设置为true。 4、 规则定义的时候勾选了不允许断号,新增单据的时候不能出现编码?这个问题首先要区分新增显示和不允许断号,新增显示且不允许断号的区别新增显示的时候调用的是getnumber方法,这样在单据新增的时候就去抢号了。 不允许断号是不能在单据新增的调用getnumber的,因为会出现这样一个场景,但用户新增一个单据时,调用了getnumber方法,抢号动作发生了,但是这时用户不保存这条单据,那么就造成断号了。如果要在不允许断号的时候能够显示出编码可以调用编码规则的readnumber方法生成一个临时的编码,真正保存的时候(在bean方法里)调用的是getnumber。 新增显示且不允许断号的实现就是要在单据新增的时候调用readnumber生成一个临时的编码,然后在单据保存的时候再调用getnumber方法。 5、 勾选了不允许断号的时候出现了断号现象?这个要先确认在单据删除的时候是不是调用了编码规则的recyclenumber方法,如果没有调用这个方法是肯定 会出现断号的,因为如果调用了recyclenumber方法,我们就会把回收到的断号放到一个断号表里,这样下次再新增一个单据的时候我们会从断号表中去取断号,这样就避免了出现断号。 6、 编码规则怎样才能支持修改?支持修改的时候要注意哪些问题要让生成的编码支持修改必须在单据的实体的扩展属性中加入CRNumberEdit,并加该属性设置为true。这样在规则定义的时候再去勾选支持修改,这样在新增单据的时候就会让用户可以修改了。在单据支持修改的时候要注意:保存时候会调用编码规则的checkModifiedNumber方法,调用这个方法时把修改后的编码传进来,如果修改后的编码的顺序号超过了当前的编码规则生成的最大号,这个时候就会抛出最大值超过范围的提示。 7、 我想让设置的编码规则应用到除编码外的其他字段该怎么处理?如果想让设置的编码规则应用到除编码外的其他字段,可以继承我们提供的接口ICodingRuleAdapt,并且实现ICodingRuleAdapt类的getAdaptItemList方法,将要参与编码的其他属性以AdaptItem的方式放到list中。并且将要改单据的bostype和实现类放到CodingRuleAdapt.properties这个文件中。格式如下:FF66566A=com.kingdee.eas.ma.budget.NameCodeRuleAdapt并且在规则定义的时候把要应用该编码规则的字段加进来
8、我想在编码规则的适用条件里设置文本类型如果想在适用条件里应用文本类型,可以实现编码规则提供的接口IbindingProperty,并实现里面的方法,将要参与适用条件的文本类型数据的值传过来。同时将单据的bostype和属性值以及实现类放到property.xml中,格式如下: 9、 单据保存的时候报编码重复错误是怎么回事?报编码重复的重复可能有三种:⑴ 编码规则中没有设置将顺序号参与编码,这样每次生成的编码都是一样的。⑵ 有些单据会有一些导入的功能,而导入是从excel文件导入的,但是导入的数据没有编码,这是人工加入一些编码肯定会与后续编码规则生成的编码产生重复。⑶几个不同的单据分别定义了各自的编码规则,但是编码规则定义的的一模一样,这样在生成编码时候肯定会出现重复。 10、 我明明将该属性在规则定义的时候参与编码怎么编码生成的时候没有这个属性值?这个要确定你调用编码规则的getnumber或者readnumber的时候传进来的info里面这个属性是否有值,通常情况下,如果info里面有这个值,是肯定会显示出来的。 11、 编码规则序时薄里左侧的树中没有出现我的单据是怎么回事?首先要确认单据的实体是否设置了codingruleenable这个扩展属性,如果设置了还是没有显示应该是本地环境的问题,重新生成一下子系统树再试试。 12、 编码规则getnumber方法和recyclenumber方法的调用的顺序(1) getnumber方法的调用策略:getnumber方法应该是在业务的所有操作执行完之后在保存放方法执行之前调用,因为如果在业务操作之前调用getnumber方法,一旦业务的操作发生异常,而getnumber方法的事务类型是requirenew,这样getnumber没有进行回滚,而此时抢号操作已经发生了,这样就是导致发生断号现象。(2) recyclenumber方法的调用策略recyclenumber方法应该在业务操作之前去调用,因为recyclenumber如果放在业务操作后,那么传给recyclenumber方法的info里面的值就会发生变化,这样就是导致recyclenumber找不到对应的编码规则,回收会失败,会导致断号现象。 13、 编码规则查看的时候报数据过多的异常的处理方法? 如果查看的时候出现以下错误:“您进行的业务操作数量超出限制,请改变过滤条件,重新执行,同时把请把异常信息提交给管理员,谢谢!”应该是该规则对应的断号数据量很大,可以将没用用的断号直接删除掉,另外的处理方法是:1.需先安装管理控制台补丁PT0261872.修改配置文件:Server\admin\config\admin.vmoptions配置criticalCollection=100000criticalIDList=100000exceptionCellNumber=1000000如果找不到这几个参数就要添加3.然后重启管理控制台和应用服务 14、 注意事项:(1) 不要私自去修改断号表和最大号表中的内容,如果修改后造成断号,后果自负(2) 如果在二次开发中要调用编码规则的内容,请先咨询相应的业务负责人。咨询对应的接口方法。