执行计划,插件,更新基础资料,报错,读取数据不存在原创
金蝶云社区-田野迷鸟
田野迷鸟
3人赞赏了该文章 697次浏览 未经作者许可,禁止转载编辑于2021年07月07日 16:31:48

问题场景:

    1、插件通过建模createview、load、数据填充、调用保存操作的方式,在后台进行基础资料/单据的保存;

    2、修改已存在的记录,参数会传入

                        openParam.PkValue = PkValue;

                        openParam.Status = OperationStatus.EDIT;

    3、前台建立动态表单,添加菜单进行调用,可正常生成基础资料/单据;

    4、在执行计划插件里,调用这个插件的代码,经常会出现失败提示:

            您要读取的数据在系统中不存在,可能已经被删除![ID=-1,Type=Organization]

    5、跟踪代码无法重现报错现象,点击执行计划里的“测试”按钮也不会重现。


问题原因:

        手动执行的话,取的是当前登录用户的上下文的组织信息,自动执行的话取不到组织信息的,需要代码指定一下。


解决方法:

        在执行计划插件里指定上下文的组织


参考代码:

        public void Run(Context ctx, Schedule schedule)
        {
            //如果没有组织信息,就固定给一个100组织
            ctx.CurrentOrganizationInfo = GetOrganizationInfo(ctx, "100");
            Kingdee.BOS.KDThread.MainWorker.QuequeTask(ctx, () =>
            {
                string Message = string.Empty;
                Aomi.K3.BD.ServicePlugIn.Common commoin = new Aomi.K3.BD.ServicePlugIn.Common();
                commoin.AutoSynchroAomiData(ctx);
            }, null);
        }
//按编码取到组织
        OrganizationInfo GetOrganizationInfo(Context ctx, string mainNumber)
        {
            FormMetadata orgMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "ORG_Organizations");
            DynamicObject orgDataEntity = BusinessDataServiceHelper.LoadFromCache(ctx, orgMetadata.BusinessInfo.GetDynamicObjectType(), new QueryBuilderParemeter()
            {
                FormId = "ORG_Organizations",
                FilterClauseWihtKey = string.Format("FNumber = '{0}' ", mainNumber),
            }).FirstOrDefault();
            var organizationInfo = new OrganizationInfo()
            {
                FunctionIds = Convert.ToString(orgDataEntity["OrgFunctions"]).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Where(p => !string.IsNullOrWhiteSpace(p)).Select(o => Convert.ToInt64(o)).ToList(),
                ID = Convert.ToInt64(orgDataEntity["Id"]),
                Name = Convert.ToString(orgDataEntity["Name"]),
            };
            return organizationInfo;
        }


参考来源:

来源:金蝶云社区|星空

标题:执行计划调用下推报没有下游单据新增权限

网址:https://vip.kingdee.com/article/163011927923255040



赞 3