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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.05.2011, 17:28   #1  
Omalinka is offline
Omalinka
Участник
 
16 / 10 (1) +
Регистрация: 25.02.2011
Адрес: Russia
Автоматический расчет фактической суммы заказов при закрытии сделки
Необходимо, чтобы при закрытии сделки в поле "Фактический доход" автоматически записывалась сумма всех заказов, привязанных к этой сделке.
Как это сделать?
Старый 16.05.2011, 17:32   #2  
Omalinka is offline
Omalinka
Участник
 
16 / 10 (1) +
Регистрация: 25.02.2011
Адрес: Russia
Автоматический расчет фактической суммы заказов при закрытии сделки
Необходимо при закрытии сделки автоматически рассчитывать фактическую сумму сделки по всем заказам, привязанным к этой сделке.
Как это правильно сделать?
Старый 16.05.2011, 18:11   #3  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Оптимальный вариант - Plugin, который будет обрабатывать Win сообщение.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 16.05.2011, 18:17   #4  
Omalinka is offline
Omalinka
Участник
 
16 / 10 (1) +
Регистрация: 25.02.2011
Адрес: Russia
Спасибо. Но каким образом надо писать плагин для событий Win и Lose? Я использую параметр "Target", но плагин не срабатывает...
Старый 16.05.2011, 18:45   #5  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Omalinka Посмотреть сообщение
Спасибо. Но каким образом надо писать плагин для событий Win и Lose? Я использую параметр "Target", но плагин не срабатывает...
Покажите, пожалуйста, каким образом вы регистрируете плагин и также покажите код, который вы написали.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 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.
Старый 16.05.2011, 19:47   #7  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от 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.
Если хотите автоматический подсчёт такого рода, то без ансапорта тут не обойтись. Поле можно заполнить автоматически дописав JavaScript в форме закрытия сделки. Другого пути, к сожалению, нет.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Omalinka (1).
Старый 18.05.2011, 11:28   #8  
Omalinka is offline
Omalinka
Участник
 
16 / 10 (1) +
Регистрация: 25.02.2011
Адрес: Russia
Ясно
Спасибо большое за ответы.
Старый 18.05.2011, 13:08   #9  
Omalinka is offline
Omalinka
Участник
 
16 / 10 (1) +
Регистрация: 25.02.2011
Адрес: Russia
В CRM 2011 On-line, c которым я работаю, форма OpportunityClose полностью закрыта для редкатирования, то есть я не могу ни код на нее добавить, ни скрыть -добавить поля..
В предыдущих версиях также? Или может у меня не хватает каких-нибудь прав...?
Старый 18.05.2011, 13:44   #10  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Omalinka Посмотреть сообщение
В CRM 2011 On-line, c которым я работаю, форма OpportunityClose полностью закрыта для редкатирования, то есть я не могу ни код на нее добавить, ни скрыть -добавить поля..
В предыдущих версиях также? Или может у меня не хватает каких-нибудь прав...?
В CRM Online у вас не получится сделать таких трюков. Единственное что могу порекомендовать - это написать плагин на закрытие, который принудительно установит сумму в требуемую...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при закрытии возможной сделки с длинным названием Why not? Dynamics CRM: Администрирование 12 02.06.2011 19:58
Расчет суммы kosten Dynamics CRM: Разработка 5 12.11.2010 16:47
Скрытие суммы сделки от пользователей другого подразделения, и показ суммы сделки для пользователей одного и того же подразделения с владельцем сделки Dicora Dynamics CRM: Разработка 10 13.09.2010 21:05
Конкурент при закрытии ВС Elka Dynamics CRM: Разработка 1 11.02.2010 08:44
Как достать фактический доход от сделки? Dekan Dynamics CRM: Функционал 4 21.10.2009 14:47

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:14.