二开插件 - 辅助属性值校验
客户需求: 当用户=A时 单据体明细行的每个物料的其中一个辅助属性不能存在B。例如;用户A时,单据明细行物料【等级】这个辅助属性不等于B
实现方案: 保存时,如果当前用户是A,则当明细中有物料【等级】等于B的给出提示,不保存。
1. 查看辅助属性[等级]的编码。打开主菜单 - 基础管理 - 基础资料 - 辅助属性列表菜单。
2. 查看辅助属性[等级]的值列表,查看B的编码。
3. 表单插件代码如下:
public override void BeforeSave(BeforeSaveEventArgs e) { base.BeforeSave(e); //用户A内码100088,等级编码为001,等级值不能为B long User_Id = 100088; string Level_Number = "001"; string Level_Value = "B"; //取采购申请单明细 Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); DynamicObjectCollection lstEntityObjs = this.Model.GetEntityDataObject(entity); if (lstEntityObjs.IsEmpty()) return; foreach (DynamicObject dynItem in lstEntityObjs) { //取当前分录录入的辅助属性值 DynamicObject dynAuxValue = dynItem["AuxPropId"] as DynamicObject; if (dynAuxValue == null) continue; //取当前分录录入的物料 DynamicObject dynMaterial = dynItem["MaterialId"] as DynamicObject; //取当前分录物料的辅助属性 DynamicObjectCollection lstMaterialAuxProps = dynMaterial["MaterialAuxPty"] as DynamicObjectCollection; if (lstMaterialAuxProps.IsEmpty()) continue; //循环校验各个辅助属性 foreach (DynamicObject auxPropItem in lstMaterialAuxProps) { //判断物料启用该辅助属性 var isEnable1 = ObjectUtils.Object2Bool(auxPropItem["IsEnable1"]); if (!isEnable1) continue; //组合辅助属性字段,例如:F100001 var auxPropId = "F" + ObjectUtils.Object2String(auxPropItem["AuxPropertyId_Id"]); var auxValue = dynAuxValue[auxPropId] as DynamicObject; if (auxValue == null) continue; var auxValueNumber = ObjectUtils.Object2String(auxValue["FNumber"]); //取辅助属性编码和名称 DynamicObject dynAuxProp = auxPropItem["AuxPropertyId"] as DynamicObject; var auxNumber = ObjectUtils.Object2String(dynAuxProp["Number"]); var auxName = ObjectUtils.Object2String(dynAuxProp["Name"]); if (this.Context.UserId == User_Id && auxNumber == Level_Number && auxValueNumber.EqualsIgnoreCase(Level_Value)) { //如果校验失败就取消保存,并弹出提示 e.Cancel = true; this.View.ShowErrMessage("辅助属性【" + auxName + "】不能选择B"); return; } } } }
备注: 本文详细说明了取辅助属性值的方法,可以用于判断值是否为空等其它校验。
二开插件 - 辅助属性值校验
客户需求: 当用户=A时 单据体明细行的每个物料的其中一个辅助属性不能存在B。例如;用户A时,单据明细行物料【等级】这个辅助属性不等于B...
点击下载文档
上一篇:删除基础资料时报"不存在名为UseOrgId_Id的属性"错误的解决方法下一篇:物料A的订货策略为POQ,订货间隔期为2月,物料A在12/30和2/1各有一笔需求,计划运算生成的计划订单为什么没有合并?
本文2024-09-23 03:42:57发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-160633.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章