Симптомы

При подключении на on-site получается следующая ошибка (браузер старой версии) :

ServiceStack.Redis.RedisResponseException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error., sPort: 53192, LastCommand: \\r\\n в ServiceStack.Redis.RedisNativeClient.CreateResponseError(String error)\\r\\n в ServiceStack.Redis.RedisNativeClient.ReadInt()\\r\\n в ServiceStack.Redis.RedisNativeClient.Expire(String key, Int32 seconds)\\r\\n в ServiceStack.Redis.RedisClient.ExpireEntryIn(String key, TimeSpan expireIn)\\r\\n в Terrasoft.Redis.RedisSessionStateStoreProvider.ResetItemTimeout(HttpContext context, String id)\\r\\n в System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData)\\r\\n в System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication

Причина

Данная ошибка связана из-за пользовательских настроек работы Redis на сервере.

Решение

Более детально можете ознакомиться с ошибкой на сторонних сервисах. Например:

http://stackoverflow.com/questions/19581059/misconf-redis-is-configured-to-save-rdb-snapshots;

http://stackoverflow.com/questions/19873048/redis-is-configured-to-save-rdb-snapshots-but-is-currently-not-able-to-persist;

https://gist.github.com/kapkaev/4619127.

Для корректной работы используйте мобильную версию приложения. Через мобильный браузер мы не гарантируем корректную работу приложения.

Нравится

Поделиться

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

Симптомы

