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

二开案例.服务插件.创建单据时不记录修改人

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

二开案例.服务插件.创建单据时不记录修改人

【应用场景】

单据在新增保存时,系统默认会将最后修改人和最后修改日期字段赋值为等于单据的当前创建人和创建日期字段的值。

某些特殊场景下,可能希望在新增保存单据时,不要记录修改人信息。受限于平台设计,目前想实现不记录修改人信息还挺麻烦的。


【案例演示】

采购订单,新增保存时,不记录修改人和修改日期。


【实现步骤】

<1>编写服务插件,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Core.Metadata.FieldElement;

using Kingdee.BOS.JSON;

using Kingdee.BOS.Util;

using System.Collections.Generic;

using System.ComponentModel;

//using System.Linq;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【服务插件】创建单据时不记录修改人

    /// </summary>

    [Description("【服务插件】创建单据时不记录修改人"), HotUpdate]

    public class ResetModifyerAfterSaveOperationServicePlugIn : AbstractOperationServicePlugIn

    {

        /// <summary>

        /// 修改人字段标识

        /// </summary>

        const string ModifierIdFieldKey = "FModifierId";


        /// <summary>

        /// 修改时间字段标识

        /// </summary>

        const string ModifyDateFieldKey = "FModifyDate";


        public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)

        {

            base.OnPrepareOperationServiceOption(e);

            if (!string.IsNullOrWhiteSpace(this.FormOperation.LoadKeys) && this.FormOperation.LoadKeys != "null")

            {

                // 设置操作完后刷新修改人字段

                var loadKeys = KDObjectConverter.DeserializeObject<List<string>>(this.FormOperation.LoadKeys);

                if (loadKeys == null)

                {

                    loadKeys = new List<string>();

                }

                if (!loadKeys.Contains(ModifierIdFieldKey))

                {

                    loadKeys.Add(ModifierIdFieldKey);

                }

                if (!loadKeys.Contains(ModifyDateFieldKey))

                {

                    loadKeys.Add(ModifyDateFieldKey);

                }

                this.FormOperation.LoadKeys = KDObjectConverter.SerializeObject(loadKeys);

            }

        }


        public override void EndOperationTransaction(EndOperationTransactionArgs e)

        {

            base.EndOperationTransaction(e);

            if (this.FormOperation.OperationId == 8)

            {

                var needSaveIds = new List<object>();

                foreach (var dataEntity in e.DataEntitys)

                {

                    if (!dataEntity.DataEntityState.FromDatabase)

                    {

                        // 清除单据在内存数据包中的修改人数据

                        dataEntity["ModifierId_Id"] = null;

                        dataEntity["ModifierId"] = null;

                        dataEntity["ModifyDate"] = null;

                        needSaveIds.Add(data

二开案例.服务插件.创建单据时不记录修改人

【应用场景】单据在新增保存时,系统默认会将最后修改人和最后修改日期字段赋值为等于单据的当前创建人和创建日期字段的值。某些特殊场景下...
点击下载文档文档为doc格式

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

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