Вопрос

Коллеги, как реализовать redirect на preview страницу после синхронизации приложения?
реализовал событие после обновления заказа

Terrasoft.sdk.Model.setModelEventHandler("Order", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].update,function(config){
		var model = "Order";
		var record = config.scope.eventConfig.records[0];
		var pageConfig = {			
			recordId: record.data.Id
		};
		Terrasoft.Configuration.WaSync(model, pageConfig, false);
	});
 
Terrasoft.Configuration.WaSync = function(model, pageConfig, toMainPage = true) {
	Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({
		exportOnly: false ,
		checkForPredefinedDatabase: false,
		redirect: function() {
			debugger;
			if(toMainPage) {
				Terrasoft.core.redirectToMainPage();
			} else {
				Terrasoft.Application.close(() => {
 
				});
			}
		}
	});
};

нашел функцию Terrasoft.util.redirectToPage:
 

Terrasoft.util.redirectToPage = function(to, hash) {
	Terrasoft.Application.close(() => {
		to += location.search;
		if (hash) {
			to += "#" + hash;
		}
		location.href = to;
	});
};

я та понимаю в hash нужно передавать данные по странице заказа, подскажите что можно вообще тут сделать? Не хочется редиректится на главную страницу.

У меня такой же вопрос

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

Опишите подробней свою бизнес задачу.

Довольно странное поведение - открывать страницы после полной синхронизации. К тому же во время полной синхронизации может может изменится структура объектов

Для открытия страницы просмотра обычно используется такой метод:

Terrasoft.util.openPreviewPage("Contact", {
	recordId: contact.getId()
});

P.S. Метод Terrasoft.MobileSettingsPageControllerSyncManager.synchronize является @internal его нельзя использовать!

P.S.S. Класс Terrasoft.MobileSettingsPageControllerSyncManager является устаревшим, сейчас используют Terrasoft.SyncUtils

Наверное вам подойдет метод 

Terrasoft.SyncUtils.synchronizeData

 

Кривонос Максим,

здравствуйте, после сохранения изменения заказа, а именно изменения состояния заказа необходимо осуществлять синхронизацию приложения, что бы заказа сразу уходил в основную БД. После синхронизации нужно открыть этот же заказ на PreviewPage что бы было возможным осуществлять действия - http://prntscr.com/o9nbjt. Сразу скажу онлайн режим не подходит. Уже использую Terrasoft.SyncUtils.synchronizeData

Terrasoft.sdk.Model.setModelEventHandler("Order", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].update, 
	function(config) {
		var record = config.scope.eventConfig.records[0];
		if(record.modified.hasOwnProperty("Status")) {
			Terrasoft.util.Sync.synchronizeData({
				exportOnly: false ,
				isCancelable: true,
				checkIfSyncStarted: true,
				checkForPredefinedDatabase: false,
				ignoreNotifications: true,
				runType: Terrasoft.Sync.RunTypes.Background,
				redirect: true
			});
		}
	}
);

 

Возможно ли делать синхронизацию данных в фоновом режиме без перезагрузки приложения отправить измененный заказ в основную БД? Какие методы использовать?

 


 

Фоновая синхронизация доступна пока что только для Android. Чтоб она работала нужно включить системную настройку RunMobileSyncInService.

Запускать в фоне можно вот так:

Terrasoft.SyncUtils.synchronizeData({
    redirect: false,
    isCancelable: true,
    ignoreNotifications: true, 
    checkForPredefinedDatabase: false
});

Вам нужно дожидаться каких-то данных с сервера?

Кривонос Максим,

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

 

Смотрите какое поведение системы(делаю на эмуляторе):

подставил код который Вы написали выше - http://prntscr.com/o9ze1c

Синхронизация проходит без редиректа на основную страницу, но затем после сохранения записи не отрабатывают события, перехожу в другой раздел и затем обратно в раздел заказы и наблюдаю следующее - http://prntscr.com/o9zg5s

Как быть с таким поведением видимо что то где то перезатирается?

1) При подписке на события модели нужно в конце вызывать config.success

2) Если вы хотите что-то отображать пользователю то логику нужно реализовывать на карточке а не на объекте

3) у synchronizeData есть метод finish по идее он должен вызываться в конце

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Всем доброго времени суток!

Подскажите, есть ли метод синхронизации мобильного приложения в фоновом режиме. Т.е. например после сохранения заказа вызывать данный метод, и что бы синхронизировалось с основной БД без перезагрузки приложения?

У меня такой же вопрос

4 комментария

Или же необходимо после синхронизации делать редирект на preview страницу сохраненного Заказа.

