MS-CRM 2013 Запретить пользователю переходить на следующий этап

Я работаю над потоком бизнес-процессов. Я создал поток Контакт--Возможность--Цитата--Заказ--Счет в соответствии с требованиями. Сущность Возможность имеет атрибут Сумма бюджета. Если сумма бюджета меньше 300 000, пользователь не должен переходить на следующий этап. Мой вопрос заключается в том, как запретить пользователю переходить на следующий этап. Я пишу плагин для этого.


person Nachiket    schedule 09.07.2014    source источник
comment
Я считаю, что вы также можете сделать это, используя бизнес-правила. Создайте поле «да/нет», которое по умолчанию имеет значение «нет» и должно быть «да», чтобы перейти к следующему этапу. Затем создайте бизнес-правила, которые задают значение «да», если сумма бюджета больше 300 тыс., и «нет», если сумма бюджета меньше 300 тыс.   -  person Zach Mast    schedule 06.11.2014


Ответы (2)


Вам следует

  1. Зарегистрируйте плагин в Pre-Update Operation of Opportunity.
  2. Проверьте поле stageid:

    if (!context.InputParameters.Contains("Target") && 
        context.InputParameters["Target"] is Entity)
    {
       Entity target = (Entity)context.InputParameters["Target"];
       if (target .Attributes.Contains("stageid") && 
           target ["stageid"] != null
       {
           // check stage value match your next stage
    
           // check Budget Amount
    
           // if Budget Amount < 300000 throw an exception
       }
    }
    
  3. Проверить значение следующего этапа, есть 2 способа проверить этап

    -Получите идентификатор следующего этапа по вашему сценическому имени и сравните, совпадают ли они, затем перейдите к следующему шагу, иначе вернитесь. Или,

    -Создайте новое поле с именем stagename для хранения имени этапа, и рабочий процесс CRM, запускаемый при изменении поля stageid, чтобы обновить это поле именем этапа процесса. Подробнее здесь . Затем у вас есть сценическое имя, доступное для проверки без необходимости его извлечения. Сравните, соответствует ли значение в вашем новом поле имени следующего этапа, затем перейдите к следующему шагу, иначе вернитесь.

  4. Получите и проверьте значение суммы бюджета. Или, если вы не хотите извлекать, вы можете использовать предварительное изображение и/или target['budgetamount'] для получения значения.

  5. Если сумма бюджета ‹ 300000, то

    throw new InvalidPluginExecutionException("Budget Amount must be greater than 300,000 to move to the next stage");
    

Надеюсь, поможет!

person Khoait    schedule 06.11.2014

Программно отредактируйте последовательность бизнес-процессов:

https://community.dynamics.com/crm/b/develop1/archive/2013/09/20/how-to-change-process-and-stage-programmatically.aspx

person nunoalmeida    schedule 18.11.2014