31.10.2016, 17:55 | #1 |
Участник
|
CRM 2013: Business Process work flow
Коллеги привет!
Есть такой сценарий: не дать возможность пользователю устанавливать следующий стейдж в Business Process work flow. Кнопку то скрыть не проблема, вот только если страница грузить долго, то кнопка будет активна пока наш скрипт на форме не подгрузиться и не скроет кнопку "Next Stage". А есть такие что меняют. Я видел два пути решения: 1) JS: Выводить какой-то меседж или не давать сохранить запись (логика очень сложная в сорса MS, не нашел как сделать) 2) Plugin: повесить плагин на изменения поля stageId и там уже все валидировать согласно моей логике (но его путо нет в списке (Filtering attribute) Если у кого есть пример кода как можно решить - помогите |
|
01.11.2016, 11:01 | #2 |
Участник
|
На изменение поля stageid можно повесить WF
http://www.powerobjects.com/2014/04/...-dynamics-crm/ |
|
|
За это сообщение автора поблагодарили: Ion (1). |
01.11.2016, 11:26 | #3 |
Участник
|
Цитата:
Сообщение от ZooY
На изменение поля stageid можно повесить WF
http://www.powerobjects.com/2014/04/...-dynamics-crm/ Очень дивно что я не могу в плагине повесить свой обработчик на это поле. Это по ходу бага или недочет! |
|
01.11.2016, 12:12 | #4 |
Участник
|
Извините за тупой вопрос: юзаю Plugin Registration из SDK 2013, написал кастомную активити, залил сборку через тулу, но не вижу ValidateChangeProcessStage в списке зарегистрированных, что я не так делаю?))
X++: public class ValidateChangeProcessStage : CodeActivity { [RequiredArgument] [Input("Contact")] public InArgument<Entity> Contact{ get; set; } protected override void Execute(CodeActivityContext executionContext) { IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>(); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(null); Entity contact= Contact.Get<Entity>(executionContext); if(contact!= null) { if (!contact.Contains("uds_statuscode")) { new InvalidPluginExecutionException("You can not change process flow stage manually"); }; } } } |
|
01.11.2016, 12:41 | #5 |
Участник
|
Может не туда смотрите, кастомное действие обычно лежит в папочке с именем сборки.
|
|
01.11.2016, 13:05 | #6 |
Участник
|
|
|
01.11.2016, 13:16 | #7 |
Чайный пьяница
|
Судя по всему проблема в объявлении аргумента:
Код: public InArgument<Entity> Contact{ get; set; } Код: [ReferenceTarget("contact")] public InArgument<EntityReference> Contact{ get; set; }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
01.11.2016, 17:21 | #8 |
Участник
|
Цитата:
Сообщение от a33ik
Судя по всему проблема в объявлении аргумента:
Код: public InArgument<Entity> Contact{ get; set; } Код: [ReferenceTarget("contact")] public InArgument<EntityReference> Contact{ get; set; } У меня windows 10. Может из-за этого трабла Версия Reg tool 6.1.1.1143 64 bit Последний раз редактировалось Ion; 01.11.2016 в 17:26. |
|
01.11.2016, 17:56 | #9 |
Чайный пьяница
|
Скриншоты не помешают.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
01.11.2016, 18:11 | #10 |
Участник
|
|
|
02.11.2016, 10:23 | #11 |
Moderator
|
Цитата:
Сообщение от Ion
Коллеги привет!
Есть такой сценарий: не дать возможность пользователю устанавливать следующий стейдж в Business Process work flow. Кнопку то скрыть не проблема, вот только если страница грузить долго, то кнопка будет активна пока наш скрипт на форме не подгрузиться и не скроет кнопку "Next Stage". А есть такие что меняют. Я видел два пути решения: 1) JS: Выводить какой-то меседж или не давать сохранить запись (логика очень сложная в сорса MS, не нашел как сделать) 2) Plugin: повесить плагин на изменения поля stageId и там уже все валидировать согласно моей логике (но его путо нет в списке (Filtering attribute) Если у кого есть пример кода как можно решить - помогите
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
02.11.2016, 14:56 | #12 |
Участник
|
Цитата:
Сообщение от Артем Enot Грунин
Еще есть популярный вариант: добавить на ленту обязательное поле с Feld Level Security и не давать пользователю право на его изменение. Тогда он не может заполнить поле и, следовательно, перейти на следующий шаг. А дальше - по вашему сценарию. Либо поле заполняет какой-то ответственный сотрудник, либо это делает какой-то серверный обработчик с нужными правами доступа.
|
|
02.11.2016, 14:59 | #13 |
Участник
|
В новой сборке всего один аction, а в RT ничего нет
X++: using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Workflow; using System; using System.Activities; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EmployeeWorkflow.Actions { public class ValidateChangeProcessStage : CodeActivity { [ReferenceTarget("contact")] public InArgument<EntityReference> ontact { get; set; } protected override void Execute(CodeActivityContext executionContext) { IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>(); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(null); EntityReference contact = ontact.Get<EntityReference>(executionContext); if (contact != null) { new InvalidPluginExecutionException("You can not change process flow stage manually"); } } } } |
|
02.11.2016, 16:15 | #14 |
Чайный пьяница
|
Может показаться глупым, но попробуйте:
1. Удалите snk. 2. Пересоздайте snk. 3. Сбилдьте. 4. Попробуйте. Если не сработает - попробуйте скачать Microsoft CRM SDK 2015 и использовать Plugin Registration Tool из этого SDK.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
02.11.2016, 16:58 | #15 |
Участник
|
Еще старый добрый рабочий регистратор есть в XrmToolBox...
|
|
03.11.2016, 12:28 | #16 |
Участник
|
Ребята, спасибо за помощь!
Как оказалось какой-то кривой RT for CRM 2013. Взял из SDK 2015 - отлично работает |
|
|
|