Case

After I create a section via section wizard, I face errors when trying to edit this section via the wizard.

The error message: System schemas for the Smracalendar1 section detected. Cannot proceed.

Solution

The reason of the error is that you have deleted the objects, created by the section wizard. These objects must exist for the section wizard. If they cannot be found, the wizard will be trying to create a new section.

The following objects are created when a section is added:

You only left the following objects available in the sysytem:

Possible solutions: add the deleted objects manually or create the section again and copy the data into it.

 

Like 0

Like

Share

0 comments
Show all comments

Case description:

We need to add custom button into the active row of detail.

Algorithm of realization:

  1. Create replacing client module of your detail.
  2. Add localizable string for caption of your button.
  3. Add following code into diff section:

    {
        "operation": "merge",
        "name": "DataGrid",
        "parentName": "Detail",
        "propertyName": "items",
        "values": {
            "activeRowActions": [],
            "activeRowAction": {"bindTo": "onActiveRowAction"}
        }
    },
    {
        "operation": "insert",
        "name": "DataGridActiveRowSomeButton",
        "parentName": "DataGrid",
        "propertyName": "activeRowActions",
        "values": {
            "className": "Terrasoft.Button",
            "style": Terrasoft.controls.ButtonEnums.style.GREEN,
            "caption": resources.localizableStrings.SomeButtonCaption,
            "tag": "someButton"
        }
    }

    With this code you can add button into the active row (element with name equal to "DataGridActiveRowSomeButton") and set method which will handle clicks on this button (activeRowActions into element with name equal to DataGrid).

  4. Add following code into the methods section:

    onActiveRowAction: function(buttonTag) {
        switch (buttonTag) {
            case "someButton":
                this.onSomeButtonClicked();
                break;
            default:
                break;
        }
    },
    onSomeButtonClicked: function() {
        //TODO your logic
        var message = "";
     
        message += "Mobile phone ";
        message += this.getActiveRow().get("MobilePhone");
     
        this.showInformationDialog(message);
    }

     

  5. Here is full example:

