尝试通过apex控制器类插入新用户时,我面临许可证限制超出异常

时间:2012-06-05 11:14:57

标签: salesforce apex-code visualforce

我创建了一个用于创建新用户的visualforce页面,并且通过控制器类我尝试插入新创建的用户。

我正在开发一个开发人员组织,并且有三个许可证可供使用 - Salesforce Platform - 用户许可证。 我在我的组织中创建了4个拥有此许可证的用户,其中只有一个是活动的。

当我尝试使用此许可证插入新用户时,我仍然面临超出许可证限制的例外。

有人可以为这个问题提出解决方案吗?

我使用的代码是 -

    newUser = new User();

    newUser.email = ApexPages.currentPage().getParameters().get('email');
    String[] name = ApexPages.currentPage().getParameters().get('name').split(' ',2);
    newUser.firstName = name[0];
    newUser.lastName = name[1];
    newUser.userName = newUser.email;

    UserRole usrRole = [select id, name from UserRole where name = 'Customer'];
    Profile prof = [select id, name from Profile where name = 'Customer Portal'];

    newUser.UserRoleId = usrRole.id;
    newUser.ProfileId = prof.id;
    newUser.isActive = true;
    try
    {            
        insert newUser;
        alertMsg = 'Successfully Created New User';                
    }
    catch(System.DMLException e)
    {                 
        alertMsg = e.getMessage();         
    }    

我公司信息的屏幕截图是 -

Company Information for User Licenses

2 个答案:

答案 0 :(得分:0)

选项1: 在开发人员控制台中,运行此匿名顶点代码段以获取活动和非活动用户的计数:     system.debug([select isactive,count(Id)from User group by isactive]);

上述SQL的结果应该是3个非活动用户和1个活动用户(根据您的问题陈述)。

选项2: 确保您的控制器类不会批量插入超出开放许可证数的用户。

选项3: 确保您的代码没有尝试使用与已用完的许可证类型相关联的配置文件来创建用户。

答案 1 :(得分:0)

除了设置配置文件外,还需要设置UserType(也就是许可证类型),否则默认为Salesforce许可证,您没有备件,需要添加 像newUser.userType = 'Platform'之类的东西(您需要使用describeSObject或模式查看器工具来查找要使用的确切选项列表值)