Symptoms

BPM 7.6.0.838 onSite mobile application does not work

Solution

Most likely you have not updated the database structure.

To update the database structure in the browser, you must:

- Close all instances of Chrome;

- Go to the folder in which Chrome stores local data: C:\Users\[USERNAME]\AppData\Local\Google\Chrome\User Data\Default;

- Delete the contents of the following folders:

C:\Users\[USERNAME]\AppData\Local\Google\Chrome\User Data\Default\File System

C:\Users\[USERNAME]\AppData\Local\Google\Chrome\User Data\Default\databases

- Restart Chrome using startchrome.bat (in the Mobile folder with the source code of the mobile application);

- Run the mobile application in the browser.

As a result, Chrome will create a local database with all the necessary tables from scratch (including new columns).

Additionally, please ensure that the latest Framework is installed on the server.

Like 0

Like

Share

0 comments
Show all comments

Question

How can I get into the local database of a mobile application emulator?

For example, to see what data is exchanged during offline synchronization.

Answer

Physically, the file is here - ... \7.11.7\ChromeUserData\Default\databases\file__0, but you will not be able to open it with custom tools due to encryption. 

There are two options:

Open the console in the browser (after synchrobnization), go to the "Application" tab, expand the list of databases in Web SQL and select the bpm'online database. As a result, you'll be able to write SQL queries and see a list of all tables.

More information can be found in a separate article - https://developers.google.com/web/tools/chrome-devtools/manage-data/loc…

- find an extension for Firefox that can work with SQLlite (you can find it on third-party resources).

Like 0

Like

Share

0 comments
Show all comments

Symptoms 