define("AccountContactsDetailV2", ["AccountContactsDetailV2Resources"],
    function (resources) {
        return {
            entitySchemaName: "Contact",
            methods: {
                onActiveRowAction: function (buttonTag) {
                    switch (buttonTag) {
                        case "someButton":
                            this.onSomeButtonClicked();
                            break;
                        default:
                            break;
                    }
                },
                onSomeButtonClicked: function () {
                    //TODO your logic
                    var message = "";
                    message += "Mobile phone ";
                    message += this.getActiveRow().get("MobilePhone");
                    this.showInformationDialog(message);
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "DataGrid",
                    "parentName": "Detail",
                    "propertyName": "items",
                    "values": {
                        "activeRowActions": [],
                        "activeRowAction": { "bindTo": "onActiveRowAction" }
                    }
                },
                {
                    "operation": "insert",
                    "name": "DataGridActiveRowSomeButton",
                    "parentName": "DataGrid",
                    "propertyName": "activeRowActions",
                    "values": {
                        "className": "Terrasoft.Button",
                        "style": Terrasoft.controls.ButtonEnums.style.GREEN,
                        "caption": resources.localizableStrings.SomeButtonCaption,
                        "tag": "someButton"
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    }
);

 

Like 0

Like

Share

6 comments

How to add one more button next to some button in the datagrid. based on above example. When i tried it is displaying only one button at a time (the first insert). Please find below my code for adding two buttons next to each other in the detail data grid. Kindly help me resolve the same asap

 

diff: /**SCHEMA_DIFF*/[

            {

                        "operation": "merge",

                        "name": "DataGrid",

                        "parentName": "Detail",

                        "propertyName": "items",

                        "values": {

                            "activeRowActions": [],

                            "activeRowAction": {"bindTo": "onActiveRowAction"}

                        }

                    },

             {

                "operation": "insert",

                "name": "DataGridActiveRowSomeButton",

                "parentName": "DataGrid",

                "propertyName": "activeRowActions",

                "values": {

                    "className": "Terrasoft.Button",

                    //"click": {"bindTo": "onButton1Click"},

                    "visible": true,

                    "enabled": true,

                    "style": Terrasoft.controls.ButtonEnums.style.BLUE,

                    "caption": resources.localizableStrings.HierarchyButtonCaption,

                    "tag": "someButton"

                }

            },

            {

                "operation": "insert",

                "name": "DataGridActiveRowSomeButton",

                "parentName": "DataGrid",

                "propertyName": "activeRowActions",

                "values": {

                "className": "Terrasoft.Button",

                    "visible": true,

                    "enabled": true,

                    "style": Terrasoft.controls.ButtonEnums.style.GREEN,

                    "caption": resources.localizableStrings.AddConcessionButtonCaption,

                    "tag": "someButton"

                }

            }

Sri Saranya,

Probably because they have the same name. The tags you have there are also the same, so both those buttons would execute the same code.

Hi All,

How to add the  visibility and enable to a button in "activeRowActions" :



I have implemented the below code. But the button is not visible eventhough we are returning visibility as true.



Hi team how come can change a boolean using this button and save the changes?

Adharsh, you can add a attribute boolean in the detail and setup the parameter in the function onRender, you can find a example in the AccountContactsDetailV2

 

				onRender: function() {
					this.callParent(arguments);
					this.initializeIsOrganizationExists();
				},

 

I tried this but didnt work well. Any ideas?

Show all comments

Case:

We need to bind column setup of some grid to package.

Implementation:

  1. Set up column setup and save this one for all users:

     
  2. Go to DB and find key of SysProfileData record by query:

    SELECT * FROM "SysProfileData" ORDER BY "ModifiedOn" DESC

  3. Create new data binding in configuration section of bpm`online like below:

    IMPORTANT!!! All checkboxes are VERY important. You should rewrite Data field in DB and merge SysProfileData record by Key, Contact and Culture fields.

Like 3

Like

Share

3 comments

When following this methodology in Freedom UI, when trying to install the data I get the following error message:
Duplicates data in object "SysProfileData". 
 

Any info on why this would be happening? The update key is set to the 3 columns specified:

And the bound data is specified individually (rather than with a condition, as I don't think that's possible any more in Freedom UI) but the 2 records have different Keys:

It looks like adding "Object" (column SysUserId) to the update key of the data binding worked for me, but not sure if this will always work or is the recommended way to do things. It would be nice if Creatio could confirm whether this is the right way of binding column setup in Freedom UI.

Harvey Adcock,


Greetings,

You are correct, the SysUserId should be migrated as well. 

Show all comments

Quetion

How do I update page fields by developer means after updating records in the database (via ESQ)?

Answer

You can use the this.set(‘ColumnName’, ‘NewValue’) method to update a field value by developer means. We recommend updating fields in the callback function with preliminaty checking of the database updates.

Example of a code:

someMethod: function(){
    var value = this.get('UsrRequired');
    var updateQuery = Ext.create("Terrasoft.UpdateQuery", {
        rootSchemaName: "UsrRuleTest"});
    var filters = updateQuery.filters;
    filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "Id", 'IdValue’)); updateQuery.setParameterValue("UsrSomething", value, this.Terrasoft.DataValueType.TEXT); updateQuery.execute(function(result){ if(result.success) this.set('UsrTest0', value); }, this); }

 

Like 0

Like

Share

0 comments
Show all comments

Symptoms

An error occurred during synchronization % 0D% 0A% 0D% 0ATtype: Terrasoft.ServerException% 0D% 0AMessage: A request to the server returned an error% 0D% 0AAdditional information:% 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.

Cause

The object referred to is already deleted or moved.

Solution

1. Synchronize, make sure that the settings include the correct date and time of the last synchronization.

2. Clear the mobile application cache (by clicking the corresponding “Clear Cache” button. If there is no such button, you first need to perform a demo login - the corresponding button is below the authorization data, after which the cache is cleared).

3. Re-synchronize.

Like 0

Like

Share

0 comments
Show all comments

Symptoms

While accessing the section:

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

Cause

Manifest lacks components.

Solution

Connect the schemas that are responsible for the "Feed" section in the "Support" workplace in the mobile application manifest.

-  MobileSocialMessageActionsSettingsSupport;

-  MobileSocialMessageGridPageSettingsSupport.

Additionally, remove the schemas that relate to the main workplace, and not to "Support".

-   MobileSocialMessageGridPageSettingsDefaultWorkplace;

-   MobileSocialMessageRecordPageSettingsDefaultWorkplace.

Like 0

Like

Share

0 comments
Show all comments

Add new DataView in Contact Section (only contacts with B2B type)

define("ContactSectionV2", ["GlbClientConstants"], function(clientConstants) {
    return {
        entitySchemaName: "Contact",
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        attributes: {},
        methods: {
            getDefaultDataViews: function() {
                var baseDataViews = this.callParent(arguments);
                baseDataViews.GridDataViewB2B = {
                    name: "GridDataViewB2B",
                    caption: this.get("Resources.Strings.B2BButtonCaption"), // Section header
                    hint: this.get("Resources.Strings.B2BButtonCaption"), // Hint for button
                    icon: this.get("Resources.Images.B2BDataViewIcon") // Image for button
                };
                return baseDataViews;
            },
            loadActiveViewData: function() {
                var activeViewName = this.getActiveViewName();
                if (activeViewName === "GridDataViewB2B") {
                    this.loadGridData();
                }
                this.callParent(arguments);
            },
            loadGridDataView: function(loadData) {
                var gridData = this.getGridData();
                if (gridData && loadData) {
                    gridData.clear();
                }
                this.setViewFilter(this.get("ActiveViewName"));
                this.reloadGridColumnsConfig(false);
                this.reloadSummaryModule();
                this.callParent(arguments);
            },
            loadGridDataViewB2B: function(loadData) { // "load" + DataView.name
                this.loadGridDataView(loadData);
            },
            setActiveView: function(activeViewName) {
                this.callParent(arguments);
                if (activeViewName === "GridDataViewB2B") {
                    this.set("IsGridDataViewVisible", true);
                }
            },
            setViewFilter: function(activeViewName) { // Add filter for your "DataView"
                var sectionFilters = this.get("SectionFilters");
                if (activeViewName === "GridDataViewB2B") {
                    sectionFilters.add("FilterB2BType", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "Type", clientConstants.ContactTypes.B2B));
                } else {
                    sectionFilters.removeByKey("FilterB2BType");
                }
            }
        }
    };
});

Like 2

Like

Share

2 comments

How to create GridDataViewB2B? Is it a schema of the section view model?

Thank you

You don't need to create a schema. The GridDataViewB2B is created in the getDefaultDataViews function via native js (https://prnt.sc/pl1tvo).

Show all comments

Symptoms

When creating a detail via the detail wizard, the following error message pops up at the moment of registering the page: message: Uncaught Terrasoft.ArgumentNullOrEmptyException: Nonexisting or empty argument with the argumentName: query name

Cause

Too long names of objects used for creating details:

"Opportunity Documents in the Product", "History of Document changes"

Solution

Change the name for a shorter one (up to 30 characters) and publish the object.

Like 0

Like

Share

0 comments
Show all comments

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