电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

PLM二开·物料新增时,点击保存时想做判断,写表单插件BeforeSave,为什么没有生效呢

来源:金蝶云社区作者:金蝶2024-09-235

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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信