执行计划,单据转换,下推,报没有下游单据新增权限
单据转换过程中默认会验证下游单据的新增权限,这里的验证是使用用户拥有权限的所有组织,跟下游单据的主业务组织值比较,如果没有任何包含,就会报没有下游单据的新增权限。
执行计划是通过管理员来调用的,所以不存在没有组织权限,那么唯一的可能就是下游单据主业务组织没有值。那为什么手工执行没有问题? 这是因为下游单据主业务组织主要来源为参数传入,字段映射携带,当前登录的组织,而调用的时候往往不会传入值,单据转换往往也不会配置主组织携带,所以最关键的决定因素就是是否有当前登录组织,而执行计划自动是没有当前登录组织的,故自动运行验证不通过。
解决此问题一般有三种方案:
通过参数控制,不验证下游单据新增权限:option.SetVariableValue("ValidatePermission", true);
传入主业务组织:
单据转换,字段映射携带主业务组织到下游单据
给当前上下文增加用户当前登录组织
需要引用:
需要引用:using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.BusinessEntity.Organizations;
//这里也可以写死,直接赋一个固定的组织 long orgId = 1; //也可以通过代码得到当前登录组织内码 // string OrgParamValue = UserParamterServiceHelper.Load(this.Context, "LoginOrgValue", this.Context.UserId); // if (Kingdee.BOS.Util.StringUtils.IsInt(OrgParamValue) == false)//当前登陆用户的有管理员角色的第一个组织Id // { // orgId = PermissionServiceHelper.GetUserAdminOrg(this.Context).First().Id; // } // else{ // orgId = Convert.ToInt64(OrgParamValue); // } //得到组织并给执行计划上下文赋值 Organization curOrg = OrganizationServiceHelper.ReadOrgInfoByOrgId(this.Context, orgId); List<long> functions = Array.ConvertAll(curOrg.OrgFunctions.Split(','), (a) => { return Convert.ToInt64(a); }).ToList(); this.Context.CurrentOrganizationInfo = new OrganizationInfo() //给当前上下文增加组织 { ID = curOrg.Id, Name = curOrg.Name, FunctionIds = functions, AcctOrgType = curOrg.AcctOrgType };
//按编码取到组织
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; }
执行计划,单据转换,下推,报没有下游单据新增权限
单据转换过程中默认会验证下游单据的新增权限,这里的验证是使用用户拥有权限的所有组织,跟下游单据的主业务组织值比较,如果...
点击下载文档
上一篇:星空开发综合查询下一篇:计划模拟:让客户交期承诺做到胸有成竹
本文2024-09-16 17:21:33发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-15201.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章