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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.07.2017, 14:56   #1  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Синхронное сохранение формы
Всем привет!
Кто-то сталкивался с вопросом реализации синхронного сохранения формы средствами js?
Постараюсь описать суть задачи. Есть некая база данных; есть Web-сервис, расположенный на другом домене, который осуществляет запись данных в эту БД (данных достаточно много) и тут же небольшой html который служит в качестве iframe для формы CRM. При нажатии на кнопку сохранить/сохранить и закрыть из формы CRM по средствам postMessage уходят данные в iframe на сервис. Сервис осуществляет все необходимые операции и возвращает в родителя используя всё тот же postMessage результат. Проблема в том, что при нажатии на сохранить и закрыть результат выполнения из iframe не успевает сформироваться и окно закрывается до получения результата. Что можете подсказать для реализации функции, которая будет стопить закрытие формы до получения ответа?
В начале хотел использовать Xrm.Page.context.getEventArgs().preventDefault() для отмены сохранения, а после получения результата уже сохранять форму и закрывать её. Но при таком подходе не сохраняются данные формы CRM – после использования Xrm.Page.data.entity.save('saveandclose') появляется сообщение о том, что данные не сохранены .
Старый 18.07.2017, 15:11   #2  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Если использовать postMessage и выполнять его на сейве то никак.
Я могу предложить такой вариант:
  • переопределяем кнопку сохраннеия на риббоне
  • вызываем на ней сохранения фрейма и лочим форму (как вариант можно все скрыть)
  • после получения ответа с сервиса вызываем сохранение формы как обычно

Но у меня возникает вопрос почему это не сделать плагином ?
Старый 18.07.2017, 15:18   #3  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Вариант с переопределением кнопки на риббоне я рассматривал, но к сожалению уже написано много кода, который использует именно штатную кнопку. Боюсь много поломается при таком подходе, перепись с отладкой придётся вести очень долго но за оперативный совет спасибо.
Я бы может и сделал плагином, но к сожалению кроме скромных познаний в JS ничего другого не умею. А сейчас начинать изучать вопрос тоже не очень то и хочется, так как в ближайшем будущем переезжаем на другую платформу
Старый 19.07.2017, 11:39   #4  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Придумал как можно решить задачу. После того как я делаю postMessage дополнительно делаю синхронный httprequest который собственно и обеспечивает задержку. Метод очень не красивый и его можно привадить в качестве примера из раздела бэдпрактикс но рабочий. Всем спасибо за внимание!
Теги
crm 2011, js, saveform

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как запускать создание Формы новой записи в новом окне или в окне быстрого создания в один клик ? AVG Dynamics CRM: Разработка 14 09.04.2015 11:23
Мелкомягкий CRM: Скрытие пунктов меню формы Blog bot Dynamics CRM: Blogs 4 23.09.2010 10:18
Как определить создание формы Dicora Dynamics CRM: Функционал 2 22.09.2010 14:42
Как отключить принудительное сохранение формы при изменении ownerid в форме opportunity? zkk Dynamics CRM: Разработка 2 28.05.2010 13:35
автоматическое сохранение формы при изменении значения поля datfi Dynamics CRM: Разработка 6 18.09.2009 14:26
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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