Terrasoft.Configuration.WaSync = function(model, pageConfig) {
	Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({
		exportOnly:false ,
		checkForPredefinedDatabase: false,
		redirect: function() {
			//Terrasoft.util.openPreviewPage(model, pageConfig);
		}
	});
};
 
Terrasoft.sdk.Model.setModelEventHandler("Order", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].update, 
	function(config){
		debugger;
		var model = "Order";
		var record = config.scope.eventConfig.records[0];
		var pageConfig = {
			recordId: record.data.Id
		};
		Terrasoft.Configuration.WaSync(model, pageConfig);
	});

Terrasoft.util.openPreviewPage - не срабатывает!

См. документацию по расширению синхронизации.

Зверев Александр,

 это понятно, меня интересовало возможно ли синхронизировать данные без перезагрузки приложения и редиректа на главную страницу, а остаться на странице заказа. Или же после перезагрузки приложения открывать последний заказ. 

Написано:

Модули синхронизации являются внутренними (internal) классами и не подлежат расширению. Но часто возникает необходимость ограничить передаваемые во время синхронизации данные в соответствии с определенными правилами. Для этого была добавлена возможность управления этапами синхронизации с помощью класса управления.

Если возможностей синхронизации Вам не хватает, можно самостоятельно разработать логику, например, работая с основным сайтом по OData или обращаясь к самодельному веб-сервису, реализующему нужную логику, вроде сервиса оценки обращения.

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Вопрос:

Не удается синхронизировать почту/подключить новую почту к системе.  В настройках почтового провайдера использовались различные варианты параметров логина. Но система все равно пишет, что пароль указан неверно.

 

Ответ:

У сервисов почтового провайдера изменилась политика безопасности.

Например, чтобы корректно пользоваться почтой gmail через bpm'online, необходимо в учетной записи почты разрешить подключение сторонних программ.

Для разрешения подключения сторонних программ необходимо:

  1. Зайти в настройки аккаунта:

     

  2. Выбрать вкладку "Безопасность" 

     

  3. Дать разрешение на подключение сторонних программ 

     

Поделиться

1 комментарий

В некоторых случаях лучше использовать пароли приложений: https://support.google.com/accounts/answer/185833?hl=ru

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Всем доброго времени суток. Подскажите возможно ли реализовать вывод сообщения пользователю мобильного приложения при первом его запуске, после загрузки всех данных или после синхронизации? В какую сторону смотреть, на какие схемы? Заранее благодарен.

У меня такой же вопрос

3 комментария

Для вывода сообщения используется функция:

Terrasoft.MessageBox.Show({message:'текст',title:'заголовок'})

 

Зверев Александр,

Это понятно как выводить сообщения. Интересует вывод после завершения синхронизации данных.

Определить, загружались ли вообще по синхронизации данные, можно посредством:

!Ext.isEmpty(Terrasoft.CurrentUserInfo.lastSyncDate)

А первый или не первый раз, самому где-то хранить значение-флажок.

Войдите или зарегистрируйтесь, чтобы комментировать
Идея

Всем доброго времени суток.

Добавьте пожалуйста в список задач "досинхронизацию" данных в локальной бд, что имеется в виду - подтягивание недостающих данных по колонкам.

