Плагин MS Dynamics CRM не запускается с сообщением «победа» в случае успешного закрытия котировки - PullRequest
0 голосов
/ 29 августа 2018

Среда - Dynamics 365, текущая версия.

У нас есть плагин, который запускается при получении возможности. Все хорошо с этим. Но есть другой способ закрыть выигранную возможность, и это связано с цитатой.

Если вы находитесь в соответствующей цитате и делаете "создать заказ", у вас есть шанс закрыть возможность также, как выиграл. Но в этом случае плагин не запускает сообщение «win».

Я предполагаю, что событие находится слишком глубоко в цепочке, и оно не инициируется. Или что это не победное событие, а обновление или что-то еще. вот так.

Кто-нибудь сталкивался с этим делом? Есть мнения?

Обновление для вопроса Dot_NET Pro:

Существуют условия if, которые выходят из кода. Первый из них:

    public void Execute(IServiceProvider serviceProvider)
    {
        IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
        IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
        IOrganizationService organizationService = serviceFactory.CreateOrganizationService(null);

        if (context.MessageName.ToLower() != "win")
        {
            return;
        }

        var currentOpportunity = RetrieveCurrentOpportunity(serviceFactory, context, organizationService);
        if (currentOpportunity == null)
        {
            return;
        }

// More code comes here. 

Второй оператор if входит в метод с таким кодом:

    private Entity RetrieveCurrentOpportunity(IOrganizationServiceFactory serviceFactory, IPluginExecutionContext context, IOrganizationService organizationService)
    {
        Guid opportunityId = Guid.Empty;

        if (context.InputParameters.Contains("OpportunityClose") && context.InputParameters["OpportunityClose"] is Entity)
        { // ... more code here.

// else-case does nothing. 

1 Ответ

0 голосов
/ 29 августа 2018

Закрытие возможности путем создания заказа в пользовательском интерфейсе не вызывает сообщения о выигрыше при возможности объекта. Очевидно, прикладной уровень не использует WinOpportunityRequest внутри. Он просто выполняет обновление связанной возможности (атрибуты actualvalue, Actualclosedate и Closprobability).

Зарегистрируйте свой плагин в сообщении update объекта "Возможность".

(Когда цитата потеряна, прикладной уровень фактически использует LoseOpportunityRequest внутри.)

...