salesforce - System.DmlException : Update failed. 第一个错误 : INVALID_CROSS_REFERENCE_KEY,

标签 salesforce apex-code visualforce soql salesforce-service-cloud

我正在尝试更新 slaesforce 中的 ObjectPermissions 对象,以便配置文件将获得访问与其他配置文件类似的对象的权限。 我写了一段代码

我的代码段是

 PermissionSet set1 = [SELECT Id From PermissionSet 
                         WHERE profileId = : SourceProfileId LIMIT 1] ;
 PermissionSet set2 = [SELECT Id FROM PermissionSet 
                         WHERE profileId = : TargetProfileId LIMIT 1];
 List<ObjectPermissions> oo = [SELECT Id,
                                      SObjectType,
                                      ParentId,
                                      PermissionsCreate,
                                      PermissionsDelete,
                                      PermissionsEdit,
                                      PermissionsModifyAllRecords,
                                      PermissionsRead,
                                      PermissionsViewAllRecords 
                                 FROM ObjectPermissions 
                                     WHERE ParentId = : set1.id];


 List<ObjectPermissions> oo1 = [SELECT ParentId,
                                      Id,
                                      SObjectType,
                                      PermissionsCreate,
                                      PermissionsDelete,
                                      PermissionsEdit,
                                      PermissionsModifyAllRecords,
                                      PermissionsRead,
                                      PermissionsViewAllRecords 
                                 FROM ObjectPermissions 
                                     WHERE ParentId = : set2.Id];
 Map<String , ObjectPermissions> source_obj = new Map<String, ObjectPermissions>();
 Map<String , ObjectPermissions> target_obj = new Map<String, ObjectPermissions>();
 for (ObjectPermissions o : oo) {
     source_obj.put(o.SObjectType, o);
 }
 for (ObjectPermissions o : oo1) {
     target_obj.put(o.SObjectType, o);
 }
 ObjectPermissions target, source;
 for (String s : source_obj.keySet() ) {
     if (target_obj.containsKey(s)) {
         target = target_obj.get(s);
         source = source_obj.get(s);
         System.debug('Source is:' + source);
         System.debug('Target is : ' + target);
         target.PermissionsCreate = source.PermissionsCreate;
         target.PermissionsDelete = source.PermissionsDelete;
         target.PermissionsEdit = source.PermissionsEdit;
         target.PermissionsModifyAllRecords = source.PermissionsModifyAllRecords;
         target.PermissionsRead = source.PermissionsRead;
         target.PermissionsViewAllRecords = source.PermissionsViewAllRecords;
         update target;
     } else {
         target = new ObjectPermissions(SObjectType = s );
         source = source_obj.get(s);
         target.PermissionsCreate = source.PermissionsCreate;
         target.PermissionsDelete = source.PermissionsDelete;
         target.PermissionsEdit = source.PermissionsEdit;
         target.PermissionsModifyAllRecords = source.PermissionsModifyAllRecords;
         target.PermissionsRead = source.PermissionsRead;
         target.PermissionsViewAllRecords = source.PermissionsViewAllRecords;
         insert target;
     }
 }

当控件到达这一行时

更新目标; 它给出了错误

更新失败。第 0 行的第一个异常,id 为 110i0000007KNEvAAO;第一个错误:INVALID_CROSS_REFERENCE_KEY,您无法创建、编辑或删除此权限集父级的记录,因为它与配置文件关联。父 ID:0PSi00000009BE9:[]

我无法弄清楚为什么我会遇到此错误,请有人帮助解决此错误

最佳答案

您尝试更新的权限集已与 id=0PSi00000009BE9 ​​的某些个人资料相关联 转到

https://ap1.salesforce.com/0PSi00000009BE9并检查那里。

关于salesforce - System.DmlException : Update failed. 第一个错误 : INVALID_CROSS_REFERENCE_KEY,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17758355/

相关文章:

salesforce - 如何在潜在客户自定义公式字段中获取潜在客户所有者的姓名?

session ID 问题 : Different id for vf and developer console

javascript - 如何在 VisualForce 中创建并排记录比较

javascript - Salesforce - 如何在 apex :repeat to a javascript function? 中传递特定值

dynamic - 如何获取通用 sObject 中的字段列表?

java - 批量 API 错误 : Upsert on Standard Salesforce Object

salesforce - 我们如何获得当月的第一天和最后一天

dynamic - 如何内省(introspection) APEX 中变量的类?

salesforce - 为什么不能更改 Salesforce 受管软件包中的类关系?

salesforce - Visualforce 顶点 :inlineEditSuport on Lookup/Reference Field