В процессе синхронизации произошла ошибка%0D%0A%0D%0AТип: Terrasoft.ServerException%0D%0AСообщение: Запрос на сервер вернул ошибку%0D%0AДополнительная информация: %0D%0A%09{"requestUri":"https://tatpharm.bpmonline.com/0/ServiceModel/EntityDataService.svc/ProductLineCollection/$count/?$filter=((CreatedOn ge datetime'2015-06-22T17%3A38%3A02%2B06%3A00' or ModifiedOn ge datetime'2015-06-22T17%3A38%3A02%2B06%3A00'))","statusCode":404,"statusText":"Not Found","headers":[],"body":"\r\n\r\n    \r\n        The resource cannot be found.

Причина

Объект на который ссылаемся уже удален или перемещен.

Решение

Для решения вопроса с ошибкой синхронизации мобильного приложения нужно:

1. Синхронизироваться, убедится, что в настройках стоит корректная дата и время последней синхронизации (соответствует текущему).

2. Выполнить очистку кэша мобильного приложения (нажав на соответствующую кнопку «Очистить кэш». Если такой кнопки внизу не будет, то сперва нужно выполнить демо-вход – соответствующая кнопка внизу под авторизационными данными, после чего уже очистку кэша).

Изображение удалено.

3. Повторно синхронизироваться.

Нравится

Поделиться

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

Симптомы

При переходе в раздел:

Type: Terrasoft.SourceCodeException 

Message: Uncaught TypeError: Cannot read property 'getComponent' of undefined 

AdditionalInfo: Script: file:///storage/emulated/0/BPMonline700/AppStructure/rev_0/src/MobileSocialMessageGridPageController.js?hash=c73dfb1d-eca1-40b3-8d5c-c6de590f5a6c%0D%0A%09Line: 160 

Stack trace: 

    at Ext.define.showException (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:39893:41

    at Ext.define.showUncaughtException (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:3461:25

    at Ext.define.onWindowError (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:2987:18

Причина

Не хватает в манифесте компонентов.

Решение

Кейс 1:

Необходимо было в манифесте мобильного приложения подключить схемы, которые отвечают за раздел "Лента" для рабочего места "Support". 

-       MobileSocialMessageActionsSettingsSupport;

-       MobileSocialMessageGridPageSettingsSupport.

А также убрать соотвествующие схемы только которые относятся к основного рабочему месту, а не к "Support".

-       MobileSocialMessageGridPageSettingsDefaultWorkplace;

-       MobileSocialMessageRecordPageSettingsDefaultWorkplace.

Изображение удалено.

Нравится

Поделиться

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

Симптомы

Terrasoft.Exception%0D%0AСообщение: Произошел таймаут при определении текущих координат%

Причина

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

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

В зависимости от устройства, определение местоположения может выполнятся следующими сервисами:

  • Встроенный в устройство GPS
  • Google-сервисами посредством использования Wi-Fi
  • Использованием технологии A-GPS, в случае если устройство поддерживает данное устройство.

Наиболее надежным способом является определение местоположение с помощью сети Wi-Fi, в случае, если устройству удалось залогинится в сеть.

Наиболее распространённым способом является определение координат по GPS. Но работа самого GPS на устройстве может выполнятся со сбоями, например:

- Функция GPS была принудительно отключена на устройстве

- В момент запроса координат нет сигнала от спутников

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

- Существуют радио-помехи для определения координат

 

Немного о влиянии внешних факторов на качество сигнала:

Уровень приёма сигнала от спутников, а как следствие и точность определения координат, ухудшается под плотной листвой деревьев или из-за очень большой облачности. Также нормальному приёму сигналов GPS могут повредить помехи от многих наземных радиоисточников. Однако, главным фактором, влияющим на снижение точности GPS, является неполная видимость небосвода. Особенно ярко это проявляется при нахождении GPS приемника в условиях плотной городской застройки, когда значительная часть небосвода скрыта рядом расположенными строениями, навесами и прочими препятствиями.

Стоит принять во внимание что сообщение о сбое определения местоположения не является ошибкой приложения и не влияет на ее работоспособность – система предупреждает о причине, по которой ей не удалось заполнить поле с координатами места выполнения активности.

Решение

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

Если пользователь использует мобильное устройство на ОС Android, проблема может быть связана особенностью некоторых версий ОС. Для решения следует перезагрузить мобильное устройство.

Если ошибка осталась, то уточните, пожалуйста, следующие моменты:

1. Какие опции включены в настройках геолокации на устройстве (Рис. 1-3);

Изображение удалено.

Рис. 1

Изображение удалено.

Рис. 2

Изображение удалено.

Рис. 3

2. Выполнялись действия в помещении или на улице?

3. Делалась ли попытка повторно начать визит?

Если в помещении, котором делались действия есть wifi и устройство нормально к нему подключено, но в настройках указано «Использовать только GPS», то в результате этого может возникать ошибка

Нравится

Поделиться

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

Вопрос

По поводу ошибки при работе с мобильной версией приложения:

Ошибка HTTP 405.0 - Method Not Allowed. Разыскиваемая вами страница не может быть отображена потому, что используется недопустимый метод (команда HTTP).

Полный bug report:

Type: Terrasoft.ServerException 

Message: Запрос на сервер вернул ошибку 

 

<legend>Наиболее вероятные причины:</legend> \n  <ul> \t<li>В запросе, направленном на веб-сервер, использовалась команда HTTP, не допускаемая модулем, настроенным для обработки запроса.</li> \t<li>На сервер был послан запрос, содержащий недействительную команду HTTP.</li> \t<li>Этот запрос к статическому содержимому содержит команду HTTP, отличную от GET и HEAD.</li> \t<li>В виртуальный каталог был направлен запрос с использованием HTTP-команды POST; между тем, используемый по умолчанию документ представляет собой статический файл, не совместимый с командами HTTP кроме команд GET и HEAD.</li> </ul> \n </fieldset> \n</div> \n<div class=\"content-container\"> \n <fieldset><legend>Что можно предпринять:</legend> \n  <ul> \t<li>Проверьте список команд, активированных для обработчика модуля, куда был направлен этот запрос, и позаботьтесь о том, чтобы эта команда могла беспрепятственно попасть на веб-сайт.</li> \t<li>Просмотрите журнальный файл IIS и определите, какая команда не может использоваться в запросе.</li> \t<li>Создайте правило трассировки, чтобы отслеживать невыполненные запросы для этого кода состояния HTTP. Чтобы получить дополнительные сведения о создании правила трассировки для невыполненных запросов, щелкните
 
Наиболее вероятные причины:
В запросе, направленном на веб-сервер, использовалась команда HTTP, не допускаемая модулем, настроенным для обработки запроса. 
На сервер был послан запрос, содержащий недействительную команду HTTP. 
Этот запрос к статическому содержимому содержит команду HTTP, отличную от GET и HEAD. 
В виртуальный каталог был направлен запрос с использованием HTTP-команды POST; между тем, используемый по умолчанию документ представляет собой статический файл, не совместимый с командами HTTP кроме команд GET и HEAD.
 
Возможные решения:
Проверьте список команд, активированных для обработчика модуля, куда был направлен этот запрос, и позаботьтесь о том, чтобы эта команда могла беспрепятственно попасть на веб-сайт.
Просмотрите журнальный файл IIS и определите, какая команда не может использоваться в запросе.
Создайте правило трассировки, чтобы отслеживать невыполненные запросы для этого кода состояния HTTP. Чтобы получить дополнительные сведения о создании правила трассировки для невыполненных запросов, щелкните здесь

 

Ответ

Данная настройка может возникать из-за некорректных настроек IIS на сервере.

Для решения необходимо в web.config приложения внести изменения:

<system.webServer>
    <modules>
        <remove name="WebDAVModule" />
    </modules>
    <handlers>
        <remove name="WebDAV" />
    </handlers>
</system.webServer>

 

Нравится

Поделиться

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

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

Существует ли инструмент, с помощью которого в мобильном приложении можно изменить тип поиска с "Начинается с" на "Содержит"?

Нравится

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

Алексей, здравствуйте!

К сожалению, на данный момент в мобильном приложении нет пользовательской настройки изменения поиска (без использования процентов %) в быстром фильтре. Данную задачу можно реализовать только доработкой базовой логики, необходимы навыки программирования (хотим заметить, что в Ваш пакет поддержки не входят консультации по разработке).



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



Вы можете попробовать самостоятельно изменить логику.



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

Вам необходимо:

- если не создан, то создать пользовательский манифест мобильного приложения (информация есть на SDK - https://academy.terrasoft.ru/documents/technic-sdk/7-11/manifest-mobilnogo-prilozheniya, просьба ознакомиться). Проще всего будет его создать если зайти в мастер мобильного приложения и сохранить текущие настройки;

- прописать в корне манифеста, в отдельную секцию - http://prntscr.com/hfwdpf:

 

"PreferedFilterFuncType": 'Terrasoft.FilterFunctions.SubStringOf',

 

- сохранить изменения;

- очистить кэш и провести первичную синхронизацию;

- в результате должно работать согласно бизнес-задаче - http://prntscr.com/hgci19.

 

По умолчанию название манифеста MobileApplicationManifestDefaultWorkspace, но если это пользовательское рабочее место, то приблизительное имя в конфигурации будет MobileApplicationManifest[название рабочего места].

Примечание. Заметьте, какое рабочее место Вы используете в мобильном устройстве и в какой манифест Вы добавляете код. Убедитесь, что Вы просинхронизированы с тем рабочим местом.



Также об этом параметре ("Terrasoft.FilterFunctions.SubStringOf") было описано на Академии -https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/manifest-svoystva-dannyh-i-biznes-logiki.

Дмитрий, огромное спасибо!

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

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

В web-клиенте реализован бизнес-процесс. Как обеспечить запуск данного процесса в мобильном клиенте?

Нравится

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

На мобильном процессы не запускаются. После синхронизации записи с телефона в основную базу процесс запустится там.

Бизнес процессы запускаются и выполняются на сервере, а не на клиенте. А запустить БП из мобилки можно попробовать при помощи ProcessEngineService.svc - это сервис, который позволяет запускать БП сторонним приложениям. По ссылке статья в Академии по этому сервису.

https://academy.terrasoft.ru/documents/technic-sdk/7-12/web-servis-proc…

Вызвать сервис из мобильного приложения можно так вызвать:

Terrasoft.AuthService.login({
    name: Terrasoft.CurrentUserInfo.login,
    password: Terrasoft.CurrentUserInfo.password,
    success: function () {
 
        Ext.Ajax.request({
            method: "POST",
            url: Terrasoft.CurrentUserInfo.serverUrl + '/0/rest/ServiceName/MethodName',
            scope: this,
            jsonData: { 
                // Параметры. Названия такие же, как и названия параметров в методе сервиса.
            },
            success: this.onRequestSuccess,
            failure: this.onRequestFailure
        });
    },
    failure: function (e) {
        Terrasoft.Mask.hide();
        Terrasoft.MessageBox.showMessage("Не удалось выполнить авторизацию.");
    },
    scope: this
});

 

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

Симптомы

Type: Terrasoft.SourceCodeException

Message: SyntaxError: Unexpected identifier 'Invoices'. Expected '}' to end a object literal.

Additional information:

Script: file:///var/mobile/Containers/Data/Application/5971FB51-E199-46E3-8004-22E3199C246B/Documents/BPMonline700/AppStructure/rev_1/src/UsrInvoicesType.js?hash=c033cb8c-ace4-4766-b865-88fc6882274f%0D%0A%09Line: 8 

Причина

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

Решение

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

На данный момент обходным решением является следующее:

  1. зайти в конфигурацию;
  2.  открыть схему UsrInvoicesType;
  3. Поменять ей кепшн так, чтоб в нем не было двойных кавычек

 например так: Section object type 'Invoices'

Необходимые условия и возможные ограничения

Права администратора

Нравится

Поделиться

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

Вопрос

В мобильном приложении я вижу только 1 продажу. Она создана Supervisor'ом, почему я не вижу остальные продажи?

Ответ

В продукте bpmonline sales omnichannel для раздела продаж у нас используется следующая базовая логика:

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

Это сделано для экономии памяти и уменьшения времени синхронизации

2) В мобильном приложении в разделе «Продажи» данные также фильтруются еще по условию Стадия продажи.Конечная = ЛОЖЬ

Это сделано для удобства – пользователь видит в одном списке все свои не завершённые задачи.

(если поле стадия пустое, то такая продажа также не попадет в этот реестр)

При этом все такие продажи хранятся в базе мобильного приложения и к ним можно перейти из других разделов, например, из «Активностей» посмотреть связанную продажу

Нравится

Поделиться

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

Добрый час суток! Имеется деталь,в таблице есть 1 запись при загрузке детали - все ок отображается. Когда добавляется новая запись в таблицу,нужно,чтобы это (вторая) запись тоже появилась(первая остается). Подскажите как это можно сделать? пока привязался к 

    this.getView().fireEvent("startrefresh", this); Но работает оно не совсем так,как нужно(не затрагивается все методы,при просто заходе на детали и много чего теряется). Переопределять все это дело довольно таки долго. Подскажите пожалуйста,какая альтернатива этому? Деталь своя. Пока пробую искать подобный функционал на стандартной детали,но пока не нахожу события,которое необходимо.(динамически добавлять запись ). Спасибо!

Нравится

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

me.fireAction('refresh', [me], 'doRefresh'); вот это тоже не совсем помогло... оно добавило новую запись(которая появилась в базе),но предыдущая информация введенная(на старой,самой первой записи) не подтягивается,генерируется просто новая такая запись по шаблону и добавляется та,которая добавилась в базу. они оба "чистые"(при том что в базе информация хранится).

Никита, здравствуйте!

А чем Вам не нравится свайп вниз? Я правильно понял, что Вы хотите автообновление детали при добавлении новой записи?

Вильшанский Дмитрий пишет:

Никита, здравствуйте!

А чем Вам не нравится свайп вниз? Я правильно понял, что Вы хотите автообновление детали при добавлении новой записи?

 Добрый! Дело в том,что мне нужно чтобы при нажатии на клавишу добавлялась запись в бд,и сразу же появлялась на странице,добавлять то она добавляется но свайпить вниз не хочется,я попробовал "взять" функционал оттуда,но он не емулируется.. А вообще да,автообновление детали при добавлении новой записи. Деталь кодом добавлял свою,не стандартная(+GridPage+ PreviewPage так же

)

Вильшанский Дмитрий,А есть другая альтернатива ?

Никита Гальченко,

В базовой версии уже реализовано обновление записи при базовых действиях (например, сохранение или удаление).

Для примера можете посмотреть как реализовано при сохранении (нужный "кусок" кода выделил): 

 

completeDataSaving: function(operation) {

   this.callParent(arguments);

   var pageHistoryItem = this.getPageHistoryItem();

   var pageConfig = pageHistoryItem.getRawConfig();

   var record = this.record;

   var operationConfig = this.createPageOperationConfig(operation);

   var useOptimisticEditing = this.useOptimisticEditing();

   if (useOptimisticEditing) {

      Terrasoft.PageNavigator.refreshPreviousPages(operationConfig, pageHistoryItem);

   } else {

      Terrasoft.PageNavigator.markPreviousPagesAsDirty(operationConfig);

   }


   var shouldOpenPreviewPageOnSave = this.shouldOpenPreviewPageOnSave();

   if (shouldOpenPreviewPageOnSave) {

      Terrasoft.util.openPreviewPage(this.self.Model, {recordId: record.getId(), isStartRecord: true,

         direction: "right", operationConfig: operationConfig});

   } else {

      Terrasoft.Router.back();

   }

   if (pageConfig) {

      Ext.callback(pageConfig.onDataSaved, this, [record]);

   }

},

Вильшанский Дмитрий,

Спасибо большое! Буду разбираться!

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