Регистрация  |  Вход

Sharing rule

Есть кастомный объект. У него лукап на Enquiry(Case).
Задача: Нужно после создания кастомного объекта создавать шаринг рул, read only для кейс овнера. Написал триггер который на after insert запускает етот код

public without sharing class CustomObjectServices {
public static void CreateSharingRule(Map<Id, Custom_object__c> customObjectMap){
List<Custom_object__share> sharingRuleList = new List<Custom_object__share>();

for(Custom_object__c quality : customObjectMap.values()){
Quality_Checks__share sharingRule = new Quality_Checks__share();

sharingRule.AccessLevel = 'Read';
sharingRule.UserOrGroupId = quality.Enquiry__r.OwnerId;
sharingRule.ParentId = quality.Id;
sharingRule.RowCause = Schema.Custom_object__Share.RowCause.Manual;

sharingRuleList.add(sharingRule);
}

insert sharingRuleList;
}
}


Но почему то quality.Enquiry__r.OwnerId = null.
попробовал поменять quality.Enquiry__r.OwnerId на sharingRule.UserOrGroupId = UserInfo.getUserId(); но падает ошибка INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, insufficient access rights on cross-reference id: [] на инсерте.

Есть кастомный объект. У него лукап на Enquiry(Case).
Задача: Нужно после создания кастомного объекта создавать шаринг рул, read only для кейс овнера. Написал триггер который на after insert запускает етот код
[code]
public without sharing class CustomObjectServices {
	public static void CreateSharingRule(Map<Id, Custom_object__c> customObjectMap){
		List<Custom_object__share> sharingRuleList = new List<Custom_object__share>();

		for(Custom_object__c quality : customObjectMap.values()){
			Quality_Checks__share sharingRule = new Quality_Checks__share();

			sharingRule.AccessLevel = 'Read';
			sharingRule.UserOrGroupId = quality.Enquiry__r.OwnerId;
			sharingRule.ParentId = quality.Id;
			sharingRule.RowCause = Schema.Custom_object__Share.RowCause.Manual;

			sharingRuleList.add(sharingRule);
		}

		insert sharingRuleList;
	}
}
[/code]
Но почему то quality.Enquiry__r.OwnerId = null.
попробовал поменять quality.Enquiry__r.OwnerId на sharingRule.UserOrGroupId = UserInfo.getUserId(); но падает ошибка INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, insufficient access rights on cross-reference id: [] на инсерте.

Овнер кейса и записи в кастомном объекте один и тот же человек ?

Овнер кейса и записи в кастомном объекте один и тот же человек ?

Только что узнал что нельзя создавать шаринг рул на овнера кейса. Походу проблема решена.
а еще такое. В тригерре нету рилейшенов? Типа quality.Enquiry__r.OwnerId мне не увидеть? Нужно делать СЕЛЕКТ?

Только что узнал что нельзя создавать шаринг рул на овнера кейса. Походу проблема решена.
а еще такое. В тригерре нету рилейшенов? Типа quality.Enquiry__r.OwnerId мне не увидеть? Нужно делать СЕЛЕКТ?

remember
В тригерре нету рилейшенов? Типа quality.Enquiry__r.OwnerId мне не увидеть? Нужно делать СЕЛЕКТ?

Да. В триггер попадают только поля первого порядка. Все что второго и дальше надо делать новый запрос.

[quote="remember"]В тригерре нету рилейшенов? Типа quality.Enquiry__r.OwnerId мне не увидеть? Нужно делать СЕЛЕКТ?[/quote]
Да. В триггер попадают только поля первого порядка. Все что второго и дальше надо делать новый запрос.