Показать сообщение отдельно
Старый 16.05.2011, 19:03   #6  
Omalinka is offline
Omalinka
Участник
 
16 / 10 (1) +
Регистрация: 25.02.2011
Адрес: Russia
Исходя из статьи http://dmcrm.blogspot.com/2008/08/st...on-method.html переписала код с использованием OpportunityClose.
Код:
 public class OpportunityFact : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            if (tracer == null)
                throw new InvalidPluginExecutionException("Failed to retrieve the tracing service.");

            try
            {
                Microsoft.Xrm.Sdk.IPluginExecutionContext context = (Microsoft.Xrm.Sdk.IPluginExecutionContext)
                    serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext));

                if (context.InputParameters.Contains("OpportunityClose") &&
                    context.InputParameters["OpportunityClose"] is Entity)
                {
                    IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                    IOrganizationService service = factory.CreateOrganizationService(context.UserId);

                    Entity entity = (Entity)context.InputParameters["OpportunityClose"];
            
                    if (entity.LogicalName == "opportunityclose")
                    {
                        
                        throw new Exception("win!");                        
                    }
                }
            }
            catch (Exception e)
            {
                tracer.Trace("Received exception: {0}", e);
                throw new InvalidPluginExecutionException(e.Message);
            }
        }
    }
Плагин заработал, но, как видно из запуска исключения (throw new Exception("win!"); ), он срабатывает уже после того, как закрыто окно, в котором вводится фактическая сумма сделки. А мне бы хотелось, чтобы при открытии формы OpportunityClose уже была заполнена правильная сумма в поле "Прибыль".

Это возможно сделать?

Плагин зарегестирован на событиях Won и Lose на PreStage.