AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
CRM
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2020, 17:20   #1  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
377 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Angry Имперсонализация в кастомных шагах WF
CRM 2016
Пишу кастомный шаг WF (точнее для Action), который кой чего запрашивает из CRM.
Фишка в том, что у пользователя нет доступа к той сущности, к которой должен обращаться шаг, поэтому я пытаюсь выполнить запрос от имени системного пользователя, т.е. получаю экземпляр Organization Service вот так:
Код:
var factory = context.GetExtension<IOrganizationServiceFactory>();
var service = factory.CreateOrganizationService(null);
И ожидаю, что код будет выполняться от пользователя SYSTEM (ну собственно как об этом написано в описании к методу CreateOrganizationService:
Цитата:
// Parameters:
// userId:
// Type: Nullable<Guid>. Specifies the system user that calls to the service are
// made for.
// When called in a plug-in, a null value indicates the SYSTEM user and a Guid.Empty
// value indicates the same user as Microsoft.Xrm.Sdk.IPluginExecutionContext. Microsoft.Xrm.Sdk.IExecutionContext.UserId.
// Any other value indicates a specific system user.
// When called in a custom workflow activity, all service calls are made in the
// IWorkflowExecutionContext.Microsoft.Xrm.Sdk.IExecutionContext.UserId context.
Но по факту получаю ошибку о недоступности для пользователя сущности, т.е. очевидно, что сервис выполняется от пользователя, а не от системного пользователя.
Пробовал использовать значения переменных UserId и InitiatingUserId из контекста, но на выходе получаю одну и ту же ошибку, из которой понятно, что при любом раскладе сервис работает от одного и того же пользователя.

Я полез в библиотеку Microsoft.Crm.Workflow.dll и нашел там реализацию метода CreateOrganizationService:
Код:
IOrganizationService IOrganizationServiceFactory.CreateOrganizationService(Guid? userId)
{
    return this.CreateSdkService(false);
}

public override IOrganizationService CreateSdkService(bool asAdminUser)
{
    return this._sdkService.CreateInstance(asAdminUser, this.ProxyTypesAssembly);
}
Тоесть получается, что пареданный в метод CreateOrganizationService пользователь никакого значения не имеет и ни на что не влияет

Собственно вопрос... Это я дурак или лыжи не едут - это косяк реализации workflow или я что-то не так делаю?
__________________
Моё: Cайт - Код - Dynamics365 Tools
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Настройка WF - ошибка настройки сущности ZooY Dynamics CRM: Администрирование 1 13.08.2018 11:26
Справочник для писем WF andyandy Dynamics CRM: Функционал 4 23.11.2016 15:20
Сервис трассировки в WF ничего не пишет ZooY Dynamics CRM: Разработка 1 19.10.2016 16:18
Создание связной записи через WF andyandy Dynamics CRM: Функционал 10 09.04.2014 12:00
Как получить значения кастомных сущностей zkk Dynamics CRM: Разработка 2 16.02.2010 15:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:58.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.