实现单据调用系统标准账表,单据字段传值到账表过滤条件原创
金蝶云社区-夏日弥光
夏日弥光
18人赞赏了该文章 1303次浏览 未经作者许可,禁止转载编辑于2022年06月30日 13:44:29

        此方法适用于在单据上调用显示系统标准账表,同时将单据某些值,赋值给账表的过滤条件。总的逻辑并不复杂,有基础开发知识就能理解。核心就是showParameter的自定义参数传递。

涉及需要注册的插件:

1.单据表单插件;

    public class ApplySubledgerForAcctItems : AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {//点击按钮事件
            base.BarItemClick(e);
            //当点击这个按钮,触发
            if (e.BarItemKey.Equals("tbGL_RPT_SubledgerForAcctItems"))
            {   //调用,系统标准账表
                DynamicObject FSUPPLIERID = this.View.Model.GetValue("FSUPPLIERID") as DynamicObject;
                string supplierNumber = FSUPPLIERID["Number"].ToString();
                string pageId = Guid.NewGuid().ToString();                
                MoveReportShowParameter showParameter = new MoveReportShowParameter();
                showParameter.CustomComplexParams.Add("supplierNumber", supplierNumber);//要传递的参数
                showParameter.FormId = "GL_RPT_SubledgerForAcctItems";                
                showParameter.PageId = pageId;                
                this.View.ShowForm(showParameter);
            }
        }
    }

2.账表表单插件;

    public class REGL_RPT_SubledgerForAcctItems : AbstractSysReportPlugIn
    {
        public override void OnInitialize(InitializeEventArgs e)
        {
            base.OnInitialize(e);
            if (this.View.OpenParameter.GetCustomParameter("supplierNumber") != null)//首先判断是否由单据调用,并且有值,否则单独打开账表时会报错
            {
                string supplierNumber = this.View.OpenParameter.GetCustomParameter("supplierNumber").ToString();   //接收单据传过来的值             
                SysReportShowParameter param = new SysReportShowParameter();
                param.CustomParams.Add("supplierNumber", supplierNumber);//将单据传过来的值,又传给过滤窗口
            }
            else
            {
                return;
            }
        }
    }

3.账表过滤窗口表单插件;

    public class REGL_RPT_SubledgerForAcctItemsFilter:AbstractReportFilter
    {
        public override void TreeNodeClick(TreeNodeArgs e)
        {
            base.TreeNodeClick(e);
            if (this.View.ParentFormView.OpenParameter.GetCustomParameter("supplierNumber") != null)
            {
                var supplierNumber = this.View.ParentFormView.OpenParameter.GetCustomParameter("supplierNumber");//获取账表表单插件传过来的值
                this.View.Model.SetValue("FSTARTDETAIL", supplierNumber);//对过滤窗口字段赋值
                this.View.Model.SetValue("FNOBALANCE", false);
                ((IDynamicFormViewService)this.View).ButtonClick("FBTNOK", string.Empty);//模拟过滤窗口确定按钮点击
            }
        }
    }


赞 18