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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.09.2015, 21:12   #1  
Karpa_S is offline
Karpa_S
Участник
 
57 / 10 (1) +
Регистрация: 24.05.2015
Адрес: Киев
Двойной вызов функции
Всем доброго вечера. Опять нуждаюсь в Вашем совете.

В срм 2013 и срм 2015 (не знаю как такое прошляпил) заметил такую особенность.
Пример:

onLoad = function(){
Xrm.Page.getAttribute(name).addOnChange(getNameValue);
Xrm.Page.data.entity.addOnSave(saveFunction);
}

getNameValue = function(){
alert(Xrm.Page.getAttribute(name).getValue());
}

saveFunction = function(){
alert("!!!!!!");
}

И так, в чем вопрос.
Я не вешаю каждую функцию на отдельное событие. Завешиваю только функцию onLoad на загрузку формы. Все остальные обработчики цепляются в самой функции. И все отлично работает, но вот на что наткнулся. Когда создаем новую запись, и сохраняем ее не закрывая , то выполняется функция saveFunction, что логично, но почему то после сохранения, повторно отрабатывает функция onLoad и завешивает по еще одному обработчику на поле "name" и на сохранение формы. Что приводит к двойному вызову функций (обеих) при дальнейшем изменении поля и сохранении формы.
НО когда запись сразу закрыть (после первого сохранения) а потом открыть повторно, такого артефакта не наблюдается.
Кто нибудь сталкивался с подобным??? Буду очень благодарен за совет, а то уж сегодня всю голову себе проел этим.
Спасибо!
Старый 23.09.2015, 16:44   #2  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Используйте FromType https://msdn.microsoft.com/en-us/lib...MK_getFormType
Старый 23.09.2015, 17:55   #3  
Karpa_S is offline
Karpa_S
Участник
 
57 / 10 (1) +
Регистрация: 24.05.2015
Адрес: Киев
Это не решает проблему, это своего рода костыль. Да и это не самый лучший вариант. Нужно понять причину такого поведения и устранить.
Но за совет спасибо.
Старый 24.09.2015, 09:17   #4  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
можно на сейве сделать removeOnChange
можно запомнить флаг (как вариант тип формы) в глобальную переменную, и смотреть если поменялась не выполнять скрипты на онлоаде

больше всего что двойной запуск появляется только на создании
или на апдейти тоже есть ?

Последний раз редактировалось spectr; 24.09.2015 в 09:19.
Старый 24.09.2015, 10:06   #5  
Karpa_S is offline
Karpa_S
Участник
 
57 / 10 (1) +
Регистрация: 24.05.2015
Адрес: Киев
Я сделал с помощью флага на сейве. Да так работает (скрепя душой).
removeOnChange тоже интересно, но как быть с функциями на сейве?

Для атрибута это легко Xrm.Page.getAttribute(name).removeOnChange(getNameValue);

А как отсюда убрать обработчик? Xrm.Page.data.entity.addOnSave(saveFunction);
Старый 25.09.2015, 09:22   #6  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Код:
OnSave
    Use the addOnSave and removeOnSave methods to add or remove event handlers to the save event
За это сообщение автора поблагодарили: Karpa_S (1).
Старый 25.09.2015, 15:29   #7  
Karpa_S is offline
Karpa_S
Участник
 
57 / 10 (1) +
Регистрация: 24.05.2015
Адрес: Киев
Спасибо за полезную информацию. Но остановился пока на флаге.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM 2015 вызов функции после сохранения формы Karpa_S Dynamics CRM: Разработка 6 22.09.2015 17:21
Вызов лукапа только с customView vasya-serega Dynamics CRM: Разработка 0 28.08.2014 00:35
Вызов плагина одной crm с риббона другой Taker1796 Dynamics CRM: Разработка 5 12.03.2013 18:25
Вызов "чужого" сервиса из JavaScript Kipetcoff Dynamics CRM: Разработка 1 17.09.2010 15:37
передача параметров функции Matvei Dynamics CRM: Разработка 6 04.06.2008 08:58

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

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

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