01.02.2011, 10:33 | #1 |
Участник
|
Проблема с методом crmForm.Save()
Добрый день.
Помогите, пожалуйста решить такую проблему: Я создал кастомную кнопку в ISV.config, которая через SOAP-запрос вызывает веб-сервис, выполняющий создание копии объекта activity. Перед вызовом веб-сервиса я проверяю текущий объект на изменения (crmForm.isDirty) и если таковые были, то вызываю метод crmForm.Save(). Проблема заключается в том, что веб-сервис создает копию со старыми данными, которые были до сохранения формы. Сохранение работает, так как изменения в старом объекте сохраняются. Если же сохранять изменения на форме руками, то все работает, новый объект создается с актуальными сохраненными данными. Заранее спасибо. |
|
01.02.2011, 12:01 | #2 |
Moderator
|
Очевидно, проблема заключается в асинхронности этих операций. Я думаю нужно изменить код таким образом, чтобы запрос данных для копии происходил после перерисовки формы. Например по событию "onreadystatechange" окна. Будет проще посоветовать, если вы покажете код.
p.s. Наиболее простой вариант, который, кстати, и использует MS: если есть изменения - выведите пользователю сообщение "Необходимо сохранить изменения" и все на этом. Возможно это даже более правильно.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
01.02.2011, 12:37 | #3 |
Участник
|
Дело в том, что этот функционал был разработан (и сейчас работает) именно через вывод сообщения с просьбой сохранить, но появился запрос сделать сохранение автоматически...
Вот мой код из ISV.config: <MenuItem JavaScript="if (crmForm.IsDirty) {crmForm.Save();} var taskGuid = crmForm.ObjectId; var message = "<?xml version='1.0' encoding='utf-8'? ..........далее остальная часть SOAP-запроса к методу веб-сервиса ................ var returnUrl = result.selectSingleNode('//ExecuteTaskToolResult'); try {window.opener.crmGrid.Refresh();} catch (error) {} window.document.location.reload(returnUrl.text);"> p.s. веб-сервис с определенными методами, к которым я обращаюсь, мой. |
|
01.02.2011, 18:05 | #4 |
Консультант-джедай
|
Попробуйте между этими операциями повесить небольшой таймаут
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
|
|