通过插件给特定下推加条件原创
2人赞赏了该文章
372次浏览
编辑于2022年07月14日 11:09:43
特定下推是个标准操作,没有前提条件配置,但可以通过在表单插件中加条件控制, 如下示例:
把特定下推挂在保存菜单里,当单据体存在任何物料为空的行则不运行特定下推,否则运行特定下推
把特定下推挂在保存菜单中,如下图:
编写表单插件并注册, 在表单插件中判断是在保存操作中的特定下推, 如果存在物料为空的行则取消运行,插件代码放在最后。
不存在物料为空的行运行效果:
存在物料为空的行,不产生下游单据
插件代码:
using System; using System.Collections.Generic; using System.Linq; using System.ComponentModel; using Kingdee.BOS.Util; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Log; using Kingdee.BOS.Orm.DataEntity; namespace Kingdee.BOS.TestPlugIn22.FormPlugin { [HotUpdate] [Description("单据测试插件")] public class TestFormPlugIn : AbstractDynamicFormPlugIn { bool isSaveOperate = false; public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); isSaveOperate = false; if (e.BarItemKey == "tbSave") { isSaveOperate = true; } } /// <summary> /// 特定下推之前判断是否符合下推条件 /// </summary> /// <param name="e"></param> public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); //保存下挂的特定下推 if (isSaveOperate && e.Operation.FormOperation.Operation == "SpecPush1") { //如果存在物料为空的行则不做特定下推 var rowCount = this.Model.GetEntryRowCount("FEntity"); for (int i = 0; i < rowCount; i++) { var materialValue = this.Model.GetValue("FMaterial1", i); if (materialValue == null) { e.Cancel = true; //取消特定下推操作 } } } } } }
赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *
10金币20金币30金币40金币50金币60金币
可用金币: 0