通过表单插件控制多个辅助属性必录原创
金蝶云社区-云社区用户n7090215
云社区用户n7090215
12人赞赏了该文章 5023次浏览 未经作者许可,禁止转载编辑于2020年05月30日 13:11:33

1.需求

1)客户生产订单要求辅助属性必录

2)BOS配置必录存缺陷,物料启用了多个辅助属性,只要录一个就可以保存

3)物料辅助属性勾选“影响计划”可以控制每个辅助属性都必录,但是这也导致做物料清单时,每个辅助属性都必录,客户物料清单不需要每个辅助属性都必录

2.实现思路

1)在表单插件beforeSave中控制

3.代码

/// <summary>
        /// 控制生产订单辅助属性必录
        /// </summary>
        /// <param name="e"></param>
        public override void BeforeSave(Kingdee.BOS.Core.Bill.PlugIn.Args.BeforeSaveEventArgs e)
        {            
            base.BeforeSave(e);            
            string auxPropId = "";
            //取生产订单表体
            Entity fentity = this.View.BillBusinessInfo.GetEntity("FTreeEntity");            
            DynamicObjectCollection entityObs = this.Model.GetEntityDataObject(fentity);             
            
            //循环表体分录
            for (int i = 0; i < entityObs.Count; i++)
            {
                //取当前分录录入的辅助属性值
                DynamicObject auxPropObs = entityObs[i]["AuxPropId"] as DynamicObject;
                if (auxPropObs == null) continue;
                //取当前分录录入的物料
                DynamicObject materialId = entityObs[i]["MaterialId"] as DynamicObject;
                //取当前分录物料的辅助属性启用状态
                DynamicObjectCollection materialAuxptys = materialId["MaterialAuxPty"] as DynamicObjectCollection;
                //循环判断各个辅助属性是否启用
                for (int j = 0; j < materialAuxptys.Count; j++)
                {
                    //判断物料启用该辅助属性
                    if (materialAuxptys[j]["IsEnable1"].ToString() == "True")
                    {
                        //组合辅助属性字段,例如:F100001_Id
                        auxPropId = "F" + materialAuxptys[j]["AuxPropertyId_Id"].ToString() + "_Id";
                        //判断辅助属性值是否为空
                        if (auxPropObs[auxPropId].ToString().Length == 0)
                        {
                            //如果为空就取消保存,并弹出提示
                            e.Cancel = true;
                            //取辅助属性名称
                            DynamicObject AuxPropertyId = materialAuxptys[j]["AuxPropertyId"] as DynamicObject;
                            this.View.ShowErrMessage("辅助属性" + AuxPropertyId["Name"].ToString()+ "不能为空");
                        }

                    }
                }

            }
        }

赞 12