Синхронизация при сохранении в мобильном приложении
Здравствуйте!
BPMonline 7.7.0.2326
Возможно ли в мобильном приложении при сохранении новой записи раздела Лиды осуществлять синхронизацию? И как это реализовать?
Нравится
Возможно Вам будет удобней включить 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);
Спасибо большое! Получилось!
Второй способ работает лучше!
Спасибо!!!