Запустили первичную синхронизацию в манифесте прописали некоторые колонки для синхронизации, данные синхронизировались, затем некоторое время спустя в бд добавили новую колонку и заполнили ее по всем записям, так же св-во добавили в манифест(http://prntscr.com/npb7yh) и при повторной синхронизации данные в локальной БД не подтягиваются - http://prntscr.com/npb7cp, нужно чистить кэш и заново синхронизировать все данные.

Проверял на эмуляторе v7.13.11

Очень неудобно.

Обсуждение
1 комментарий

Как ещё один обходной вариант, можно у всех записей раздела поменять дату изменения на дату после последней синхронизации. Тогда значения поля должны подтянуться. 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

На странице настройки синхронизации с LDAP одно из обязательных полей [Уникальный идентификатор пользователя]. По умолчанию заполняется значением ObjectSid. У меня возник вопрос: значения данного атрибута из AD хранятся где-нибудь в системе BPM Online? Если да, то в каком объекте и в каком поле. Насколько я понял, данные о пользователе AD хранятся в системе в объекте LDAPElement.

У меня такой же вопрос

3 комментария

Добрый день, Дмитрий.

Верно, это значение хранится в таблице LDAPElement - колонка LDAPEntryId.

Антон Малий,

Антон, добрый день! А подскажите, поле LDAPEntryDN в каком случае заполняется и как настроить его заполнение, если оно пустое?

Добрый день, Дмитрий.

В LDAPEntryDN хранится полный путь к пользователю в AD. Оно заполняется автоматически при синхронизации. Пустым оно не должно быть, так как по этому пути BPM ищет пользователя в AD.

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Вопрос

Настроили почту для регистрации обращений и система не регистрирует обращения с локального провайдера, а вот с mail.ru  регистрирует.  При этом в BPM письма не попадают, а если посмотреть в ящик не в BPM, то там они есть, отображаются как непрочитанные.

Ответ

Проблема возникает из-за того, что нарушены индексы папок на стороне почтового провайдера. Более детальная информация доступна по ссылкам: 

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте.
При синхронизации мобильного приложения в оффлайн-режиме во время импорта данных возникает ошибка "Unable to get property 'IsVirtual' of undefined or null reference". Упоминания 'IsVirtual' нашел только в нескольких схемах, не связанных с мобильным приложением. проблема возникает только при синхронизации с пользовательским рабочим местом. Основное рабочее место работает отлично.
Подскажите, пожалуйста, в чем может быть проблема?

Заранее спасибо!

Прикрепленные файлы
Log.txt221 байт
log.png29.71 КБ

У меня такой же вопрос

1 комментарий

Добрый день, Роман!

Судя по предоставленной информации у Вас используется не последняя версия мобильного приложения. Обновите её пожалуйста и проверьте работу функциональности.

Так же судя по ошибку Вы не выполнили первоначальную настройку рабочего места в мастере мобильного приложения. Необходимо открыть разделы и сохранить их. 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день.
Пытаюсь настроить синхронизацию с Google Calendar, но не получается...

1) Захожу в Активности -> Действия -> Синхронизировать активности -> Добавить аккаунт для синхронизации -> GMail
2) Открывается страница предоставления доступа к информации об аккаунте Google, жму кнопку Разрешить
3) Идет загрузка страницы с адресом https://google-social-app-v1.bpmonline.com:8443, но после нескольких секунд подключение срывается. Код ошибки: ERR_CONNECTION_CLOSED

Все делал по инструкции https://academy.terrasoft.ru/documents/marketing/7-9/registraciya-priloz...
В разрешенных URL и URI перенаправления: см. скриншот

Как починить? :)
Заранее большое спасибо!

У меня такой же вопрос

4 комментария

Чуть подробнее.

Все делал по инструкции https://academy.terrasoft.ru/documents/marketing/7-9/registraciya-prilo…

В разрешенных источниках JavaScript и URI перенаправления указал: см. скриншот

Здравствуйте, Павел!

По указанной Вами ссылке находится инструкция для настройки синхронизации приложения развернутого on-site.
Инструкция по настройке для приложений развернутых в облаке находится по ссылке: https://academy.terrasoft.ru/documents/marketing/7-9/nastroyka-sinhroni…

Для корректной настройки Вам необходимо удалить указанные Вами значения из системных настроек «Ключ для доступа к сервисам Google» и «Секретный ключ для доступа к сервисам Google». Затем выполнить все шаги настройки по ссылке выше.

Также, обращаю Ваше внимание, что если в Вашем аккаунте Google была ранее настроена синхронизация с приложением bpm’online, то Вам необходимо удалить из настроек аккаунта уже добавленное приложение bpm'online social. Это можно сделать в меню «Связанные приложения и сайты» раздела «Безопасность и вход» настроек аккаунта Google.

Добрый день.
Спасибо за ответ, но к сожалению это не помогло.

Проблема вот в чем, когда я нажимаю "Добавить аккаунт для синхронизации" и после этого нажимаю кнопку "Разрешить" ничего не загружается больше (см. скриншот) В настройках аккаунта Google приложение bpm'online social не появляется.

Интернет подключен напрямую, ничего не запрещено нигде, пробовал с разных компьютеров и с разными почтовыми адресами, но и это тоже не помогает.

Прошу помочь, очень уж нужно это сделать в ближайшее время
Заранее спасибо!

Здравствуйте, Павел!

Для решения данной проблемы рекомендуем вам обратиться на support@terrasoft.ru.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте! Подскажите пожалуйста, можно ли сделать двухстороннюю синхронизацию контактов gmail с террасофт и каким путем идти? Версия террасофт 3.4.0. Синхронизация контактов outlook и gmail работает через стороннее приложение, так что думаю на крайний случай можно подтягивать для синхронизации outlook. Спасибо!

У меня такой же вопрос

3 комментария

В Terrasoft есть интеграция контактов с Outlook. Как её настроить и использовать, см. обе инструкции на стр. 133.

спасибо! А именно для gmail есть варианты?

Есть интеграция с Outlook, а что там используется для наполнения контакктов, Gmail или Exchange — разницы нет.
Прямая интеграция с контактами Google есть только в полностью новой версии 7.Х (видео).

Войдите или зарегистрируйтесь, чтобы комментировать