本文讨论了业务开发中单据字段校验的问题,指出传统在表单插件事件中校验的局限性,并提出了通过自定义操作校验器来实现更全面的校验方案。详细阐述了在保存单据时校验“申请日期”和“预计送货日期”等字段的具体实现步骤和注意事项,并提供了操作插件注册及业务开发的参考资料。最后,作者鼓励读者反馈并点赞支持。
在实际业务开发过程中,很多场景涉及这样一个需求:保存/提交/审核时,需校验单据上的某些字段是否符合某些条件。目前,很多同学都是在表单插件中的 beforeItemClick/beforeDoOperation 等事件中进行校验,这种方案虽然达到了目的,但如果在后台通过代码对单据数据进行操作,则不能触发这些校验逻辑,从而造成业务数据不正确。下面我将以自定义操作校验器的方式给各位看官献上另一个实现方案。
样例场景
保存单据的时候校验:
1. 单据头的“申请日期”字段不能早于当前日期;
2. 子单据体中的“预计送货日期”字段不能晚于单据体中的“最迟送货日期”字段,否则该单不允许继续操作。
实现方案
1. 捕获 onPreparePropertys 事件,要求加载申请日期、预计送货日期、最迟送货日期字段
2. 捕获 onAddValidators 事件,添加自定义校验器
3. 实现自定义校验器,对申请日期&当前日期、预计送货日期&最迟送货日期分别进行比较
设计器界面
样例代码
插件注册
效果图
注意事项
1. 对于字段的校验,尽量在操作插件中完成,这样做的好处有:不仅在前端界面操作的时候可以触发校验逻辑,而且在后台通过代码操作单据的时候也可触发,例如,在单据A的插件中新建一条单据B的业务数据,并通过 OperationServiceHelper.executeOperate 保存单据B的时候会触发绑定在单据B的操作上的操作插件。此外,如果将操作绑定到工作流节点上,同样可触发校验逻辑。
2. 针对单据上字段的校验请优先通过操作代码中的“校验规则”项进行配置。
3. 操作插件的注册请参阅 https://club.kdcloud.com/article/239776518421883648
4. 业务开发请注意记录日志!
参考资料
https://dev.kingdee.com/index/docsNew/34f4b44b-0ced-4bbd-8421-251243949f02 ——《金蝶云苍穹平台插件开发指南》—— 第11章单据操作查件
https://club.kdcloud.com/article/225551382106406144
https://club.kdcloud.com/article/142592327243561984
https://dev.kingdee.com/index/docsNew/e02e5233-618c-4a0a-8b53-e39f37e62301
大家如有任何建议和意见,欢迎在评论区留言,我将不断努力改进。
创作不易,如能帮到大家,请动动您的金手指点赞鼓励一下,非常感谢~【emoji】【emoji】【emoji】
自定义操作校验器校验日期字段.zip(12.52KB)
推荐阅读