Здравствуйте!

BPMonline 7.7.0.2326

Возможно ли в мобильном приложении при сохранении новой записи раздела Лиды осуществлять синхронизацию? И как это реализовать?

Нравится

8 комментариев

Возможно Вам будет удобней включить online-режим для мобильного приложении?
Тогда все изменения будут моментально отображаться/передаваться на сервер.
(Правда для его работы на устройсвах необходим будет постоянно интернет)

А где включается online-режим для мобильного приложения?
А если интернет пропадет и в этот момент добавят 2 записи, а после того, как интеренет появится, добавят 3-ю запись, что произойдет с первыми 2?
Или если не добавят 3-ю запись, а просто появится интернет, 2 записи будут переданы на сервер?

Включается в системной настройке "режим работы мобильного приложения"
Если нет интернета вы не сможете создать ни одной записи. впрочем как и прочитать.

Тогда нам такой режим не подходит.

А возможно ли при сохранении записи Лида сразу начинать синхронизацию?
И как это реализовать?

Примерно так

Terrasoft.MessageBox.showConfirmation({
   message: LocalizableStrings["PharmaMobileActivityPreviewPageSyncConfirm"],
   htmlEncode: false,
   yesCallback: function() {
      Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({
         exportOnly: false,
         checkForPredefinedDatabase: false,
         redirect: function(){
            Terrasoft.core.redirectToMainPage();
         },
      });
   },
   noCallback: function() {},
   scope: this
});

Правильно ли я понимаю, что для того, чтобы синхронизация происходила после сохранения записи, мне нужно переопределить страницу редактирования Лида и на onSaved написать вызов синхронизации?
Или это делается по-другому?

Подобное можно реализовать как минимум двумя способами.
1. Как Вы о писали, можно переопределить страницу редактирования Лида и в контроллере на обработчике onDataSavedSuccessfully() реализовать запуск синхронизации. Этот обработчик срабатывает как-раз после того, как данные сохранены.

2. Второй способ - подписаться на события самой модели и уже там реализовать нужную Вам функциональность. Плюс этого подхода - код будет срабатывать всегда на соотв. событие, вне зависимости от того, открывали Вы вообще страницу редактирования Лида или нет. Пример подобной реализации можно подсмотреть в схеме MobileActivityModelConfig. Такая подписка будет выглядеть примерно так:

Terrasoft.Configuration.sync = function() {
      Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({
         exportOnly: false,
         checkForPredefinedDatabase: false,
         redirect: function(){
            Terrasoft.core.redirectToMainPage();
         },
      });
};
 
Terrasoft.sdk.Model.setModelEventHandler("Lead", Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].insert, Terrasoft.Configuration.sync);
Terrasoft.sdk.Model.setModelEventHandler("Lead", Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].update, Terrasoft.Configuration.sync);

Спасибо большое! Получилось!
Второй способ работает лучше!
Спасибо!!!

Показать все комментарии