Question

We have a "+" sign on the side panel in sms, which can be used for quick adding of a new order, case, call, etc. But when I select this option, e.g., of adding a case, bpm'online starts stuttering and no case window opens (the same refers to the order and task/call).

Answer

The "Quick add" menu contents can be edited in the " Quick add menu setup" lookup as an "Item of quick add menu". One of its columns – "Add page" – is the "Section edit page" type, that refers to the "VwSysModuleSchemaEdit" database view instead of a table.

In the code of this view, there is a connectio to the "Default" workplace name, which in your case is renamed for "DefaultFlat". Consequently, none of the view pages was visible to you. Likewse, none could be called as a "quick add" menu option.

To solve your case, rename the old VwSysModuleSchemaEdit in the database for e.g.,"VwSysModuleSchemaEdit_Old"  and execute the script for adding a new view:

CREATE VIEW [dbo].[VwSysModuleSchemaEdit]
AS
SELECT
       se.Id as 'Id',
       se.CreatedOn as 'CreatedOn',
       se.CreatedById as 'CreatedById',
       se.ModifiedOn as 'ModifiedOn',
       se.ModifiedById as 'ModifiedById',
       se.ProcessListeners as 'ProcessListeners',
       se.PageCaption as 'PageCaption',
       se.TypeColumnValue as 'TypeColumnValue',
       se.SysModuleEntityId as 'SysModuleEntityId',
       ss.Caption as 'EditPageCaption',
       ss.Name as 'EditPageName'
FROM SysModuleEdit se
inner join VwSysSchemaInWorkspace ss ON ss.UId = se.CardSchemaUId
       and ss.SysWorkspaceId = (SELECT Id FROM SysWorkspace WHERE Name = 'DefaultFlat')
WHERE
       exists(SELECT null FROM SysModule sm WHERE sm.SysModuleEntityId = se.SysModuleEntityId)
       and exists(SELECT vss.Caption FROM VwSysSchemaInWorkspace vss WHERE vss.UId = se.CardSchemaUId)
GO

To implement the changes, clear the browser cache and update the website page.

Like 0

Like

Share

0 comments
Show all comments

Symptoms

While accessing one of the section in the mobile app, the following error is displayed:

Terrasoft.SourceCodeException

