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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.05.2012, 08:37   #1  
kh_heckfy is offline
kh_heckfy
Участник
 
139 / 14 (1) ++
Регистрация: 30.03.2012
Адрес: Новосибирск
Из плагина вернуть предупреждение?? 2011
Можно ли как то это сделать?
Я делаю throw new Exception
И юзеру конечно же вылазит форма с красным крестом
И данные не сохраняются
А мне надо из плагина вернуть юзеру предупреждение, и при этом надо чтобы изменения сохранились.
Старый 12.05.2012, 10:03   #2  
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
Цитата:
Сообщение от kh_heckfy Посмотреть сообщение
Можно ли как то это сделать?
Я делаю throw new Exception
И юзеру конечно же вылазит форма с красным крестом
И данные не сохраняются
А мне надо из плагина вернуть юзеру предупреждение, и при этом надо чтобы изменения сохранились.
Никак, используйте для этого JavaScript.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 12.05.2012, 10:10   #3  
kh_heckfy is offline
kh_heckfy
Участник
 
139 / 14 (1) ++
Регистрация: 30.03.2012
Адрес: Новосибирск
блиин
да скриптом тяжело, там расчетов много очень
ну ладно, ченить подумаем ща
Старый 12.05.2012, 10:39   #4  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Мы раньше делали так. Создавали Веб-сервис и плагин. Код у них фактически одинаков. Из формы вызывали Веб-сервис. и если все плохо, то выдавали нотификейшн. А потом уже плагин работал. Если до него доходило.

Но вот еще интересно. Вам нужно, чтобы плагин отрабатывал и было сообщение после его отработки. Сделайте следующее:
создайте текстовое поле new_message.
Добавте его на форму и уберите видимость. В плагине заполняйте это поле. а на онлоад формы проверяйте, что если оно заполнено, то выдать сообщение с текстом, который в нем указан.
__________________
Мой блог https://procrm.tv
За это сообщение автора поблагодарили: b777 (1).
Старый 12.05.2012, 10:43   #5  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Мы раньше делали так. Создавали Веб-сервис и плагин. Код у них фактически одинаков. Из формы вызывали Веб-сервис. и если все плохо, то выдавали нотификейшн. А потом уже плагин работал. Если до него доходило.

Но вот еще интересно. Вам нужно, чтобы плагин отрабатывал и было сообщение после его отработки. Сделайте следующее:
создайте текстовое поле new_message.
Добавте его на форму и уберите видимость. В плагине заполняйте это поле. а на онлоад формы проверяйте, что если оно заполнено, то выдать сообщение с текстом, который в нем указан.
1.
- Сохранить и закрыть
- Сохранить и создать
2. А как оно будет очищаться?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 12.05.2012, 11:04   #6  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Если бы опять ж это делал я, то очищал бы рестом после того как показал. ТО есть увидел, что поле не пусто. вызвал рест запрос на обновление этого поля и очистил бы его.

1.
- Сохранить и закрыть
- Сохранить и создать

Еще раз. На онсейв вызывается веб-сервис. ЕСли он вернул Ошибку, то сохранение не делать и текст красиво выводить. Не Exception плагина, а текст.
Это для пользователя удобнее, чем системная ошибка СРМ.

P.S.
Лучше использовать throw new InvalidPluginExecutionException
__________________
Мой блог https://procrm.tv
За это сообщение автора поблагодарили: kh_heckfy (1).
Старый 14.05.2012, 07:40   #7  
kh_heckfy is offline
kh_heckfy
Участник
 
139 / 14 (1) ++
Регистрация: 30.03.2012
Адрес: Новосибирск
а чо... идея хорошая... после алерта очищать поле просто...
Вариант! спасибо!)
Старый 14.05.2012, 10:27   #8  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Лучше не алерты, а это.
http://mmcrm.ru/?p=1789
Не люблю я алерты.
Поле нужно очищать рестом.
Иначе, если его очистить и форму не сохранить, то сообщение появится и в следующий раз, и при выходе с формы появится сообщение о том, что на форме были изменения.

P.S. На форуме лучше оставлять благодарность у конкретного сообщения. Там специальная ссылка на это есть.
__________________
Мой блог https://procrm.tv
Старый 14.05.2012, 10:40   #9  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
А что если запись в седующий раз откроет другой пользователь? Ведь сообщение покажется ему, а не тому кто сохранял запись. Или это не важно в контексте задачи?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 14.05.2012, 10:48   #10  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Товарищ slivka_83, а какой Ваш вариант решения этой конкретной задачи в том виде, в котором она описана?
__________________
Мой блог https://procrm.tv
Старый 14.05.2012, 10:56   #11  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
1. Уже озвучивалось: т.к. обработка трудоемкая, то свой веб-сервис на onSave'е;
2. Если оперативность не важна и сообщения появляются не часто, то можно асинхронно e-mail отправлять.
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 14.05.2012, 11:11   #12  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
С e-mail хорошо, но не факт что это подойдет к этой задаче. Мне эти асинхронные операции тоже не очень нравятся. Приходилось несколько раз объяснять почему ничего не происходит, хотя должно и что надо перегружать форму, чтобы увидеть счастье.
__________________
Мой блог https://procrm.tv
Старый 17.03.2014, 10:13   #13  
b777 is offline
b777
Участник
 
