本文主要是介绍金蝶 EAS 编码规则 新增显示且不允许断号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如下是引自金蝶社区:https://club.kingdee.com/forum.php?mod=viewthread&tid=898038
不允许断号是不能在单据新增的调用getnumber的,因为会出现这样一个场景,但用户新增一个单据时,调用了getnumber方法,抢号动作发生了,但是这时用户不保存这条单据,那么就造成断号了。如果要在不允许断号的时候能够显示出编码可以调用编码规则的readnumber方法生成一个临时的编码,真正保存的时候(在bean方法里)调用的是getnumber。
新增显示且不允许断号的实现就是要在单据新增的时候调用readnumber生成一个临时的编码,然后在单据保存的时候再调用getnumber方法。
新增时显示且不允许断号,具体实现方法如下:
1. 在新增单据时,通过readNumber方法获取临时编码:
String number = "";
try{ RenewalAppInfo info = new RenewalAppInfo();ICodingRuleManager iCodingRuleManager = null;OrgUnitInfo orgUnit = ContextUtil.getCurrentOrgUnit(ctx);if(orgUnit != null){iCodingRuleManager = CodingRuleManagerFactory.getLocalInstance(ctx);if(iCodingRuleManager.isExist(info, orgUnit.getId().toString())){number = iCodingRuleManager.readNumber(info, orgUnit.getId().toString()); } }
} catch(Exception e){e.printStackTrace();
}
2. 在保存单据时,保证真正的编码,重写**ControllerBean的方法,另外注意:应该是_addnew方法,而不能是_save方法。
protected IObjectPK _addnew(Context ctx, IObjectValue model)throws BOSException, EASBizException {DanJuInfo info = (DanJuInfo) model;String number = "";ICodingRuleManager iCodingRuleManager = null;OrgUnitInfo orgUnit = ContextUtil.getCurrentOrgUnit(ctx);if (orgUnit != null) {try {iCodingRuleManager = CodingRuleManagerFactory.getLocalInstance(ctx);if (iCodingRuleManager.isExist(info, orgUnit.getId().toString())) {number = iCodingRuleManager.getNumber(info, orgUnit.getId().toString());}} catch (Exception e) {e.printStackTrace();}}info.setNumber(number);return super._addnew(ctx, model);
}
3. 在删除单据时,回收编码,同样是重写**ControllerBean的方法:
protected void _delete(Context ctx, IObjectPK pk) throws BOSException,EASBizException {RenewalAppInfo info = RenewalAppFactory.getLocalInstance(ctx).getRenewalAppInfo(pk);String number = info.getNumber();super._delete(ctx, pk);//回收编码ICodingRuleManager iCodingRuleManager = CodingRuleManagerFactory.getLocalInstance(ctx);iCodingRuleManager.recycleNumber(info, ContextUtil.getCurrentOrgUnit(ctx).getId().toString(), number);}
断号表:T_BAS_IntermitNO
最大号表:T_BAS_MaxSerial
通过编码规则的编号查询:
select * from T_BAS_IntermitNO where FCODINGRULEENTRYID in(
select FID from T_BAS_CodingRuleEntry where fcodingruleid in(
select fid from T_BAS_CodingRule where fnumber='规则编码'
) )
select * from T_BAS_MaxSerial where fcodingruleentryid in(
select FID from T_BAS_CodingRuleEntry where fcodingruleid in(
select fid from T_BAS_CodingRule where fnumber='规则编码'
))
编码规则不支持编辑的解决办法:
增加扩展属性 CRNumberEdit ,并设置为true,之后在编码规则里面勾选“支持修改”即可。
如果是在web端增加的扩展属性,必须将扩展方案启用,并重启客户端后,新增编码规则里面的“允许修改”复选框才能勾选。
这篇关于金蝶 EAS 编码规则 新增显示且不允许断号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!