Сообщение: TypeError: undefined is not an object (evaluating 'Terrasoft.sdk.RecordPage.getColumns(model, columnSetName).

get(columnName).columnOriginalConfig')

Additional information:

Script: file:///private/var/mobile/Containers/Bundle/Application/4C00C070-499C-4318-9653-8938B2A3B608/bpm'online.app/www/Common/Terrasoft.Mobile.Combined.js%0D%0A%09Line: 7698"

Cause

The user deleted the base column via the designer

Solution

1. In the configuration, create a new "module" with the name UsrMobileOverrideUtilities

Add the following text:

Ext.define("Terrasoft.sdk.RecordPage.Override", {
    override: "Terrasoft.sdk.RecordPage",
    configureColumn: function(model, columnSetName, columnName, columnConfig) {
        if (!Terrasoft.sdk.RecordPage.getColumns(model, columnSetName).get(columnName)) {
            return;
        }
        this.callParent(arguments);
    }
});

2. Change the custom manifest (usually called UsrMobileApplicationManifestCustom)

Add the following block:

"CustomSchemas": [
    "UsrMobileOverrideUtilities"
],

Necessary conditions and possible restrictions

The base column was used in one of the base mobile application scripts.

Like 0

Like

Share

0 comments
Show all comments

Question

How can I change the tab by default?

Answer

Use the DefaultTabName property and specify the needed tab. Or alternatively, override the initTabs() method and specify the active tab via setActiveTab("Tab name") therein.

Like 2

Like

Share

0 comments
Show all comments

Question

1. Is it possible to use filterMethod for a detail (similarly to the main application), or in any way use an arbitrary filter and not just a filter based on the column of the parent page?

2. How to disable the ability to add, delete and edit detail records, depending on the values on the parent page?

Answer

1. For details, you can specify filters using the configure() method of the corresponding sdk-class:

Terrasoft.sdk.Details.configure("Contact", "ActivityDetailV2StandartDetail", {
   filters: Ext.create("Terrasoft.Filter", {
      type: Terrasoft.FilterTypes.Group,
      subfilters: [
         Ext.create("Terrasoft.Filter", {
            compareType: Terrasoft.ComparisonTypes.NotEqual,
            property: "Type",
            value: Terrasoft.GUID.ActivityTypeEmail
         })
      ]
   })
});

2. In general, changing the mode of detail operation is done like this:

Terrasoft.sdk.Details.setChangeModes("Contact", "ActivityDetailV2StandartDetail", [Terrasoft.ChangeModes.Read]);

But if you need to change the mode of operation based on the condition, then there is a getChangeModes() method for this purpose in the page controllers. In the controllers of the corresponding pages (grid, view, edit) you need to expand the following method:

getChangeModeOperations: function() {
   var detailConfig = this.getDetailConfig();
   if (detailConfig) {
      var parentRecord = detailConfig.parentRecord;
      if (parentRecord.get("IsNonActualEmail") === false) {
         return {
            canCreate: false,
            canUpdate: false,
            canDelete: false
         };
      }
   }
   return this.callParent(arguments);
}

 

Like 0

Like

Share

0 comments
Show all comments

Symptoms

When I add products to the invoice, I get an error informing that the [Price] field is required, but it is populated. The field contains a value.

Cause

The "Invoice" object is managed by columns and the user does not have permission for the [Price] field (despite the fact that the field is populated automatically).

Solution

Provide permissions to edit the [Price] field to the user.

Like 0

Like

Share

0 comments
Show all comments

Symptoms

When synchronizing/entering a mobile application section, the following error is displayed:

Type: Terrasoft.SourceCodeException 

Message: Uncaught TypeError: Cannot read property 'ColumnConfigs' of null 

Additional information: 

        Script: file:///android_asset/www/Common/Terrasoft.Mobile.Combined.js%0D%0A%09Line: 19048 

Calls sequence: 

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

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

    at window.onerror (file:///android_asset/www/Common/Terrasoft.Mobile.Combined.js:1666:20)

Cause

Schema duplication in the manifest

Solution

#1

In the base MobileApplicationManifest schema of the Mobile package change the following string:

…
Models: {
    …
    Activity: {
        …
        RequiredModels: [
            'Contact', 'ActivityType', 'ActivityStatus',
            'ActivityResult', 'ActivityCategory', 'ActivityPriority', 'Contact', 
            'Account', 'Opportunity', 'Lead', 'ActivityParticipantRole',
            'ActivityParticipant', 'ActivityCategoryResultEntry', 'ActivityCorrespondence', 'Activity'

Remove duplicate "Contact" value

#2

Update mobile app to a more recent version.

Necessary conditions and possible restrictions

BPMonline Version 7.1.0 - 7.5.0

Mobile application version:

Android 7.6.2. - 7.6.3.

iOS 7.6.2

Like 0

Like

Share

0 comments
Show all comments

Question

Can we change the height of the [Notes] field?

Answer

To implement this, you need to change the base logic of the application via a code in the KnowledgeBasePageV2 schema.

Algorithm:

1. Replace the module.

2. For the "Notes" (diff) column, add the "height" property ("dimension in pixels") to the "values" or "controlConfig" section.

An example of a code:

{
    "operation": "merge",
    "name": "Notes",
    "values": {
        "height": "500px"  
    }
},

 

Like 0

Like

Share

0 comments
Show all comments

Symptoms

Type: Terrasoft.ODataSecurityException% 0D% 0A Message: Not enough rights to change the record in the object "Activity"% 0D% 0A Additional information:% 0D% 0A% 09 {"error": {"code": "5", "message": {" lang ":" "," value ":" Not enough rights to change the record in the object \ "Activity \" "}," innererror ": {" message ":" Not enough rights to change the record in the object \ "Activity \" ", "type": "System.Security.SecurityException", "stacktrace": "in Terrasoft.Core.Entities.Entity.UpdateInDB (Boolean validateRequired) \ r \ n in Terrasoft.Core.Entities.Entity.Save (Boolean validateRequired) \ r \ n in Terrasoft.Core.Entities.Services.EntityLazyProxy.SaveChanges () \ r \ n in Terrasoft.Core.Entities.Services.ServiceContext.SaveChanges () \ r \ n in System.Data.Services.DataService`1. HandleNonBatchRequest (RequestDescription description) \ r \ n in System.Data.Services.DataService`1.H andleRequest ()"}}}%0D%0A% 0D%0A

Type: Terrasoft.ODataSecurityException% 0D% 0A Message: Not enough rights to change the record in the object" Activity "% 0D% 0A Additional Information:%0D%0A%09 {" error " : {"code": "5", "message": {"lang": "", "value": "Not enough rights to change the record in the object \" Activity \ ""}, "innererror": {"message" : "Not enough permissions to change the record in the \" Activity \ "", "type": "System.Security.SecurityException", "stacktrace": "in Terrasoft.Core.Entities.Entity.UpdateInDB (Boolean validateRequired) \ r \ n in Terrasoft.Core.Entities.Entity.Save (Boolean validateRequired) \ r \ n in Terrasoft.Core.Entities.Services.EntityLazyProxy.SaveChanges () \ r \ n in Terrasoft.Core.Entities.Services.ServiceContext.SaveChext ) \ r \ n in System.Data.Services.DataService`1.HandleNonBatchRequest (RequestDescription description) \ r \ n System.Data.Services.DataService`1.HandleRequest () "}}}%0D%0A%0D% 0A

Type: Terrasoft.ODataSecurityException% 0D% 0APost: Not enough permissions to change the record in the" Activity "% 0D% 0AAdditional information: % 0D% 0A% 09 {"error": {"code": "5", "message": {"lang": "", "value": "Not enough rights to change the record in the object \" Activity \ "" }, "innererror": {"message": "Not enough rights to change the record in the object \" Activity \ "", "type": "System.Security.SecurityException", "stacktrace": "in Terrasoft.Core.Entities. Entity.UpdateInDB (Boolean validateRequired) \ r \ n in Terrasoft.Core.Entities.Entity.Save (Boolean validateRequired) \ r \ n in Terrasoft.Core.Entities.Services.EntityLazyProxy.SaveChanges () \ r \ n in Terrasoft. Core.Entities.Services.ServiceContext.SaveChanges () \ r \ n in System.Data.Services.DataService`1.HandleNonBatchRequest (R equestDescription description) \ r \ n in System.Data.Services.DataService`1.HandleRequest ()"}}}% 0D%0A% 0D%0A

Cause

The access rights to the objects of the mobile application are not distributed and the organizational structure is not updated.

Solution

1. If the user has not been previously added to the configuration, then go to the “Configuration Management”, “Administration: Access to Objects” menu, detail “Access to default records: Change” and add a user/role;

2. Perform the action “Update the organizational structure”;

3. Distribute access rights to mobile application objects;

4. Re-sync from your mobile device.

Necessary conditions and possible restrictions



Access to the system under a user account with administrator rights.

Like 0

Like

Share

0 comments
Show all comments

Symptoms

The mobile app cannot synchronize in online mode (but syncs fine in offline mode).

Cause

In some configurations of IIS and .NET Framework, ASP.NET avoids special characters while processing the URL. URLs containing the "$" symbol are used when integrating with OData (bpm'online mobile application). This feature can be turned in the web.config file.

Solution

Perform the following steps with system administrator rights.

  1. Go to the folder with the application source files (for example, C:\bpm\7.8.0.1681_SalesEnterprise_Softkey_MSSQL_ENU). The path to the folder is arbitrary, and is usually specified by the system administrator of the application.
  2. Using notepad, open the web.config file found in the root folder.
  3. Find the section (Ctrl + F).
  4. Add the following string to this section - 
  5. Save the changes.

  6. Open the second web.config file, located in the folder with the Terrasoft.WebApp application (for example, "C:\ bpm\7.8.0.1681_SalesEnterprise_Softkey_MSSQL_ENU\Terrasoft.WebApp") and repeat steps 2-5.
  7. Reload the application on IIS and clean Redis.

We recommend creating backups of both web.config files before you start. 

Note: This situation occurs only when using the online mode - https://academy.bpmonline.com/documents/mobile/7-13/onlineoffline-modes

Necessary conditions and possible restrictions

System administrator rights.

 

Like 0

Like

Share

0 comments
Show all comments

Question

There are records of other activity types displayed on the "Email" 'detail.

Answer

This might occur because the functionality of filtering by type is coded in the section instead of the detail. Not all sections have the filtering functionality coded. To solve the issue, replace EmailDetailV2 and insert the following code into the replacing page:

define("EmailDetailV2", ["terrasoft", "ProcessModuleUtilities", "ConfigurationConstants"],
    function(Terrasoft, ProcessModuleUtilities, ConfigurationConstants) {
        return {
            /** * Имя схемы объекта * @type {String} */
            entitySchemaName: "Activity",
            messages: {},
            attributes: {},
            methods: {
                getFilters: function() {
                    var parentfilters = this.callParent(arguments);
                    parentfilters.add(
                        "EmailFilter",
                        this.Terrasoft.createColumnFilterWithParameter(
                            this.Terrasoft.ComparisonType.EQUAL,
                            "Type",
                            ConfigurationConstants.Activity.Type.Email
                        )
                    );
                    return parentfilters;
                }
            },
            diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
        };
});

 

Like 0

Like

Share

0 comments
Show all comments