46 / 10 (1) +
Регистрация: 11.07.2013
Не понятно только, зачем в аргументах InvalidPluginException предусмотрен параметр со статусом операции, если он всё равно не влияет...
Старый 09.04.2014, 10:12   #14  
b777 is offline
b777
Участник
 
46 / 10 (1) +
Регистрация: 11.07.2013
Вот, только было устаканили с коллегами вариант с заполнением из плагина скрытого поля и повешением алерта на него скриптом, как начальница (аналитик) рассказала о чудо-новинке 13-го CRMа по поводу алертов
http://mmcrm.ru/?p=5355/

Но я по ссылке обнаружил те же скрипты, только в обёртках, а не заявленный обмен сообщениями через какие-то процессы.

В разрезе этой конкретной задачи (выдача предупреждений из плагинов) изменилось ли жизнь к лучшему в 13м? Кто-ниубдь что-нибудь нарыл полезное по этому поводу?
Старый 09.04.2014, 12:02   #15  
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
Попробуйте пользоваться Action-ами.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: b777 (1).
Старый 13.04.2014, 18:29   #16  
b777 is offline
b777
Участник
 
46 / 10 (1) +
Регистрация: 11.07.2013
Цитата:
Сообщение от a33ik Посмотреть сообщение
Попробуйте пользоваться Action-ами.
Вижу, что из плагинов можно выдавать какие-либо выходные параметрами, но куда?
Как их потом принимать? Так сходу не понятно что-то.
Старый 13.04.2014, 20:15   #17  
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
Посмотрите второй параграф - http://a33ik.blogspot.com/2013/10/cu...r-net-and.html
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 15.04.2014, 15:08   #18  
b777 is offline
b777
Участник
 
46 / 10 (1) +
Регистрация: 11.07.2013
Цитата:
Сообщение от a33ik Посмотреть сообщение
Посмотрите второй параграф - http://a33ik.blogspot.com/2013/10/cu...r-net-and.html
Верно ли я понимаю, что кусок такого кода, используемый в плагине, повешенном на пост-оперэйшн и именюшем выходной параметр, сможет выдать этот выходной параметр в виде сообщения-уведомления?
X++:
OrganizationRequest request = new OrganizationRequest("slick_CustomActionsTest");
request["BoolInArgument"] = true;
request["DateTimeInArgument"] = DateTime.Now;
request["DecimalInArgument"] = decimal.Zero;

OrganizationResponse response = service.Execute(request);

bool boolvalue = (bool)response.Results["BoolOutArgument"];
Или тут даже выходной параметр не обязателен, и текст сообщения будет задан здесь:
OrganizationRequest request = new OrganizationRequest("slick_CustomActionsTest");
?
Старый 15.04.2014, 16:11   #19  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Только стоит уточнить, что нормального способа переноса этих actions еще нет.

И Вам придется танцевать с бубном, чтобы перенести их на другой сервер.
Конечно Андрей уже описал как этот танец танцевать, но я пока зарекся их использовать.

Да они работают, да они прикольные, то не промышленные пока. это точно.
Как МС планирует их в таком виде использовать мне лично вообще непонятно.
__________________
Мой блог https://procrm.tv
За это сообщение автора поблагодарили: b777 (1).
Старый 16.04.2014, 13:49   #20  
b777 is offline
b777
Участник
 
46 / 10 (1) +
Регистрация: 11.07.2013
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Только стоит уточнить, что нормального способа переноса этих actions еще нет.

И Вам придется танцевать с бубном, чтобы перенести их на другой сервер.
Конечно Андрей уже описал как этот танец танцевать, но я пока зарекся их использовать.

Да они работают, да они прикольные, то не промышленные пока. это точно.
Как МС планирует их в таком виде использовать мне лично вообще непонятно.
Пока руки не дошли прорубить этот вариант.
В этой задаче сначала сделал таким способом, чтоб плагин заполнял поле, на которое выдавал бы алерт скрипт, повешенный на загрузку формы.

Но беда в том, что 13й CRM как-то по-хитрому частично-асинхронно выполняет сохранение изменений, и перегрузка страницы после хохранения происходит не каждый раз.

Вот Вы описали выше вариант с проверкой в сервисе, который вызывается из скрипта. Тоже вариант, но в данном случае сильно желателен именно плагин, так как на этой форме большой блок с плагиновыми проверками, использующими общие методы, и лишь одна ветка алгоритма нуждается в таком вот уведомлении.

Так что прям не знаю. Переносить всё из плагина в сервис или разбивать логику только из-за невозможности выдать уведомление, как-то не хочется.

Но спасибо, что предупредили о танцах с бубнами. Предупреждён = вооружён, как говорится
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 8 Blog bot Dynamics CRM: Blogs 1 30.04.2016 10:26
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 7 Blog bot Dynamics CRM: Blogs 0 27.03.2012 02:11
Gareth Tucker: Installing the Customer Care Accelerator (CCA) for CRM 2011 Blog bot Dynamics CRM: Blogs 3 23.12.2011 09:16
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 4 Blog bot Dynamics CRM: Blogs 0 24.09.2011 01:16
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM 2011 ~ Online Test Drive Guide Blog bot Dynamics CRM: Blogs 0 05.08.2011 20:13

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

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

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