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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.12.2011, 11:00   #1  
Borisvil is offline
Borisvil
Участник
 
123 / 36 (2) +++
Регистрация: 03.06.2011
Адрес: Санкт-Петербург
Здравствуйте!

Сталкивался с такой бедой - при нажатии на кнопку создавалась кастомная сущность и потом она открывалась в новом окне, это занимало некое время и юзеры невничая давили на кнопку несколько раз.
Решил проблему следующим образом: из скрипта, который висит на кнопке, сразу вызывается новое окошко с новой требуемой сущностью и предварительно заполненными полями. Это происходит быстро и сразу при нажатии на кнопку открывается новое окошко IE, а уж сколько оно потом будет грузиться не так важно поскольку юзер увидел что нажатие на кнопку возымело результат.
Как такое сделать написано здесь (ищите Pop the Create form of a CRM record type):
http://gtcrm.wordpress.com/2011/03/1...enceupdated-2/
За это сообщение автора поблагодарили: mistah (1).
Старый 23.12.2011, 16:41   #2  
ashuron is offline
ashuron
Участник
 
41 / 10 (1) +
Регистрация: 25.03.2010
Спасибо за ответ, однако это не совсем то, что мне надо.
Конечно, можно сообщить пользователю, что он услышан и не стоит больше нажимать кнопку, но ведь он все-таки ее нажнмет, и получит сообщение об ошибке.
Я бы, конечно, ожидал, что в CRM была бы возможность отключить Ленту из JS, например. Однако, похоже, что Xrm.Page.ui.refreshRibbon() - единственная функция
Поэтому я не вижу другого решения, кроме создания нового поля на сущности, используемого исключительно для включения или выключения кнопки на Ленте и следующего алгоритма:
1. Перед запуском основной функции, занимающей несколько секунд, менять новый статус на сущности
2. В JS перед вызовом основной функции вызывать Xrm.Page.ui.refreshRibbon()
3. После выполнения основной функции вернуть новый статус назад
4. Потом опять вызвать Xrm.Page.ui.refreshRibbon().

Мне кажется, что этот подход все-таки немного неверен (или в корне неверен), и должны быть более "правильные" методы решения этой проблемы... ИМХО

Цитата:
Сообщение от Borisvil Посмотреть сообщение
Здравствуйте!

Сталкивался с такой бедой - при нажатии на кнопку создавалась кастомная сущность и потом она открывалась в новом окне, это занимало некое время и юзеры невничая давили на кнопку несколько раз.
Решил проблему следующим образом: из скрипта, который висит на кнопке, сразу вызывается новое окошко с новой требуемой сущностью и предварительно заполненными полями. Это происходит быстро и сразу при нажатии на кнопку открывается новое окошко IE, а уж сколько оно потом будет грузиться не так важно поскольку юзер увидел что нажатие на кнопку возымело результат.
Как такое сделать написано здесь (ищите Pop the Create form of a CRM record type):
http://gtcrm.wordpress.com/2011/03/1...enceupdated-2/
Старый 23.12.2011, 23:29   #3  
Konstantin Katsovich is offline
Konstantin Katsovich
Участник
Аватар для Konstantin Katsovich
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
243 / 57 (2) ++++
Регистрация: 22.10.2008
Адрес: Israel
Я бы попробовал как-то так:
Цитата:
var flag = true;
function OnClickButton() {
if (flag) {
flag =false;
var callback = function () {flag =true;}
// Создание ORDERa и после вызов CALLBACKa
}
else {
alert("Процесс создания начался и может занять несколько минут... Пожалуйста подождите...");
}
}
__________________
Читайте SDK!!!
За это сообщение автора поблагодарили: ashuron (1).
Старый 26.12.2011, 12:55   #4  
ashuron is offline
ashuron
Участник
 
41 / 10 (1) +
Регистрация: 25.03.2010
Цитата:
Сообщение от Konstantin Katsovich Посмотреть сообщение
Я бы попробовал как-то так:
Итак, решил проблему следующим образом:
1. Завел глобальную переменную в скрипте, обявив ее в самом начале и присвоив ей значение true;
2. Перед созданием Order-a присвоил этой глобальной переменной false;
3. После создания Order-a (или при невозможности создания из-за бизнес - правил) выставил значение в true;
4. Функция, запускающая создание Order-a, выполняется только при условии флажок = true.

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

Всем спасибо.
Старый 05.02.2012, 01:44   #5  
Fighter is offline
Fighter
Участник
Аватар для Fighter
 
108 / 31 (2) +++
Регистрация: 26.07.2011
Адрес: Kyiv
Записей в блоге: 12
Вы практически все сделали верно :-).
Остались только небольшие доработки:
1) Внести правки в customizations.xml вашей формы: прописать правило CustomRule с вызовом Вашей кастомной функции (по настройке правила риббона ищите в блогах сайта).
2) Написать код кастомной функции, которая будет возвращать булево значение Вашей глобальной переменной
3) Не забыть после присваивания значения булевой переменной вызывать refreshRibbon.
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Gareth Tucker: How to view Ribbon Definitions in CRM 2011 Blog bot Dynamics CRM: Blogs 0 14.12.2011 11:11
Gareth Tucker: Adding a new Button Group to the CRM Ribbon Blog bot Dynamics CRM: Blogs 0 24.08.2011 16:11
Gareth Tucker: Editing Ribbon Buttons in CRM 2011 Blog bot Dynamics CRM: Blogs 0 24.08.2011 09:11
Dynamics CRM Tools: New tool: Ribbon Browser Blog bot Dynamics CRM: Blogs 0 15.06.2011 18:11
Microsoft Dynamics CRM Team Blog: Create Dynamic Ribbon Controls Blog bot Dynamics CRM: Blogs 0 30.03.2011 21:11
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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