Salesforce使用apex程序停用过去3个月未登录的Salesforce用户

Salesforce使用apex程序停用过去3个月未登录的Salesforce用户,salesforce,salesforce-lightning,salesforce-service-cloud,salesforce-communities,Salesforce,Salesforce Lightning,Salesforce Service Cloud,Salesforce Communities,我已经编写了用于停用过去3个月未登录的用户的代码,但当我运行该程序时,它会给我一个异常,就像由于记录的所有权,您无法停用该用户,因此它不会检查其他用户 public class ExampleUser { public static void deactivate() { List<User> usersToUpdate = new List<User>(); for(User u: [SELECT Id,

我已经编写了用于停用过去3个月未登录的用户的代码,但当我运行该程序时,它会给我一个异常,就像由于记录的所有权,您无法停用该用户,因此它不会检查其他用户

public class ExampleUser 
{   

    public static void deactivate()
    {

        List<User> usersToUpdate = new List<User>();


        for(User u: [SELECT Id, IsActive FROM User where IsActive= true and LastLoginDate <= :DATE.TODAY()-90])
        {
            u.IsActive = false;
            /*try {
                update u;
            }
            catch(Exception e){
                System.debug(e);
            }*/
            usersToUpdate.add(u);
        }  
        if (usersToUpdate.size()>0)
        {   
            
            update usersToUpdate; 
        } 
    }
}
公共类示例用户
{   
公共静态无效停用()
{
List usersToUpdate=新列表();
对于(用户u:[从用户中选择Id,IsActive=true和LastLoginDate 0)
{   
更新usersToUpdate;
} 
}
}
如果我运行注释过的代码(尝试分别停用每个用户),它会给出超过100个SOQL查询的异常。 请任何人帮助我解决此问题

使用
Database.update(usersToUpdate,false)
避免在一个或多个记录失败时回滚整个事务

这并不能真正解决您的问题;它只是意味着您确实停用了可以停用的用户。如果您想查看由于任何原因无法停用的用户,则需要开发不同的解决方案

您不需要检查列表大小。对空列表执行DML没有任何作用