|
|
#1 |
|
Участник
|
Странное поведение CRM 2013 что с ним делать?
Есть у меня небольшой скриптец на изменение поля new_a1 тип дата и время:
Код: if (Xrm.Page.getAttribute("new_a1").getValue() != null){
var dd = Xrm.Page.getAttribute("new_a1").getValue();
var cd = new Date();
cd.setMinutes(cd.getMinutes()+15);
if (dd.getTime() < cd.getTime()){
Xrm.Page.getAttribute("a1").setValue(cd);
}
}Код: Xrm.Page.getAttribute("new_a1").addOnChange(econsulting.TM.changeDateTime);После чего просто тусуюсь на форме 1-2 мин и нажимаю сохранить. И тут странность при нажатии сохранить выполняется снова эта функция и она снова меняет время. На OnSave этой функции нет! Что за примочки CRM и как с ними бороться ? [+] ... оно вообще постоянно вызывается при нажатии на кнопку сохранить ![]() [+] остальные поля не передергиваются и не передергивается это поле если оно не заполнено, а если заполнено то оно передергивается на сохранении всегда хотя и не меняли его
Последний раз редактировалось spectr; 28.01.2014 в 19:52. |
|
|
|
|
#2 |
|
Чайный пьяница
|
Я бы приатачился дебагером и посмотрел откуда происходит вызов. При такого типа атача ивента первым параметром (если не ошибаюсь) передаётся контекст вызова - из него можно посмотреть откуда было вызвано + по колстеку прошёлся бы. Наверняка как то можно отсечь такие вызовы.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#3 |
|
Moderator
|
Полагаю что-то на OnSave может менять это поле, поэтому происходит OnChange
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() MS Certified Dirty Magic Professional
|
|
|
|
|
#4 |
|
Участник
|
Цитата:
ну или я что-то не то смотрел
|
|
|
|
|
#5 |
|
Участник
|
|
|
|
|
|
#6 |
|
Участник
|
Сделал еще такую проверку:
Получил желаемый результат поле не изменилось, но и onChange больше на нем нет тем самым в поле можно вводить что угодно ![]() Вопрос Что может вызывать onChange поля после сохранения ? onLoad больше не запускается. Интересные факты
Последний раз редактировалось spectr; 29.01.2014 в 11:50. |
|
|
|
|
#7 |
|
Участник
|
Проверил на другой СРМ та же проблема
![]() Свою проблему временно решил созданием еще одного поля которое будет эталоном и содержать дату ту которую ввел юзер. И если эти 2 даты совпадают ничего не делаю если нет то провожу проверку. После чего меняю или нет дату введенную юзером и вкидываю ее в второе поле. Выглядит это так: Код: if (Xrm.Page.getAttribute("new_a1").getValue() != null){
if (Xrm.Page.getAttribute("new_a2").getValue() != null && Xrm.Page.getAttribute("new_a1").getValue().getTime() == Xrm.Page.getAttribute("new_a2").getValue().getTime()){
return;
}
var dd = Xrm.Page.getAttribute("new_a1").getValue();
var cd = new Date();
cd.setMinutes(cd.getMinutes()+15);
if (dd.getTime() < cd.getTime()){
Xrm.Page.getAttribute("new_a1").setValue(cd);
}
}
Xrm.Page.getAttribute("new_a2").setValue(Xrm.Page.getAttribute("new_a1").getValue());
|
|
|
|
|
#8 |
|
Консультант-джедай
|
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога
|
|
|
|
|
#9 |
|
Участник
|
Пока делал скрипт напоролся на очень интересную штуку после чего сделал маленький тест и о БОГИ
оно заработало !!!!!И так вся проблема в типе Дата и время он принимает только до минуты а секунды режет ! Потому допускаю вот именно эта обрезка и передергивает поле. И так получилось все очень просто: Код: if (Xrm.Page.getAttribute("new_a1").getValue() != null){
var dd = Xrm.Page.getAttribute("new_a1").getValue();
var cd = new Date();
cd.setSeconds(0);
cd.setMilliseconds(0);
cd.setMinutes(cd.getMinutes()+15);
if (dd.getTime() < cd.getTime()){
Xrm.Page.getAttribute("new_a1").setValue(cd);
}
} |
|
|
|
|
#10 |
|
Еда - топливо, Одежда - н
|
отключи автосохранение и все будет работать.
каждые 30 сек происходит попытка сохранить данные, но они по какой-то причине не хотят сохранятся после чейнджа... в итоге форма висит в замкнутом цикле.... и апдейтит поле.
__________________
Все что вам нужно - это мозК Еда - топливо... Одежда - необходимость... |
|
|
|
|
#11 |
|
Участник
|
Цитата:
И автосохранение у меня отключено. Проблему решил в посте выше. Алогично но работает
|
|
|
|
|
#12 |
|
Еда - топливо, Одежда - н
|
Цитата:
но рад что есть решение ))
__________________
Все что вам нужно - это мозК Еда - топливо... Одежда - необходимость... |
|
|
|
|
|