salesforce - System.TypeException:__Share 上不允许 DML 操作 INSERT
问题描述
我在我的 salesforce 环境中创建了共享对象。从设置-> 安全控制-> 共享设置-> 我让我的自定义对象访问“私人”。因此,假设我的对象名称是 EVT_Client__c 并且我正在尝试从触发器(AfterInsert)将数据插入 EVT_Client__Share 我无法做到这一点。我收到如下错误。
一旦数据被插入到 EVT_Client__c 对象中,我们的触发器就会尝试将数据插入到 EVT_Client__share 对象中,但是我们得到了错误。通过对对象具有读取/创建/编辑/删除访问权限的 UI 将数据插入 EVT_Client__c 对象的配置文件用户。
System.TypeException:EVT_Client__Share 上不允许 DML 操作 INSERT
我在触发器中的代码如下所示,其中出现错误。
public with sharing class EVT_Client_TriggerHandler {
private void ShareClientToThirdPartyJobGroup(List<EVT_Client__c> lstClients){
List<EVT_Client__Share> lstSharesForThirdPartyGroup = new List<EVT_Client__Share>();
List<Group> lstThirdPartyGroups = [Select Id, RelatedId from Group where Name = 'Third Party'];
for(EVT_Client__c client: lstClients){
for(Group roleGroup : lstThirdPartyGroups ){
EVT_Client___Share objShareForThirdPartyGroup = new EVT_Client__Share(ParentId = client.Id,
UserOrGroupId = roleGroup.Id,
AccessLevel = 'Edit',
RowCause = Schema.EVT_Client__Share.RowCause.User_Client__Access__c);
lstSharesForThirdPartyGroup.add(objShareForThirdPartyGroup);
}
}
insert lstSharesForThirdPartyGroup;
}
}
解决方案
你确定这不是任何主从关系中的“细节”吗?OWD 然后会说“由父母控制”而不是“私人”。您可以切换到经典视图,转到页面布局并验证[Sharing]
可以添加按钮,显示 OK,此用户可以从 UI 手动共享此记录吗?
发布您的代码示例?我怀疑您需要先定义Apex 共享原因。如果您曾经玩过 Account/Contact/Opportunity/Case 角色,这有点像角色。
设置完成后,您应该可以执行以下代码示例:https ://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_bulk_sharing_creating_with_apex.htm (他们使用“手动”作为共享原因,但您可能对自定义共享原因有更多的运气。
我很快创建了你的对象,这对我来说就像一个魅力:
trigger Stack57201752 on EVT_Client__c (after insert) {
List<Group> groups = [SELECT Id FROM Group WHERE Name = 'Third Party'];
List<EVT_Client__Share> shares = new List<EVT_Client__Share>();
for(EVT_Client__c c : trigger.new){
for(Group g : groups){
shares.add(new EVT_Client__Share(
ParentId = c.Id,
UserOrGroupId = g.Id,
AccessLevel = 'Edit',
RowCause = 'Manual'
));
}
}
insert shares;
}
当我单击[Sharing]
记录上的按钮时,它看起来不错:
所以......愚蠢的提问时间:你点击了这个复选框吗?
推荐阅读
- python - 引用复合索引作为另一个表的外键
- android - Wrong type argument for PermissionCheck around GoogleMap OnMyLocationChangeListener
- ruby - Nil 类 Ruby 的未定义方法 .split
- python - 多目标的模型检测,但只尝试写一个
- xamarin.forms - 检测何时因关闭权限对话框而调用 OnResume
- testing - html-testrail 没有在 testcafe 中捕获失败的测试
- php - 在每个目录的 .htacess 中使用 SetHandler 设置特定的 PHP 版本不起作用
- ansible - Ansible如何在循环中忽略未定义的项目
- leaflet - 带有传单地图的 R Shiny 应用程序未以选定点为中心
- c# - 为什么即使有十进制数,第三列也为空?