Я работаю над потоком бизнес-процессов. Я создал поток Контакт--Возможность--Цитата--Заказ--Счет в соответствии с требованиями. Сущность Возможность имеет атрибут Сумма бюджета. Если сумма бюджета меньше 300 000, пользователь не должен переходить на следующий этап. Мой вопрос заключается в том, как запретить пользователю переходить на следующий этап. Я пишу плагин для этого.
MS-CRM 2013 Запретить пользователю переходить на следующий этап
Ответы (2)
Вам следует
- Зарегистрируйте плагин в Pre-Update Operation of Opportunity.
Проверьте поле
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 } }
Проверить значение следующего этапа, есть 2 способа проверить этап
-Получите идентификатор следующего этапа по вашему сценическому имени и сравните, совпадают ли они, затем перейдите к следующему шагу, иначе вернитесь. Или,
-Создайте новое поле с именем
stagename
для хранения имени этапа, и рабочий процесс CRM, запускаемый при изменении поляstageid
, чтобы обновить это поле именем этапа процесса. Подробнее здесь . Затем у вас есть сценическое имя, доступное для проверки без необходимости его извлечения. Сравните, соответствует ли значение в вашем новом поле имени следующего этапа, затем перейдите к следующему шагу, иначе вернитесь.Получите и проверьте значение суммы бюджета. Или, если вы не хотите извлекать, вы можете использовать предварительное изображение и/или target['budgetamount'] для получения значения.
Если сумма бюджета ‹ 300000, то
throw new InvalidPluginExecutionException("Budget Amount must be greater than 300,000 to move to the next stage");
Надеюсь, поможет!
Программно отредактируйте последовательность бизнес-процессов: