Symptoms

Terrasoft.Exception% 0D% 0A Message: A timeout occurred while determining the current coordinates%

There was a problem with determining the location when the error has occurred.

When determining the current location, a time-out message is displayed if the system could not determine the coordinates using any available services.

Depending on the device, your location can be determined by the following services:

  • A built-in GPS device
  • Google services using Wi-Fi
  • Using A-GPS technology in case the device supports it.

The most reliable way is to determine the location using a Wi-Fi network.

The most common method is to determine the coordinates is using GPS, however GPS in itself is not failproof, for example:

- GPS is turned off

- No satellite signal at the time of the request

- Signal from the satellite is weak

- Radio interference

About the influence of external factors on the signal quality: 

The level of signal reception from satellites is lower if there is dense foliage of trees in its way or due to very large clouds. Also, the normal reception of GPS signals can be prevented by interference from radio sources. However, the main factor affecting the decrease in GPS accuracy is the incomplete visibility of the sky - this occurs when a GPS receiver is located in a dense urban environment in which a significant part of the sky is hidden by nearby buildings, sheds, and other obstacles.

It is important to note that a message about a location failure is not an application error and does not affect its performance. The mobile app simply alerts the user that it wasn't able to determine the location for an activity, for example. 

Solution

Wait for the GPS signal to recover and re-synchronize. If you are using Android, try restarting your mobile device (this error may occur due to nuances of certain mobile OS versions). If you still see an error, check the following:

1.  What options are included in the geolocation settings on the device (Fig. 1-3):

Fig.1 

Fig.2

Fig. 3

2. Were you indoors or outdoors when the error has occurred?

3. Did the error still occur when you tried to create a visit once more?

If your device is normally connected to WiFi, but the settings indicate “Use GPS only”, then this error may occur as well.

 

 

Like 0

Like

Share

0 comments
Show all comments

Symptoms

Type: Terrasoft.SyncException%0D%0AMessage: There was a synchronization error%0D%0A%0D%0AType: Terrasoft.FileException%0D%0AMessage: An error occured while opening the file%0D%0AAdditional information: %0D%0A%09Name: BPMonline700/AppStructure/rev_29/src/MobileContactAnniversaryEditPage.js%0D%0A%0D%0AType: Terrasoft.FileSystemException%0D%0AMessage: Object not found%0D%0AAdditional information: %0D%0A%09Code: 1%0D%0A%0D%0A

Solution

In the mobile application, perform the following actions:

  1. Clear cache.
  2. Re-synchronize.
Like 0

Like

Share

0 comments
Show all comments

Question

Regarding the error when working with the mobile version of the application:

HTTP Error 405.0 - Method Not Allowed. The page you are looking for cannot be displayed because an invalid method is used (HTTP command).

Full bug report:

Type: Terrasoft.ServerException

Message: Request for server returned error

<legend> Most likely reasons: </ legend> \ n <ul> \ t <li> The request sent to the web server used the HTTP command that was not allowed by the module configured to process the request. </ li> \ t < li> A request was sent to the server containing an invalid HTTP command. </ li> \ t <li> This request for static content contains an HTTP command other than GET and HEAD. </ li> \ t <li> The request was sent to the virtual directory using the HTTP POST command; meanwhile, the default document is a static file that is not compatible with HTTP commands other than the GET and HEAD. </ li> </ ul> \ n </ fieldset> \ n </ div> \ n <div class = \ "content-container \"> \ n <fieldset> <legend> What can be done: </ legend> \ n <ul> \ t <li> Check the list of commands activated for the module handler with this request and ensure that this command can easily reach the website. </ li> \ t <li> View the IIS log file and determine which command cannot be used in the request. </ li> \ t <li> Create a trace rule to track failed requests for this HTTP status code. For more information about creating a trace rule for failed requests, click Most likely causes: The request sent to the web server used the HTTP command that was not allowed by the module configured to process the request. A request was sent to the server containing an invalid HTTP command. This static content request contains an HTTP command other than GET and HEAD. A request was sent to the virtual directory using an HTTP POST command; meanwhile, the default document is a static file that is not compatible with HTTP commands other than the GET and HEAD. Possible solutions: Check the list of commands activated for the module handler where this request was sent, and make sure that this command can reach the website. Review the IIS log file and determine which command cannot be used in the request. Create a trace rule to track back requests for this HTTP status code. For more information on creating a trace rule for failed requests, click here.

Solution

This error may occur due to incorrect IIS settings on the server.

To fix this, add the following code to the web.config file:

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

 

Like 0

Like

Share

0 comments
Show all comments

Symptoms

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 

Cause

The title of the Activity includes double quotation marks, but at the present moment, the system does not know how to process them.

Solution

The ability to work with double quotation marks will be implemented in the next versions of bpm'online. At the moment, a workaround is the following:

1. Go to the configuration

2. Open the UsrInvoicesType schema

3. Change its caption so that it does not have double quotation marks

For example, Section object type 'Invoices'

Necessary conditions

Admin rights.

Like 0

Like

Share

0 comments
Show all comments

Question

In the mobile app, I only see a single opportunity created by the Supervisor user. Why I do not see the rest?

Answer

In bpmonline sales omnichannel (the "Opportunities" section), we use the following base logic:

1) While synchronizing, the mobile app only downloads opportunity records for the current user.

This is done to save memory and reduce synchronization time.

2) The data is filtered by the "Opportunity stage.Final = FALSE" condition in the “Opportunities” section of the mobile app.

This is done for convenience - the user only sees all his incomplete tasks.

Note: If the "Stage" field is empty, the opportunity will not be displayed at all. 

At the same time, such opportunities are stored in the mobile application and can be accessed from other sections (for example, from the “Activities” section to view the related opportunity record).

Like 0

Like

Share

0 comments
Show all comments

Symptoms

Uncaught TypeError: Cannot read property 'PrimaryColumnName'

Cause

The "Products" section has been added through the mobile application wizard

Solution

It is necessary to make changes to the "Products" section, namely re-saving the list and card settings.

Necessary conditions

Admin rights

 

Like 0

Like

Share

0 comments
Show all comments

Symptoms

When I set up the mobile app, all objects work fine, except for "Activity". When I try to access an activity, the following error is displayed - Uncaught TypeError:Cannot read property “modelName” of undefined.

I tried to delete all columns to add them again (thought maybe the "Type" column is causing this issue) - it didn't work. 

Once I changed the settings, I re-distributed access rights, cleared the cache and re-synchronized with the database. 

Solution

Some of the fields were removed on the activity card, and, most importantly, the “Participants” detail was removed. This detailed is required for correct operation of the "Activities" section.

By default, bpm'online only syncs the activities with the current user specified on the “Participants” detail.

If this detail is removed, the activities may not sync correctly.

A workaround for deleted objects used in parent packages:

- Create a custom schema (e.g., "MobileUtilitiesCustom").

Ext.define("Terrasoft.sdk.RecordPageMetadataApplier.Override", {
 
                override: "Terrasoft.sdk.RecordPageMetadataApplier",
 
 
 
                addEmbeddedDetail: function(modelName, operation) {
 
                               this.embeddedDetails[operation.name] = operation.values;
 
                               var values = operation.values;
 
                               var filter = values.filter;
 
                               var detailName = operation.name;
 
                               Terrasoft.sdk.RecordPage.addEmbeddedDetail(modelName, {
 
                                               name: detailName,
 
                                               title: values.caption,
 
                                               position: values.position,
 
                                               modelName: values.entitySchemaName,
 
                                               primaryKey: filter.masterColumn,
 
                                               foreignKey: filter.detailColumn,
 
                                               hidden: values.hidden
 
                               });
 
                },
 
 
 
                applyMetadata: function() {
 
                               this.callParent(arguments);
 
                               for (var itemName in this.removedMetadataItems) {
 
                                               if (!Terrasoft.util.isGuid(itemName) && Terrasoft.util.String.contains(itemName, "EmbeddedDetail")) {
 
                                                               this.addEmbeddedDetail(this.modelName, {
 
                                                                              name: itemName,
 
                                                                              values: {
 
                                                                                              entitySchemaName: itemName.substring(0, itemName.indexOf("Detail")),
 
                                                                                              filter: {
 
                                                                                                              masterColumn: "Id",
 
                                                                                                              detailColumn: "Id"
 
                                                                                              },
 
                                                                                              hidden: true
 
                                                                              }
 
                                                               });
 
                                               }
 
                               }
 
                }
 
});
 
 
 
Terrasoft.sdk.RecordPage.configureColumn = function(model, columnSetName, columnName, columnConfig) {
 
                var modelConfig = Terrasoft.ApplicationConfig.getModelConfig(model);
 
                var columnSetConfig = modelConfig.columnSets.get(columnSetName);
 
                if (!columnSetConfig) {
 
                               return;
 
                }
 
                var columnSetColumns = Terrasoft.sdk.RecordPage.getColumns(model, columnSetName);
 
                if (!columnSetColumns) {
 
                               return;
 
                }
 
                var columnSetColumn = columnSetColumns.get(columnName);
 
                var columnOriginalConfig;
 
                if (columnSetColumn) {
 
                               columnOriginalConfig = columnSetColumn.columnOriginalConfig;
 
                } else {
 
                               columnOriginalConfig = {};
 
                               columnConfig.hidden = true;
 
                               var modelInstance = Ext.ClassManager.get(columnSetConfig.modelName || model);
 
                               var realModelColumnConfig = modelInstance.ColumnConfigs.get(columnName);
 
                               columnConfig.columnType = realModelColumnConfig.columnType;
 
                               columnConfig.name = columnName;
 
                }
 
                Ext.merge(columnOriginalConfig, columnConfig);
 
                var contextModel = columnSetConfig.modelName || model;
 
                if (columnConfig.hidden) {
 
                               var columns = this.getColumnSetColumns(model, columnSetName);
 
                               columns.remove(columnName);
 
                } else {
 
                               var resolvedColumnConfig = this.resolveColumnConfig(contextModel, columnOriginalConfig,
 
                                                               !!columnSetConfig.modelName);
 
                               columnSetConfig.columns.configure(columnName, resolvedColumnConfig);
 
                }
 
};
 
 
 
Terrasoft.sdk.RecordPage.addColumn = function(model, columnConfig, columnSetName) {
 
                var modelConfig = Terrasoft.ApplicationConfig.getModelConfig(model);
 
                if (!columnSetName) {
 
                               columnSetName = modelConfig.primaryColumnSetName;
 
                }
 
                var columnSetConfig = modelConfig.columnSets.get(columnSetName);
 
                if (!columnSetConfig) {
 
                               return;
 
                }
 
                var contextModel = columnSetConfig.modelName || model;
 
                var isEmbeddedDetail = !!columnSetConfig.modelName;
 
                if (!columnConfig.hidden) {
 
                               columnSetConfig.columns.add(this.resolveColumnConfig(contextModel, columnConfig, isEmbeddedDetail));
 
                }
 
                this.addColumnToQueryConfig(model, columnConfig.name, columnSetName, isEmbeddedDetail);
 
                if (columnConfig.displayColumn) {
 
                               this.addColumnToQueryConfig(model, columnConfig.displayColumn, columnSetName, isEmbeddedDetail);
 
                }
 
};

- In the mobile application manifest (e.g., "UsrMobileApplicationManifestCustomMobile") specify the custom schema.

Like 0

Like

Share

0 comments
Show all comments

Symptoms

An error occurs while adding the "Feed" section to the new workplace in the mobile application wizard.

Solution

1. Add the following code in the schema settings of the "Feed" section grid (UsrMobileSocialMessageGridPageSettingsSupervisorworkplace):

{
    "operation": "insert",
    "name": "e0de54d7-b417-42b1-8081-36337aa344a1",
    "values": {
        "row": 0,
        "content": "Created by",
        "columnName": "CreatedBy",
        "dataValueType": 1,
        "operation": "insert"
    },
    "parentName": "settings",
    "propertyName": "items",
    "index": 1
}

2. Change the Message column proprety ("row") to "1" in the settings above. 

"row": 1,

 

Like 0

Like

Share

0 comments
Show all comments

Question

How do I configure the frequency of automatic data synchronization in a mobile application?

Answer

The mobile application supports three types of synchronization:



Offline - to perform synchronization, you must click the sync button.

Offline synchronization in the background - starts when the bpm’online mobile application is minimized and only if the “Automatic synchronization” setting corresponds to the current status of the Internet connection.

Online - synchronization occurs during every interaction with a record in the mobile appication.

About filters that apply to displayed activities:

  • Activity must not be closed
  • Non-email activity
  • The user of the mobile application is in the activities.

Also, the filters of the mobile application interface are applied:

Activity date - depending on the filter set by date

"Display in schedule" checkbox

Like 0

Like

Share

0 comments
Show all comments

Question

How to implement a search for multiple columns in a section?

For example, in the Contacts section, search by full name and zip code (the column in the Contact object).

Answer

- Launch the mobile app wizard

- Open default workplace (“Main workplace”)

- Go to section settings

- Click "Save"

- Create ClientUnit schema

- Add the following code to it:

Terrasoft.sdk.GridPage.setSearchColumns("Contact", [“Name”, “Zip”]);

- Open MobileApplicationManifestDefaultWorkplace in the Custom package

- Register your schema for the “Contacts” section:

{
    “Models”: {
        “Contact”: {
            "PagesExtensions": [
                "Name_of_the_schema"
            ]
        }
    }
}

 

Like 0

Like

Share

0 comments
Show all comments