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>
/// 验证处理
PLM二开·物料新增时,点击保存时想做判断,写表单插件BeforeSave,为什么没有生效呢
【应用场景】在保存研发物料之前,进行业务干预,根据需要实现二开业务。【注意事项】 不用扩展单据再绑定插件,只需要创建扩展类,用于实...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



