Показать сообщение отдельно
Старый 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" и на сохранение формы. Что приводит к двойному вызову функций (обеих) при дальнейшем изменении поля и сохранении формы.
НО когда запись сразу закрыть (после первого сохранения) а потом открыть повторно, такого артефакта не наблюдается.
Кто нибудь сталкивался с подобным??? Буду очень благодарен за совет, а то уж сегодня всю голову себе проел этим.
Спасибо!