Как поделиться записью в MS Dynamics CRM, используя рабочий процесс
-
10-07-2019 - |
Вопрос
Я хотел бы сделать следующее:
когда специалист по продажам назначает пользовательский объект (назовем его «Первичная экспертиза») Возможности в MS CRM 4.0, система делится этой возможностью с пользователем, который определен как Владелец связанной «Первичной экспертизы» запись.
Я хотел бы сделать это автоматически через рабочий процесс, но не могу найти шаг рабочего процесса, который бы это сделал. Да, и я читал на некоторых форумах, что на самом деле это пока невозможно, только через сборку .NET.
Опыт, кто-нибудь?
Решение
Правильно, это возможно только через сборку .NET. Однако вы можете (если вы используете CRM 4) изменить рабочий процесс на владельца операции и использовать опцию «Поделиться с предыдущим владельцем», чтобы разрешить старому владельцу доступ к вашей пользовательской сущности?
Другие советы
Попробуйте это:
Это возможно только при активизации пользовательской активности рабочего процесса Внутри настраиваемого рабочего процесса вы можете вызвать GrantAccessRequest и GrantAccessResponse , настроив объект PrincipalAccess .
Пожалуйста, ознакомьтесь с этим " общим объектом " раздел для деталей.
Если вы решите использовать собственный плагин, ваш код может выглядеть следующим образом:
var rights = AccessRights.ReadAccess | AccessRights.WriteAccess;
var principalAccess = new PrincipalAccess
{
// Gives the principal read write access
AccessMask = rights,
// Set the PrincipalAccess Object's Properties
Principal = sharingTarget.Key
};
// Create the Request Object
var grantAcessRequest = new GrantAccessRequest();
// Set the Request Object's properties
grantAcessRequest.PrincipalAccess = principalAccess;
// Set the Target. In my case it is account record
var entityReference = new EntityReference(localContext.PluginExecutionContext.PrimaryEntityName,
localContext.PluginExecutionContext.PrimaryEntityId);
//throw new InvalidPluginExecutionException("EntityReference");
grantAcessRequest.Target = entityReference;
// Execute the Request
localContext.OrganizationService.Execute(grantAcessRequest);