Type: Terrasoft.SyncException%0D%0AСообщение: В процессе синхронизации произошла ошибка%0D%0A%0D%0AТип: Terrasoft.ServerException%0D%0AMessage: Request for server returned an erro%0D%0AAdditional information: %0D%0A%09{"request":{"id":6,"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Requested-With":"XMLHttpRequest"},"options":{"url":"http://xxx.xxx.xxx.xxx/0/Services/ProfileService.asmx/Logout","method":"POST","jsonData":{"customData":"","doLogout":"true"},"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"disableCaching":false,"scope":{"initialConfig":{"url":"http://xxx.xxx.xxx.xxx/0/Services/ProfileService.asmx/Logout","method":"POST","jsonData":{"customData":"","doLogout":"true"},"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"disableCaching":false},"performanceCounter":{"startDate":"2015-06-08T12:11:51.319Z"}}},"async":true},"requestId":6,"status":500,"statusText":"Internal Server Error","responseText":"System.InvalidOperationException: Request format is invalid: application/json.\r\n   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()\r\n   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()\r\n","responseXML":null,"responseBytes":null}%0D%0A%0D%0A

Cause

A problem in IIS settings.

Solution

Go to the IIS settings - Handler Mappings module

Find the rules for files with * .asmx extension with the following names:

"WebServiceHandlerFactory-Integrated"

"WebServiceHandlerFactory-ISAPI-2.0_32bit"

"WebServiceHandlerFactory-ISAPI-2.0_64bit"

and delete all of them.

Like 0

Like

Share

0 comments
Show all comments

Question

How to remove the action in the mobile application and how you can sort the actions?

Answer

Approximate algorithm.



1. You need to create your own module (for example,"TestOrderRemoveMobileAccountModuleConfig")

2. To delete an action, use the following method - Terrasoft.sdk.Actions.remove: function (model, actionName)

For example:

Terrasoft.sdk.Actions.remove("Account", "addAccountAnniversary");

3. Use the following code to sort:

Terrasoft.sdk.Actions.setOrder("model ", {
    "actionName1": 0,
    "actionName2": 1,
    …,
    "actionName5": 4
});

For example:

Terrasoft.sdk.Actions.setOrder("Account", {
    "Phone": 0,
    "Email": 1,
    "Meeting": 2,
    "Terrasoft.ActionCopy": 3,
    "Terrasoft.ActionDelete": 4
});
 

4. Then connect it in the user manifest of the mobile application (available on our SDK) in the “Models” section for the “Account” object (if they are accounts) in the “PagesExtensions” section. For example:

 

"Models": {
    "Account": {
        "RequiredModels": [],
        "ModelExtensions": [],
        "PagesExtensions": [
            "TestOrderRemoveMobileAccountModuleConfig"
        ]
    },
 

Where TestOrderRemoveMobileAccountModuleConfig is an arbitrary schema name.

 

You can see the implementation of the add address logic in the MobileAccountModuleConfig schema (the action is called addAccountAddress).

Like 0

Like

Share

0 comments
Show all comments

Symptoms

"The error code is 0x803F7000" error when installing bpm'online mobile 7 for Windows 10.

Cause

The error is related to the local settings of Windows 10. Possible reasons for the error:

  • Windows Store Cache.
  • Wrong date and time.
  • Windows is not activated.
  • Microsoft server is overloaded.

Solution

Links that describe the cause and solution of this problem:

-    http://answers.microsoft.com/en-us/windows/forum/windows_10-win_upgrade/error-code-0x803f7000-in-windows-store-10/18f61f6f-009a-435f-8d33-6956e301a849?auth=1

-    http://www.fixerrs.com/2015/09/fix-error-0x803f7000-windows-10-store.html

-    http://errortools.com/windows/how-to-fix-windows-10-error-code-0x803f7000/

-    http://microsoftfixnow.com/error-code-0x803f7000-windows-10-while-accessing-windows-store/

Like 0

Like

Share

0 comments
Show all comments

Question

We have check-ins and check-outs in our mobile application. After transferring them into the main application, where can I see them?

Answer

Unfortunately, this data is not displayed in the base version of our product. You can find this data in the DB table (CheckInOutResult). Your question requires development skills, which are taught by our company. We store information about the visit locally on the device and then transfer it during synchronization. Data acquisition at check-in (FieldForceMobileUtilitiesV2 schema):

checkInOut: function(activityId, isCheckIn) {
    Terrasoft.Geolocation.getCurrentCoordinates({
        success: function(latitude, longitude) {
            var checkinResultModelName = "CheckInOutResult";
            var saveQueryConfig = Ext.create("Terrasoft.QueryConfig", {
                modelName: checkinResultModelName,
                columns: ["GpsX", "GpsY", "Activity", "IsCheckIn", "ActionTime"]
            });
            var checkInOutRecord = Ext.create("CheckInOutResult", {
                Activity: activityId,
                GpsX: String(latitude),
                GpsY: String(longitude),
                IsCheckIn: isCheckIn,
                ActionTime: new Date()
            });
            checkInOutRecord.save({
                queryConfig: saveQueryConfig,
                success: function() {
                    this.changeActivityStatusByCheckInOut(isCheckIn);
                },
                failure: this.failureHandler
            }, this);
        },
        failure: this.failureHandler,
        scope: this
    });
},

The process of getting current coordinates is described in the “FieldForceMapsModule” schema. Also, the coordinates that bpm'online receives can be controlled. An example of the current implementation of the Terrasoft.Geolocation.getCurrentCoordinates method:

getCurrentCoordinates: function(config) {
   var enableHighAccuracy = !Terrasoft.Connection.isOnline() ||
      Terrasoft.Connection.getType() !== Terrasoft.ConnectionTypes.WiFi;
   var geo = Ext.create("Ext.util.Geolocation", {
      autoUpdate: false,
      allowHighAccuracy: enableHighAccuracy,
      timeout: 60000,
      listeners: {
         scope: this,
         locationupdate: function(geo) {
            Ext.callback(config.success, config.scope, [geo.getLatitude(), geo.getLongitude()]);
         },
         locationerror: function(geo, timeout, permissionDenied, locationUnavailable, message) {}
      }
   });
   geo.updateLocation();
}

If there is no Internet connection or this connection is not WiFi (EDGE, 3G), then “exact” positioning will be used (GPS), otherwise data will be obtained using WiFi, caching, etc., in ways that give inaccurate representations of the location of the device, but are quite sufficient for carrying out business tasks. If you need to receive data using GPS, you can create your own implementation of the action, by analogy with how it is implemented in bpm'online:

getCurrentCoordinates: function(config) {
   var geo = Ext.create("Ext.util.Geolocation", {
      autoUpdate: false,
      allowHighAccuracy: true,
      timeout: 60000,
      listeners: {
         scope: this,
         locationupdate: function(geo) {
            Ext.callback(config.success, config.scope, [geo.getLatitude(), geo.getLongitude()]);
         },
         locationerror: function(geo, timeout, permissionDenied, locationUnavailable, message) {}
      }
   });
   geo.updateLocation();
}

When implementing you need to consider that this method has a number of problems:



- despite the fact that the GPS method is more accurate, the time for obtaining such data can be quite long (up to 10-15 minutes);

- the waiting time for receiving the response should be increased, i.e. the timeout parameter above in the code will need to be set to more than 1 minute (60,000 ms);

- any overlap, interference in the form of any objects may not allow obtaining coordinates;

- the battery is drained faster, which is very critical for Android devices.

Like 0

Like

Share

4 comments

If we don't buy field management product in Creatio, can we access the FieldForceMapsModule schema? Or any other method to get the coordinate of the mobile phone(android & Mac.), 



   Right now , I am learning Creation deveopment training by DMITRIY, is still learning a  lot of things in Creatio.

Jeffrey,

 

This schema is available only in the FieldForce package. 

Bogdan,

Thanks for your reply. 

If I use c# code to write my own pacakge to detect the mobile gps, it shall be done in Creatio, right?

Jeffrey,

Yes, it should be done in Creatio configuration. 

Show all comments

Symptoms

The synchronization does not work on iOS, while the Android version syncs normally.

Cause

The problem is connected with the peculiarity of mobile applications (more precisely with authentication). If the Basic Authentication method is enabled, the synchronization will end with an error.

Solution

1. Make sure the method is disabled in IIS. In the IIS structure, select a site, go to the Authentication menu. Only Anonymous and Forms Authentications are enabled.

2. Make sure that the .Net Framework version matches the values in the table. You can determine the version by referring to the following article - https://msdn.microsoft.com/en-us/library/hh925568%28v=vs.110%29.aspx

3. Restart the website.

Requirements

Access to IIS, access to the list.

Like 0

Like

Share

0 comments
Show all comments

Case

When you enter the Dashboards section, the sales funnel opens by default, you can switch to activity, but the window does not close.

Purpose

Correct work of the "Close" button.

Necessary conditions

Understanding how to work with the mobile application.

Solution

This behavior is observed if the user clicks on the arrow to the right of the field with a drop-down list. If you open the “Section” window by clicking on the center of the field, the “Close” button works correctly.

Like 0

Like

Share

0 comments
Show all comments

Question

How to create a linked column in the mobile app? For example, the "Account" column in the "Contacts" section?

Answer

By default, custom columns (columns created through the mobile application wizard) that have the “Lookup” type in the mobile application are not linked (i.e., it is not possible to access the edit page by clicking on them). For example, the "Cases" section in the mobile app is not included in the base version. To implement this, you need to add a linked field to the mobile application module for the section.

An example implementation can be found in MobileContactModuleConfig ("Contacts" section):

Terrasoft.sdk.RecordPage.configureColumn("Contact", "primaryColumnSet", "Account", {
    viewType: Terrasoft.ViewTypes.Preview
});

 

Like 0

Like

Share

0 comments
Show all comments

Question

How to quickly generate a page code for a mobile application.

Can be used for:

  • Edit
  • Grid
  • Preview

Answer

Run the following code in the emulator browser console:

(new Terrasoft.CodeGeneration.PageCodeGenerator({
    modelName: "Contact", 
    pageType: Terrasoft.PageTypes.Edit
})).generate()

In modelName, specify the desired object.

In pageType, specify the page type:

pageType: Terrasoft.PageTypes.Grid
pageType: Terrasoft.PageTypes.Edit
pageType: Terrasoft.PageTypes.Preview

The result is:

Terrasoft.LastLoadedPageData = {
    controllerName: "Terrasoft.configuration.ContactEditPageController",
    viewXClass: "Terrasoft.configuration.ContactEditPageView"
};
 
Ext.define("Terrasoft.configuration.view.ContactEditPage", {
    extend: "Terrasoft.view.BaseEditPage",
    alternateClassName: "Terrasoft.configuration.ContactEditPageView",
    config: {
        id: "ContactEditPage"
    }
});
 
Ext.define("Terrasoft.configuration.controller.ContactEditPage", {
    extend: "Terrasoft.controller.BaseEditPage",
    alternateClassName: "Terrasoft.configuration.ContactEditPageController",
    statics: {
        Model: Contact
    },
    config: {
        refs: {
            view: "#ContactEditPage"
        }
    }
});

 

Like 0

Like

Share

0 comments
Show all comments