Сообщение от
Omalinka
Исходя из статьи
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.