Синхронизация при сохранении в мобильном приложении
Здравствуйте!
BPMonline 7.7.0.2326
Возможно ли в мобильном приложении при сохранении новой записи раздела Лиды осуществлять синхронизацию? И как это реализовать?
Нравится
Возможно Вам будет удобней включить online-режим для мобильного приложении?
Тогда все изменения будут моментально отображаться/передаваться на сервер.
(Правда для его работы на устройсвах необходим будет постоянно интернет)
А где включается online-режим для мобильного приложения?
А если интернет пропадет и в этот момент добавят 2 записи, а после того, как интеренет появится, добавят 3-ю запись, что произойдет с первыми 2?
Или если не добавят 3-ю запись, а просто появится интернет, 2 записи будут переданы на сервер?
Включается в системной настройке "режим работы мобильного приложения"
Если нет интернета вы не сможете создать ни одной записи. впрочем как и прочитать.
Тогда нам такой режим не подходит.
А возможно ли при сохранении записи Лида сразу начинать синхронизацию?
И как это реализовать?
Примерно так
[javascript]
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
});
[/javascript]
Правильно ли я понимаю, что для того, чтобы синхронизация происходила после сохранения записи, мне нужно переопределить страницу редактирования Лида и на onSaved написать вызов синхронизации?
Или это делается по-другому?
Подобное можно реализовать как минимум двумя способами.
1. Как Вы о писали, можно переопределить страницу редактирования Лида и в контроллере на обработчике onDataSavedSuccessfully() реализовать запуск синхронизации. Этот обработчик срабатывает как-раз после того, как данные сохранены.
2. Второй способ - подписаться на события самой модели и уже там реализовать нужную Вам функциональность. Плюс этого подхода - код будет срабатывать всегда на соотв. событие, вне зависимости от того, открывали Вы вообще страницу редактирования Лида или нет. Пример подобной реализации можно подсмотреть в схеме MobileActivityModelConfig. Такая подписка будет выглядеть примерно так:
[javascript]
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);
[/javascript]
Спасибо большое! Получилось!
Второй способ работает лучше!
Спасибо!!!