执行计划自动调度原创
金蝶云社区-碎银几两
碎银几两
2人赞赏了该文章 52次浏览 未经作者许可,禁止转载编辑于2023年11月28日 08:02:09

执行计划自动调度时,使用的是administrator用户,没有组织信息(-1),有些场景下,我们需要根据用户组织和用户权限获取数据或者进行一些业务操作,这种情况下,不适合使用administrator用户进行。


建议使用以下代码克隆上下文对象Context,指定组织信息和用户id

注意,禁止直接修改上下文对应Context,因为这是一个全局变量

参考代码如下:

public void Run(Context ctx, Kingdee.BOS.Core.Schedule schedule)     
{

    var cloneContext = ctx.Clone() as Context;
    if(cloneContext == null )
    {
        Logger.Info("custError", "Clone context error");
        return;
    }

    cloneContext.CurrentOrganizationInfo = new OrganizationInfo()
    {
        //通过查询T_ORG_ORGANIZATIONS表可以得到对应的id
        ID = 100001
    };
    //通过查询 T_SEC_USER 可以得到对应的id
    cloneContext.UserId = 100007;
    //调用接口传递上下文的地方传入cloneContext
    BusinessDataServiceHelper.Save(cloneContext, dataObject);
  }


赞 2