通过插件给特定下推加条件原创
金蝶云社区-eris
eris
2人赞赏了该文章 372次浏览 未经作者许可,禁止转载编辑于2022年07月14日 11:09:43

特定下推是个标准操作,没有前提条件配置,但可以通过在表单插件中加条件控制, 如下示例:

把特定下推挂在保存菜单里,当单据体存在任何物料为空的行则不运行特定下推,否则运行特定下推

  1. 把特定下推挂在保存菜单中,如下图:

    image.png

  2. 编写表单插件并注册, 在表单插件中判断是在保存操作中的特定下推, 如果存在物料为空的行则取消运行,插件代码放在最后。

    image.png

  3. 不存在物料为空的行运行效果:

    image.png

  4. 存在物料为空的行,不产生下游单据

    image.png

  5. 插件代码:

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