| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Автоматический расчет фактической суммы заказов при закрытии сделки
			 
			
			Необходимо, чтобы при закрытии сделки в поле "Фактический доход" автоматически записывалась сумма всех заказов, привязанных к этой сделке. 
		
		
		
		
		
		
		
	Как это сделать?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Автоматический расчет фактической суммы заказов при закрытии сделки
			 
			
			Необходимо при закрытии сделки автоматически рассчитывать фактическую сумму сделки по всем заказам, привязанным к этой сделке. 
		
		
		
		
		
		
		
	Как это правильно сделать?  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Чайный пьяница 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Оптимальный вариант - Plugin, который будет обрабатывать Win сообщение.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо. Но каким образом надо писать плагин для событий Win и Lose? Я использую параметр "Target", но плагин не срабатывает...
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Чайный пьяница 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Покажите, пожалуйста, каким образом вы регистрируете плагин и также покажите код, который вы написали.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Исходя из статьи 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);
            }
        }
    }Это возможно сделать? Плагин зарегестирован на событиях Won и Lose на PreStage.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Чайный пьяница 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от 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);
            }
        }
    }Это возможно сделать? Плагин зарегестирован на событиях Won и Lose на PreStage. 
				__________________ 
		
		
		
		
	Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Omalinka (1). | |
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ясно  
		
		
		
		
		
		
		
	![]() Спасибо большое за ответы.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В CRM 2011 On-line, c которым я работаю, форма OpportunityClose полностью закрыта для редкатирования, то есть я не могу ни код на нее добавить, ни скрыть -добавить поля.. 
		
		
		
		
		
		
		
	В предыдущих версиях также? Или может у меня не хватает каких-нибудь прав...?  
		 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Чайный пьяница 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В CRM Online у вас не получится сделать таких трюков. Единственное что могу порекомендовать - это написать плагин на закрытие, который принудительно установит сумму в требуемую...
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit  | 
| 
	
 | 
| 
	
	 | 
	
		
  |