Question

Can I make details records editable based on conditions? For example, records with colA=1 can be modified, but records with colA<>1 cannot.

Like

2 comments

Try to add async validators into the edit page linked to the detail. 

Please investigate the asyncValidate in the BaseEntityPage and the asyncValidate method in the AccountPageV2. 

You'll probably need "messages" to get information from the detail main page. 

https://academy.bpmonline.com/documents/technic-sdk/7-14/messages-messages-property

Log in or register to comment
Question

I was successfully able to work a DevExpress Report. However, Im not sure how to link the report to a printable. How can I do so?

Like

1 comments

Hello Zeinab!

To link your report with printable you need to find [Printables] lookup, open it and add a new one with [DevExpress] option. Fill all the required fields and select your report in [Template] field.

Log in or register to comment
Question

Hi everyone,

I'm facing a problem in the business process , when I try to save the business process element , the following message appears: ' Error occurred when saving : Collection item  with unique identifier not found '

Like

0 comments
Log in or register to comment
Question

Hi;
After migration to higer verson one of process stop working
Here is part of trace.
 

{

"Element parameters": [

{

"Parameter": "GroupGuid_Out",

"Value": {

"Before execution": "00000000-0000-0000-0000-000000000000",

"After execution": "00000000-0000-0000-0000-000000000000"

}

},

{

"Parameter": "GroupName_IN",

"Value": {

"Before execution": null,

"After execution": null

}

}

],
the GroupName_In is null but in designt it is set

 

Thanks in advance

Tomek
 

 

Like

0 comments
Log in or register to comment
Question

Hi;

What else should cause such error.
I have an edit page with detail.
I whould like to edit detil page but i get such error

Like

4 comments

Dear Tomasz,

Please set up package dependencies for your Claim package. The package should depend on the following packages:

MarketingSoftkeyEnu

OrderInSales_OperatorSingleWindow_Softkey_ENU

SalesEnterprise_Marketing_ServiceEnterprise

SalesEnterpriseSoftkey_EN

ServiceEnterpriseSoftkey

Custom package should depend on your package.

Regards,

Anastasia

Anastasia Botezat,

thanks Anastasia
Claim Package is on the bottom of dependency schema (See second attachment). and all the entities are in ClaimEntities package which is up on schema. Others details i can edit but just this one rise an exeption

Regards
Tomek

tomasz.branicki,

Сustom package, should be the last one in dependency tree. After custom should be your package. Your package, should depend on the above mentioned packages. 

The detail, which gives you the error can have logic indicated in basic package, which your package "do not see", since it does not depend on it. 

Also, seems the second attachment was not linked to your post, I cannot find it.

Please double check that your package is second from the bottom.

In case everything is set up correctly, please write us an email support@bpmonline.com, so we could check on your side.

Regards,
Anastasia

Thanks

I send the dependencies scema as attachment now

 

Regards

Toek

Log in or register to comment
Question

we need to customize the modal box shown when we need to select for example Account lookup, by adding fixed filters on the top then the search button gets Accounts based on this filter.

Also can we hide the New Button here ?

will this customization affect other lookup selection modal box? 

if this is not applicable is there any other approach ? 

 

Like

1 comments

Dear Ayman,

You can add a fixed filter to the lookup page, however, this requires development skills. Please see this article with instructions: 

https://academy.bpmonline.com/documents/technic-sdk/7-13/adding-quick-filter-block-section

The schema you would need to modify is LookupPageViewGenerator. Please note, that applied changes would be displayed for all sections and each place where you use lookup page.

In order to remove New button, you need to override the getSelectionControlsConfig and getEditionControlsConfig methods on LookupPageViewGenerator schema and remove add button from there.

As an alternative approach, you can apply business rule on the field and in this case lookup would be automatically filtered. 

Regards,

Anastasia

Log in or register to comment
Question

In the out of the box functionality i can prevent the user from deleting contacts by configuring the object permissions.

Can we prevent deleting a specific type of contacts? Let us say those who are males?

Like

1 comments

Dear Mortada,

You can add such logic on the client side of your application or add a trigger to the database. 

In case you decide to choose client side realization, than you need to create a replacing client module for ContactSectionV2 and override basic deleteRecords method. Add an if clause to check whether record meets requirements to be deleted. 

In case you want to choose database trigger, than draw your attention to the before delete triggers.

Regards,

Anastasia

Log in or register to comment
Question

When I prevent a specific user from deleting records of a specific section. Let us say, User A cannot delete contacts. After configuring this in object permission:

Login using User A, go to contact page, select a record, you will still be able to see the Delete button but you will not be able to delete.

Is there any settings to let the delete button be automatically hidden when there is insufficient permissions?

Like

1 comments

Hello,

After denying access to delete records from a section - delete button won't disappear and user will be able to click it, but there will be a popup stating that this user has no rights to perform this action.

Unfortunately there is no system setting that declares button disappearing when denying access rights are configured for a record to be deleted and this logic can be achieved only via additional development. Here are community articles that describe how to hide a button on a page here, here, here, here and here. I will also create a suggestion to our R&D team so they could implement this login in out-of-the-box version in future.

Thank you for helping us to make our application better!

Best regards,

Oscar

Log in or register to comment
Question

Is it possible to create an editable list on section page, just like on details or in the lookup section? For small entities dealing with a list directly might be more user friendly than using the edit page.

Like

2 comments

Dear Carlos, 

Please see the example below, hope you find it helpful:

define("ActivitySectionV2", ["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"],
    function() {
        return {
            entitySchemaName: "Activity",
            messages: {},
            mixins: {
                ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
            },
            attributes: {
                IsEditable: {
                    dataValueType: Terrasoft.DataValueType.BOOLEAN,
                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                    value: true
                }
            },
            methods: {
                edit: function() {
                    var procElId = this.getActiveRow().get("ProcessElementId");
                    var recordId = this.get("ActiveRow");
                    if (procElId &amp;&amp; !this.Terrasoft.isEmptyGUID(procElId)) {
                        this.sandbox.publish("ProcessExecDataChanged", {
                            procElUId: procElId,
                            recordId: recordId,
                            scope: this,
                            parentMethodArguments: null,
                            parentMethod: function() {
                                return false;
                            }
                        });
                        return true;
                    }
                    this.editRecord(recordId);
                },
                editRecord: function(primaryColumnValue) {
                    this.Terrasoft.chain(
                        function(next) {
                            var activeRow = this.findActiveRow();
                            this.saveRowChanges(activeRow, next);
                        },
                        function() {
                            var activeRow = this.getActiveRow();
                            var typeColumnValue = this.getTypeColumnValue(activeRow);
                            var schemaName = this.getEditPageSchemaName(typeColumnValue);
                            this.openCardInChain({
                                id: primaryColumnValue,
                                schemaName: schemaName,
                                operation: Terrasoft.ConfigurationEnums.CardOperation.EDIT,
                                moduleId: this.getChainCardModuleSandboxId(typeColumnValue)
                            });
                        }, this);
                },
                addRecord: function(typeColumnValue) {
                    if (!typeColumnValue) {
                        if (this.get("EditPages").getCount() &gt; 1) {
                            return false;
                        }
                        var tag = this.get("AddRecordButtonTag");
                        typeColumnValue = tag || this.Terrasoft.GUID_EMPTY;
                    }
                    this.addRow(typeColumnValue);
                },
                copyRecord: function(primaryColumnValue) {
                    this.copyRow(primaryColumnValue);
                },
                getGridRowViewModelConfig: function() {
                    var gridRowViewModelConfig =
                        this.mixins.GridUtilities.getGridRowViewModelConfig.apply(this, arguments);
                    Ext.apply(gridRowViewModelConfig, {entitySchema: this.entitySchema});
                    var editPages = this.get("EditPages");
                    this.Ext.apply(gridRowViewModelConfig.values, {HasEditPages: editPages &amp;&amp; !editPages.isEmpty()});
                    return gridRowViewModelConfig;
                },
                getGridRowViewModelClassName: function() {
                    return this.mixins.GridUtilities.getGridRowViewModelClassName.apply(this, arguments);
                },
                onRender: function() {
                    this.callParent(arguments);
                    if (!this.get("Restored")) {
                        this.reloadGridColumnsConfig(true);
                    }
                },
                getDefaultGridColumns: function() {
                    var systemColumns = this.systemColumns;
                    var allowedDataValueTypes = this.get("AllowedDataValueTypes");
                    var entitySchema = this.entitySchema;
                    var entitySchemaColumns = [];
                    Terrasoft.each(entitySchema.columns, function(column, columnName) {
                        if (Ext.Array.contains(systemColumns, columnName) ||
                            !Ext.Array.contains(allowedDataValueTypes, column.dataValueType)) {
                            return;
                        }
                        entitySchemaColumns.push(column);
                    }, this);
                    var primaryDisplayColumnName = entitySchema.primaryDisplayColumnName;
                    entitySchemaColumns.sort(function(a, b) {
                        if (a.name === primaryDisplayColumnName) {
                            return -1;
                        }
                        if (b.name === primaryDisplayColumnName) {
                            return 1;
                        }
                        return 0;
                    }, this);
                    return (entitySchemaColumns.length &gt; 4) ? entitySchemaColumns.slice(0, 4) : entitySchemaColumns;
                },
                onActiveRowAction: function() {
                    this.mixins.ConfigurationGridUtilities.onActiveRowAction.apply(this, arguments);
                    this.callParent(arguments);
                },
                onActiveRowAction: function(buttonTag, primaryColumnValue) {
                    switch (buttonTag) {
                        case "card":
                            this.edit();
                            break;
                        case "copy":
                            this.copyRecord(primaryColumnValue);
                            break;
                        case "remove":
                            this.deleteRecords();
                            break;
                        case "cancel":
                            this.discardChanges(primaryColumnValue);
                            break;
                        case "save":
                            this.onActiveRowSave(primaryColumnValue);
                            break;
                    }
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "DataGrid",
                    "values": {
                        "className": "Terrasoft.ConfigurationGrid",
                        "generator": "ConfigurationGridGenerator.generatePartial",
                        "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
                        "changeRow": {"bindTo": "changeRow"},
                        "unSelectRow": {"bindTo": "unSelectRow"},
                        "onGridClick": {"bindTo": "onGridClick"},
                        "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
                        "activeRowAction": {"bindTo": "onActiveRowAction"},
                        "multiSelect": {"bindTo": "MultiSelect"}
                    }
                },
                {
                    "operation": "insert",
                    "name": "activeRowActionSave",
                    "parentName": "DataGrid",
                    "propertyName": "activeRowActions",
                    "values": {
                        "className": "Terrasoft.Button",
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        "tag": "save",
                        "markerValue": "save",
                        "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
                    }
                },/*
                {
                    "operation": "insert",
                    "name": "activeRowActionCopy",
                    "parentName": "DataGrid",
                    "propertyName": "activeRowActions",
                    "values": {
                        "className": "Terrasoft.Button",
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        "tag": "copy",
                        "markerValue": "copy",
                        "imageConfig": {"bindTo": "Resources.Images.CopyIcon"}
                    }
                },*/
                {
                    "operation": "insert",
                    "name": "activeRowActionCard",
                    "parentName": "DataGrid",
                    "propertyName": "activeRowActions",
                    "values": {
                        "className": "Terrasoft.Button",
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        "tag": "card",
                        "markerValue": "card",
                        "visible": {"bindTo": "HasEditPages"},
                        "imageConfig": {"bindTo": "Resources.Images.CardIcon"}
                    }
                },
                {
                    "operation": "insert",
                    "name": "activeRowActionCancel",
                    "parentName": "DataGrid",
                    "propertyName": "activeRowActions",
                    "values": {
                        "className": "Terrasoft.Button",
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        "tag": "cancel",
                        "markerValue": "cancel",
                        "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
                    }
                },
                {
                    "operation": "insert",
                    "name": "activeRowActionRemove",
                    "parentName": "DataGrid",
                    "propertyName": "activeRowActions",
                    "values": {
                        "className": "Terrasoft.Button",
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        "tag": "remove",
                        "markerValue": "remove",
                        "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
                    }
                },
                {
                    "operation": "remove",
                    "name": "DataGridActiveRowOpenAction"
                },
                {
                    "operation": "remove",
                    "name": "DataGridActiveRowCopyAction"
                },
                {
                    "operation": "remove",
                    "name": "DataGridActiveRowDeleteAction"
                },
                {
                    "operation": "remove",
                    "name": "ProcessEntryPointGridRowButton"
                }
            ]/**SCHEMA_DIFF*/
        };
    }
);

Regards,

Anastasia

Anastasia Botezat,

Thank you

Log in or register to comment
Question

Hi team,

 

I need to transfer all the data bindings from custom to new package . 

Kindly provide your recommended steps .

 

regards,

sethuraghav N

Like

1 comments

Hello!

Here is an article that explains how to transfer binding custom package data to the new package. Please pay attention to point #5 in this article.

Best regards, Anastasia

Log in or register to comment