PLM二开·物料新增时,点击保存时想做判断,写表单插件BeforeSave,为什么没有生效呢
【应用场景】
在保存研发物料之前,进行业务干预,根据需要实现二开业务。
【注意事项】
不用扩展单据再绑定插件,只需要创建扩展类,用于实现标准接口,在扩展类进行约定限制校验哪个业务类型。更多请参考: 二次开发扩展程序开发之插件模式 (kingdee.com)
【案例演示】
物料保存时校验自定义单据体必填
【实现步骤】
<1>编写扩展类,实现IDirectSaveOperation里面定义接口,干预BeforeSave(),代码如下。
namespace ISV.Material.Common.BusinessEntity { /// <summary> /// 物料保存操作业务 /// </summary> [OperationAttribute(Description = "通用对象保存操作", CategoryId1 = (long)StandardCategoryType.Material)] public class MaterialDirectSave : IDirectSaveOperation { /// <summary> /// 保存后处理 /// </summary> /// <param name="ctx">上下文</param> /// <param name="obj">对象</param> /// <param name="e">事件参数</param> public void AfterSave(PLMContext ctx, DynamicObject obj, OperationEventArgs e, bool isMustValidate = true) { } /// <summary> /// 保存前处理 /// </summary> /// <param name="ctx">上下文</param> /// <param name="obj">对象</param> /// <param name="e">事件参数</param> public void BeforeSave(PLMContext ctx, DynamicObject obj, OperationEventArgs e, bool isMustValidate = true) { Kingdee.K3.PLM.Common.Core.Log.LogHelper.WriteLog(ctx.BOSContext, "WriteLog", "BeforeSave"); if (!obj.Contains("RelationEntry")) return; var eneity = (DynamicObjectCollection)obj["RelationEntry"]; if (eneity.Count == 0) { e.CancelMessages.Add("单据体\"关联分录\"是必录项"); e.Cancel = true; return; } } /// <summary> /// 验证处理 /// </summary> /// <param name="ctx">上下文</param> /// <param name="obj">对象</param> /// <param name="e">事件参数</param> public bool Validate(PLMContext ctx, DynamicObject obj, OperationEventArgs e) { return true; } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
【功能验证】
<1>登录业务站点,在物料详情点击保存提示如下:
【参考资料】
【汇总】星空PLM二开指南(持续更新)https://vip.kingdee.com/article/329914697153905408?productLineId=1&isKnowledge=2
【合辑】金蝶云.星空 PLM知识合辑(持续更新) https://vip.kingdee.com/article/329662872047302912?productLineId=1&isKnowledge=2
二次开发扩展程序开发之插件模式 https://vip.kingdee.com/article/83591896433330944?productLineId=1
PLM云 -- 基于BOS平台的二次开发扩展 https://vip.kingdee.com/article/10875?productLineId=1
PLM云 -- 基于配置系统的二次开发扩展(对象属性扩展)https://vip.kingdee.com/article/10887?productLineId=1
PLM云 -- 基于标准业务系统的二次开发扩展 https://vip.kingdee.com/article/10901?productLineId=1
金蝶云星空BOS二次开发指南 https://vip.kingdee.com/article/94751030918525696?productLineId=1&isKnowledge=2
金蝶云星空数据字典V7.6 https://open.kingdee.com/K3Cloud/WenKu/DocumentView.aspx?docId=102613
PLM二开·物料新增时,点击保存时想做判断,写表单插件BeforeSave,为什么没有生效呢
本文2024-09-23 03:03:15发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156367.html