How would I go about summing the costs of related attendee (table) price field for an order and then place that total back into the custom Order->AttendeePrice field. Then additionally sum Order->Total + Order->AttendeePrice into the custom field, Order->GrandTotal?

This would be similar to the Out-of-Box sum of the product sales price for an order where it places the total in the Order->Total field and manages the product total as items are added, edited, or deleted.

Like 0

Like

1 comments

Dear Dick,

 

Thank you for your question!

 

The best solution for this would be using a Business Process with parameters.

 

Hope this helps!

 

Regards,



Danyil

Show all comments

Hi,

 

How is it possible to set only the author of the record to be able to delete their record? Beside the roles that are mentioned in the operation permissions, for example System admin.

 

Thanks,

Like 0

Like

3 comments
Best reply

Kavian Abhari,



Yes, you are correct, you can use this.

And if you remove everything from the Record Permissions, by default all rights will be given to the person, who creates the record and System Administrator.

Also, you will need to create a business process to give read/edit rights to all other users as they will not be able to perform these actions using the logic above.

I'm sorry if I misunderstood you, I thought that you do not wish to use Permissions at all.

You can check this article for more information:



https://academy.creatio.com/docs/user/setup_and_administration/user_and…



Best Regards,

Ivanna

Dear Kavian,



If you do not wish to go with Operation Permissions, you can debug onDelete method logic in GridUtilitiesV2 schema.

You need to replace it with your own custom logic.

Unfortunately, your business task can be performed using our base tools.



Best Regards,

Ivanna

Ivanna Yatsura,

Thanks. But not even by using "Record permissions"? 

In the picture below, doesn't it mean that each employee can delete the record that they created?

Kavian Abhari,



Yes, you are correct, you can use this.

And if you remove everything from the Record Permissions, by default all rights will be given to the person, who creates the record and System Administrator.

Also, you will need to create a business process to give read/edit rights to all other users as they will not be able to perform these actions using the logic above.

I'm sorry if I misunderstood you, I thought that you do not wish to use Permissions at all.

You can check this article for more information:



https://academy.creatio.com/docs/user/setup_and_administration/user_and…



Best Regards,

Ivanna

Show all comments

Hello. I'm working with the Multiple choice field setup for Creatio (https://marketplace.creatio.com/app/multiple-choice-field-setup-creatio) add-on but I'm not getting it to save the selected values.

 

I've followed the guide here: https://marketplace.creatio.com/sites/marketplace/files/app-guide/Multi…

 

I have the Lookup object that I select. I have the link table (which is equivolent to ActivityParticipant which is used in the guide-example)

 

I get the values correctly on the page, and they are selectable. But nothing is saved to the database when i Save the record

 

Object: Contact

Lookup: ChessInterest

Link-object: ChessContactInterest

define("ContactPageV2", ["MultiChoiceMixin"], function() {
	return {
      entitySchemaName: "Contact",
      attributes: {
        "ChessInterests": {"dataValueType": Terrasoft.DataValueType.LOOKUP}
      },
      mixins: {MultiChoiceMixin: "Terrasoft.MultiChoiceMixin"},
      modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		}
 
...
methods: {
		init: function() {
          this.callParent(arguments);
          this.mixins.MultiChoiceMixin.init.call(this, arguments);
        },
        getMultiChoiceEntitiesConfig: function () {
          const items = {
            ChessInterests: {
              mainEntitySchemaName: "ChessContactInterest",
              mainColumnName: "Contact",
              relatedEntitySchemaName: "ChessInterest",
              relatedColumnName: "ChessInterest"
            }
          };
          return items;
        }
      },
 
...
 
      diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "ChessInterests",
				"values": {
					"className": "Terrasoft.MultiChoiceCombobox",
					"bindTo": "ChessInterests",
					"dataValueType": 11,
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 5
					},
					"labelConfig": {
						"caption": "Select interests"
					}
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 0
			},
}



 

Like 0

Like

9 comments
Best reply

Fixed it with another one. Last one was wrong

              mainEntitySchemaName: "ChessContactInterest",
              mainColumnName: "ChessContact",
              relatedEntitySchemaName: "ChessInterest",
              relatedColumnName: "ChessInterest"

Explanation as I understand it:

mainEntitySchemaName: "My Link Table",
mainColumnName: "Property in Link table matching current record Id (In my case ContactId)", 
relatedEntitySchemaName: "Object to select", 
relatedColumnName: "Objects column name in Link table"

Bumping this

Hi Julius,

 

I recommend double-checking the following parameters: mainEntitySchemaName, mainColumnName, and relatedColumnName. They all are responsible for data storage.

 

Also, could you please provide a screenshot of the settings for the 'ChessContactInterest' object with added fields? This would help investigate the issue further.

Alexander Demidov,

Alexander Demidov,

I managed to solve it.

        getMultiChoiceEntitiesConfig: function () {
          const items = {
            ChessInterests: {
              mainEntitySchemaName: "ChessContactInterest",
              mainColumnName: "ChessContact",
              relatedEntitySchemaName: "ChessContactInterest",
              relatedColumnName: "ChessInterest"
            }
          };

Now my next issue is that I don't have a Displayed Value on my link-object (ChessContactInterestChess). I can't select one in the drop-down

Fixed it with another one. Last one was wrong

              mainEntitySchemaName: "ChessContactInterest",
              mainColumnName: "ChessContact",
              relatedEntitySchemaName: "ChessInterest",
              relatedColumnName: "ChessInterest"

Explanation as I understand it:

mainEntitySchemaName: "My Link Table",
mainColumnName: "Property in Link table matching current record Id (In my case ContactId)", 
relatedEntitySchemaName: "Object to select", 
relatedColumnName: "Objects column name in Link table"

Hi Julius,

 

It's great to hear that you resolved these issues! We will add your findings to the app description to help streamline the field setup.

Hi,

I get this problem too, that values are not being saved.

I checked the above elements and they are good!

What else can cause that issue?

 

I managed to solve it.

I deleted the name field that was automatically created when I create the object through the detail wizard. It's required and probably that couldn't be save missing that field.

Hello. I'm working with the Multiple choice field setup for Creatio (https://marketplace.creatio.com/app/multiple-choice-field-setup-creatio) add-on but I'm not getting it to save the selected values.

I've followed the guide here: https://marketplace.creatio.com/sites/marketplace/files/app-guide/Multi…

I get the values correctly on the page, and they are selectable. But nothing is saved to the database when i Save the record

Object: UsrContactLabels

Lookup: UsrLabels

Link-object: UsrContact

Show all comments
ConnectedTo
Sales_Creatio
7.17

Dear, In account, there is the visual schema in the ConnectedTo tab: https://prnt.sc/10q02hg How can I add a relation in this schema from a business process? I cannot find the existing connections in any object and if I try to add a new relationship to the Relationship object, nothing is changed. Kind regards, Vincent

Like 0

Like

1 comments

Hello Vincent,

 

Hope you're doing well.

 

To be able to add or modify relationships via business process please use the object Relationship. It contains a connection for both contacts and accounts and can be used for adding any possible relations between those objects.

 

Also, the links below can be useful for further working with relationships:

Best regards,

Roman

Show all comments
Sales_Creatio
7.16

Hi,

 

Is it possible to create Data entry compliance for Leads section? Or any of the custom sections?

 

Thanks

Like 0

Like

3 comments
Best reply

HI Kavian,

 

Yes, it's possible. Here are the steps;

 

1) Add a "Completeness" field into your section object. This one should be an integer.

 

2) Add a record about your section into the "Completeness" table. You can do it with the following SQL script:

INSERT INTO Completeness (Name, EntitySchemaName, ResultColumnName, Scale)
    VALUES ('Quotes', 'VistQuotes', 'VistCompleteness', '{"sectorsBounds":{"min":0,"middleFrom":50,"middleTo":80,"max":100}}')

You should specify Name, EntitySchemaName, ResultColumnName and Scale columns.

 

3) Create replacing client module for your page (for example VistQuotes1Page in my case).

 

4) Add dependencies on following schemas: "CompletenessIndicator", "CompletenessMixin", "css!CompletenessCSSV2", "TooltipUtilities".

 

5) Add two attributes into the "attributes" area:

CompletenessValue: {
    dataValueType: Terrasoft.DataValueType.INTEGER,
    value: 0
},
MissingParametersCollection: {
    dataValueType: Terrasoft.DataValueType.COLLECTION
}

6) Add two mixins (CompletenessMixin, TooltipUtilitiesMixin) into your schema.

mixins: {
    CompletenessMixin: "Terrasoft.CompletenessMixin",
    TooltipUtilitiesMixin: "Terrasoft.TooltipUtilities"
},

7) Add the following methods:

methods: {
    init: function() {
        this.set("MissingParametersCollection", this.Ext.create("Terrasoft.BaseViewModelCollection"));
        this.callParent(arguments);
    },
    onDetailChanged: function() {
        this.callParent(arguments);
        this.calculateCompleteness();
    },
    onEntityInitialized: function() {
        this.callParent(arguments);
        if (this.isEditMode()) {
            var collection = this.get("MissingParametersCollection");
            collection.clear();
            this.set("CompletenessValue", 0);
            this.calculateCompleteness();
        }
    },
    onSaved: function() {
        var callParentOnSaved = this.get("CallParentOnSaved");
        this.callParent(arguments);
        if (!callParentOnSaved && !this.isNewMode() && !this.get("IsProcessMode")) {
            this.calculateCompleteness();
        }
    },
    calculateCompleteness: function() {
        var config = {
            recordId: this.get("Id"),
            schemaName: this.entitySchemaName
        };
        this.mixins.CompletenessMixin.getCompleteness.call(this, config, this.calculateCompletenessResponce, this);
    },
    calculateCompletenessResponce: function(completenessResponce) {
        if (this.Ext.isEmpty(completenessResponce)) {
            return;
        }
        var missingParametersCollection = completenessResponce.missingParametersCollection;
        var completeness = completenessResponce.completenessValue;
        var scale = completenessResponce.scale;
        if (!this.Ext.isEmpty(missingParametersCollection)) {
            var collection = this.get("MissingParametersCollection");
            collection.clear();
            collection.loadAll(missingParametersCollection);
        }
        if (this.Ext.isObject(scale) && this.Ext.isArray(scale.sectorsBounds)) {
            this.set("CompletenessSectorsBounds", scale.sectorsBounds);
        }
        if (this.Ext.isNumber(completeness)) {
            this.set("CompletenessValue", completeness);
        }
    }
},

8) Insert completeness bar into your page with code like following:

diff: /**SCHEMA_DIFF*/[
    {
        "operation": "insert",
        "parentName": "MetricsContainer",
        "propertyName": "items",
        "name": "CompletenessContainer",
        "values": {
            "itemType": Terrasoft.ViewItemType.CONTAINER,
            "items": []
        }
    },
    {
        "operation": "insert",
        "parentName": "CompletenessContainer",
        "propertyName": "items",
        "name": "CompletenessValue",
        "values": {
            "generator": "ConfigurationRectProgressBarGenerator.generateProgressBar",
            "controlConfig": {
                "value": {
                    "bindTo": "CompletenessValue"
                },
                "menu": {
                    "items": {
                        "bindTo": "MissingParametersCollection"
                    }
                },
                "sectorsBounds": {
                    "bindTo": "CompletenessSectorsBounds"
                }
            },
            "tips": [],
            "layout": {
                "column": 0,
                "row": 0,
                "rowSpan": 1,
                "colSpan": 1
            }
        }
    },
    {
        "operation": "insert",
        "parentName": "CompletenessValue",
        "propertyName": "tips",
        "name": "CompletenessTip",
        "values": {
            "content": {"bindTo": "Resources.Strings.CompletenessHint"}
        }
    }
]/**SCHEMA_DIFF*/

A full example of code can be found below:

define("VistQuotes1Page", ["CompletenessIndicator", "CompletenessMixin", "css!CompletenessCSSV2", "TooltipUtilities"],
    function() {
    return {
        entitySchemaName: "VistQuotes",
        attributes: {
            CompletenessValue: {
                dataValueType: Terrasoft.DataValueType.INTEGER,
                value: 0
            },
            MissingParametersCollection: {
                dataValueType: Terrasoft.DataValueType.COLLECTION
            }
        },
        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
        methods: {
            init: function() {
                this.set("MissingParametersCollection", this.Ext.create("Terrasoft.BaseViewModelCollection"));
                this.callParent(arguments);
            },
            onDetailChanged: function() {
                this.callParent(arguments);
                this.calculateCompleteness();
            },
            onEntityInitialized: function() {
                this.callParent(arguments);
                if (this.isEditMode()) {
                    var collection = this.get("MissingParametersCollection");
                    collection.clear();
                    this.set("CompletenessValue", 0);
                    this.calculateCompleteness();
                }
            },
            onSaved: function() {
                var callParentOnSaved = this.get("CallParentOnSaved");
                this.callParent(arguments);
                if (!callParentOnSaved && !this.isNewMode() && !this.get("IsProcessMode")) {
                    this.calculateCompleteness();
                }
            },
            calculateCompleteness: function() {
                var config = {
                    recordId: this.get("Id"),
                    schemaName: this.entitySchemaName
                };
                this.mixins.CompletenessMixin.getCompleteness.call(this, config, this.calculateCompletenessResponce, this);
            },
            calculateCompletenessResponce: function(completenessResponce) {
                if (this.Ext.isEmpty(completenessResponce)) {
                    return;
                }
                var missingParametersCollection = completenessResponce.missingParametersCollection;
                var completeness = completenessResponce.completenessValue;
                var scale = completenessResponce.scale;
                if (!this.Ext.isEmpty(missingParametersCollection)) {
                    var collection = this.get("MissingParametersCollection");
                    collection.clear();
                    collection.loadAll(missingParametersCollection);
                }
                if (this.Ext.isObject(scale) && this.Ext.isArray(scale.sectorsBounds)) {
                    this.set("CompletenessSectorsBounds", scale.sectorsBounds);
                }
                if (this.Ext.isNumber(completeness)) {
                    this.set("CompletenessValue", completeness);
                }
            }
        },
        mixins: {
            CompletenessMixin: "Terrasoft.CompletenessMixin",
            TooltipUtilitiesMixin: "Terrasoft.TooltipUtilities"
        },
        dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "parentName": "MetricsContainer",
                "propertyName": "items",
                "name": "CompletenessContainer",
                "values": {
                    "itemType": Terrasoft.ViewItemType.CONTAINER,
                    "items": []
                }
            },
            {
                "operation": "insert",
                "parentName": "CompletenessContainer",
                "propertyName": "items",
                "name": "CompletenessValue",
                "values": {
                    "generator": "ConfigurationRectProgressBarGenerator.generateProgressBar",
                    "controlConfig": {
                        "value": {
                            "bindTo": "CompletenessValue"
                        },
                        "menu": {
                            "items": {
                                "bindTo": "MissingParametersCollection"
                            }
                        },
                        "sectorsBounds": {
                            "bindTo": "CompletenessSectorsBounds"
                        }
                    },
                    "tips": [],
                    "layout": {
                        "column": 0,
                        "row": 0,
                        "rowSpan": 1,
                        "colSpan": 1
                    }
                }
            },
            {
                "operation": "insert",
                "parentName": "CompletenessValue",
                "propertyName": "tips",
                "name": "CompletenessTip",
                "values": {
                    "content": {"bindTo": "Resources.Strings.CompletenessHint"}
                }
            },
            {
                "operation": "insert",
                "name": "VistStatusa33f682a-dd58-4739-919d-cb84b9d2fc70",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 12,
                        "row": 10,
                        "layoutName": "Header"
                    },
                    "bindTo": "VistStatus",
                    "enabled": true
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 46
            }
        ]/**SCHEMA_DIFF*/
    };
});

 

Best regards,

Oscar

HI Kavian,

 

Yes, it's possible. Here are the steps;

 

1) Add a "Completeness" field into your section object. This one should be an integer.

 

2) Add a record about your section into the "Completeness" table. You can do it with the following SQL script:

INSERT INTO Completeness (Name, EntitySchemaName, ResultColumnName, Scale)
    VALUES ('Quotes', 'VistQuotes', 'VistCompleteness', '{"sectorsBounds":{"min":0,"middleFrom":50,"middleTo":80,"max":100}}')

You should specify Name, EntitySchemaName, ResultColumnName and Scale columns.

 

3) Create replacing client module for your page (for example VistQuotes1Page in my case).

 

4) Add dependencies on following schemas: "CompletenessIndicator", "CompletenessMixin", "css!CompletenessCSSV2", "TooltipUtilities".

 

5) Add two attributes into the "attributes" area:

CompletenessValue: {
    dataValueType: Terrasoft.DataValueType.INTEGER,
    value: 0
},
MissingParametersCollection: {
    dataValueType: Terrasoft.DataValueType.COLLECTION
}

6) Add two mixins (CompletenessMixin, TooltipUtilitiesMixin) into your schema.

mixins: {
    CompletenessMixin: "Terrasoft.CompletenessMixin",
    TooltipUtilitiesMixin: "Terrasoft.TooltipUtilities"
},

7) Add the following methods:

methods: {
    init: function() {
        this.set("MissingParametersCollection", this.Ext.create("Terrasoft.BaseViewModelCollection"));
        this.callParent(arguments);
    },
    onDetailChanged: function() {
        this.callParent(arguments);
        this.calculateCompleteness();
    },
    onEntityInitialized: function() {
        this.callParent(arguments);
        if (this.isEditMode()) {
            var collection = this.get("MissingParametersCollection");
            collection.clear();
            this.set("CompletenessValue", 0);
            this.calculateCompleteness();
        }
    },
    onSaved: function() {
        var callParentOnSaved = this.get("CallParentOnSaved");
        this.callParent(arguments);
        if (!callParentOnSaved && !this.isNewMode() && !this.get("IsProcessMode")) {
            this.calculateCompleteness();
        }
    },
    calculateCompleteness: function() {
        var config = {
            recordId: this.get("Id"),
            schemaName: this.entitySchemaName
        };
        this.mixins.CompletenessMixin.getCompleteness.call(this, config, this.calculateCompletenessResponce, this);
    },
    calculateCompletenessResponce: function(completenessResponce) {
        if (this.Ext.isEmpty(completenessResponce)) {
            return;
        }
        var missingParametersCollection = completenessResponce.missingParametersCollection;
        var completeness = completenessResponce.completenessValue;
        var scale = completenessResponce.scale;
        if (!this.Ext.isEmpty(missingParametersCollection)) {
            var collection = this.get("MissingParametersCollection");
            collection.clear();
            collection.loadAll(missingParametersCollection);
        }
        if (this.Ext.isObject(scale) && this.Ext.isArray(scale.sectorsBounds)) {
            this.set("CompletenessSectorsBounds", scale.sectorsBounds);
        }
        if (this.Ext.isNumber(completeness)) {
            this.set("CompletenessValue", completeness);
        }
    }
},

8) Insert completeness bar into your page with code like following:

diff: /**SCHEMA_DIFF*/[
    {
        "operation": "insert",
        "parentName": "MetricsContainer",
        "propertyName": "items",
        "name": "CompletenessContainer",
        "values": {
            "itemType": Terrasoft.ViewItemType.CONTAINER,
            "items": []
        }
    },
    {
        "operation": "insert",
        "parentName": "CompletenessContainer",
        "propertyName": "items",
        "name": "CompletenessValue",
        "values": {
            "generator": "ConfigurationRectProgressBarGenerator.generateProgressBar",
            "controlConfig": {
                "value": {
                    "bindTo": "CompletenessValue"
                },
                "menu": {
                    "items": {
                        "bindTo": "MissingParametersCollection"
                    }
                },
                "sectorsBounds": {
                    "bindTo": "CompletenessSectorsBounds"
                }
            },
            "tips": [],
            "layout": {
                "column": 0,
                "row": 0,
                "rowSpan": 1,
                "colSpan": 1
            }
        }
    },
    {
        "operation": "insert",
        "parentName": "CompletenessValue",
        "propertyName": "tips",
        "name": "CompletenessTip",
        "values": {
            "content": {"bindTo": "Resources.Strings.CompletenessHint"}
        }
    }
]/**SCHEMA_DIFF*/

A full example of code can be found below:

define("VistQuotes1Page", ["CompletenessIndicator", "CompletenessMixin", "css!CompletenessCSSV2", "TooltipUtilities"],
    function() {
    return {
        entitySchemaName: "VistQuotes",
        attributes: {
            CompletenessValue: {
                dataValueType: Terrasoft.DataValueType.INTEGER,
                value: 0
            },
            MissingParametersCollection: {
                dataValueType: Terrasoft.DataValueType.COLLECTION
            }
        },
        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
        methods: {
            init: function() {
                this.set("MissingParametersCollection", this.Ext.create("Terrasoft.BaseViewModelCollection"));
                this.callParent(arguments);
            },
            onDetailChanged: function() {
                this.callParent(arguments);
                this.calculateCompleteness();
            },
            onEntityInitialized: function() {
                this.callParent(arguments);
                if (this.isEditMode()) {
                    var collection = this.get("MissingParametersCollection");
                    collection.clear();
                    this.set("CompletenessValue", 0);
                    this.calculateCompleteness();
                }
            },
            onSaved: function() {
                var callParentOnSaved = this.get("CallParentOnSaved");
                this.callParent(arguments);
                if (!callParentOnSaved && !this.isNewMode() && !this.get("IsProcessMode")) {
                    this.calculateCompleteness();
                }
            },
            calculateCompleteness: function() {
                var config = {
                    recordId: this.get("Id"),
                    schemaName: this.entitySchemaName
                };
                this.mixins.CompletenessMixin.getCompleteness.call(this, config, this.calculateCompletenessResponce, this);
            },
            calculateCompletenessResponce: function(completenessResponce) {
                if (this.Ext.isEmpty(completenessResponce)) {
                    return;
                }
                var missingParametersCollection = completenessResponce.missingParametersCollection;
                var completeness = completenessResponce.completenessValue;
                var scale = completenessResponce.scale;
                if (!this.Ext.isEmpty(missingParametersCollection)) {
                    var collection = this.get("MissingParametersCollection");
                    collection.clear();
                    collection.loadAll(missingParametersCollection);
                }
                if (this.Ext.isObject(scale) && this.Ext.isArray(scale.sectorsBounds)) {
                    this.set("CompletenessSectorsBounds", scale.sectorsBounds);
                }
                if (this.Ext.isNumber(completeness)) {
                    this.set("CompletenessValue", completeness);
                }
            }
        },
        mixins: {
            CompletenessMixin: "Terrasoft.CompletenessMixin",
            TooltipUtilitiesMixin: "Terrasoft.TooltipUtilities"
        },
        dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "parentName": "MetricsContainer",
                "propertyName": "items",
                "name": "CompletenessContainer",
                "values": {
                    "itemType": Terrasoft.ViewItemType.CONTAINER,
                    "items": []
                }
            },
            {
                "operation": "insert",
                "parentName": "CompletenessContainer",
                "propertyName": "items",
                "name": "CompletenessValue",
                "values": {
                    "generator": "ConfigurationRectProgressBarGenerator.generateProgressBar",
                    "controlConfig": {
                        "value": {
                            "bindTo": "CompletenessValue"
                        },
                        "menu": {
                            "items": {
                                "bindTo": "MissingParametersCollection"
                            }
                        },
                        "sectorsBounds": {
                            "bindTo": "CompletenessSectorsBounds"
                        }
                    },
                    "tips": [],
                    "layout": {
                        "column": 0,
                        "row": 0,
                        "rowSpan": 1,
                        "colSpan": 1
                    }
                }
            },
            {
                "operation": "insert",
                "parentName": "CompletenessValue",
                "propertyName": "tips",
                "name": "CompletenessTip",
                "values": {
                    "content": {"bindTo": "Resources.Strings.CompletenessHint"}
                }
            },
            {
                "operation": "insert",
                "name": "VistStatusa33f682a-dd58-4739-919d-cb84b9d2fc70",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 12,
                        "row": 10,
                        "layoutName": "Header"
                    },
                    "bindTo": "VistStatus",
                    "enabled": true
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 46
            }
        ]/**SCHEMA_DIFF*/
    };
});

 

Best regards,

Oscar

Oscar Dylan,

Thanks, is it possible to define negative values? For example, if Lead Contact unsubscribe from a Marketing Campaign, a boolean would be triggered and therefore it will reset the data entry compliance to 0.

 

Thanks,

Hi Kavian Abhari,



Please try to use this code.

 



onEntityInitialized: function() {

      var IsUnsubscribed = true;

        this.callParent(arguments);

        if (this.isEditMode()) {

            var collection = this.get("MissingParametersCollection");

            collection.clear();

          this.set("CompletenessValue", 0);

          if(this.get("IsUnsubscribed") == true){

          return;

          } else

          this.calculateCompleteness();

        }

    },





P.S. "IsUnsubscribed" - this is my example of your boolean variable that sets the unsubscribe logic.



Best Regards, 



Bogdan L.

Show all comments
Sales_Creatio
7.17

HI,

Currently I have my Creatio set up to use an individual's person mailbox for sending system emails e.g. the Mailbox for sending email with information on approval. This causes issues, as this persons mailbox gets filled up with sent items which are not appropriate.

 

We use Office 365 for mail and therefore I wanted to set up a distribution group mailbox (no license consumption) for no-reply@ or creatio.notification@ and use this, but when trying to add the mailbox to Creatio, I need a valid password, for which this account does not have. I obviously can use the Group Delegation feature to allow a Send As account, but again am unsure how I can configure this in Creatio.

 

Any help is appreciated.

 

thanks

Like 0

Like

4 comments

Dear Mark,

 

For now, distribution group mailboxes are not supported on our platform. I will ask our developers to take into consideration your post and add this functionality in future releases. 

 

Best regards,

Angela

Angela Reyes,

Hi Angela

 

Firstly, thank you for your reply.

 

Are you able to provide guidance on the method to utilise an O365 non-user account as the email account used to send such notification mails? It is really annoying for a user to see so many 'system' mails in their Sent items, when this is something a service account should be configured to use. 

 

Obviously I would rather not pay for an O365 license just for this function.

Mark Roberts,

For now, we can only suggest using a shared mailbox for such emails or use an additional mailbox. 

 

Best regards,

Angela

Hi

 

Is there any update to this function being added to Creatio?

 

thanks

Show all comments
Marketing_Creatio
saveprintable
Sales_Creatio
7.17

Hello colleagues,

 

Somebody using this app? 

 

First of all understand if it works with FastReport printables, ad if the case:

 

Could you share, please some tips to populate the parameters? With the documentation provide I have doubt's and, of course, getting errors using it on those parameters specifically:

 

  • In the case of FastReport, "Convert to PDF" which value must have?
  • "File object" is an input parameter or here I get the Id of created attachment? If not which "File object" Id must I provide here?
  • "Master Column name" is a text, any text? Which is the purpose of this parameter?
  • "Master column value", I understand is the Id of the record where we want to attach the report on File & Links, for example to an Email, ActivityId?
  • "Record ID for printable" in the case of an Account printable (for example), the Id of the account from which we need the report?

Thank you very much for your help

Like 0

Like

3 comments

Hi Julio,

 

 

This app only supports .docx printables, therefore the 'Convert to PDF' parameter must always be 'False'.

 

Here is how the correctly set up element should look like:

No description available.

 

 

Thank you for your questions. We will mention that the app only supports .docx printables in its description.

Thanks Ivan, the image looks broken, could you upload again, please?

Ivan Leontiev,

Is also there any way to a new release that consider FastReport reports?

Show all comments
portal users
user
system users
Sales_Creatio
7.17

Hello Colleagues,

 

In a process I need to publish some articles or info regarding some specific contacts in Customers. Those are specifically to one contact in the account.

 

I get the contact id, but don't know how to get the id of the user that belongs this contact to could add permissions to the article in the knowledge base,

 

Some ideas, please?

Like 0

Like

2 comments

Dear Julio,

 

In general - it is not possible. Theoretically you can read the system administration object and get the contact id. Anyway that will not help since the processes do not work with table that stores users due to security reasons. 

Instead you can use the change rights element and grant the rights for employee. It allows to work with user contacts. The rights are assigned to the users through their contacts, so you can select the required contact and assign the necessary rights. 

 

Regards,

Dean

Dean Parrett,

Thanks Dean,

 

it's possible, I did it, see here https://prnt.sc/10j4kvf

 

With the "contactID" you read on "System users (view)" where Contact = contactID, in the result record the Id is the "user Id" you can use later to assign permission to read the article.

 

I understand what you expose, but I check it and works fine, I check the permissions in the article and are as I need, also the user connect to portal and can read the article

 

Thanks again

Show all comments
marketplace
ExcelReportBuilder
Sales_Creatio
7.17

hello colleagues

 

On Creatio 7.17.2 (Cloud, updated by Creatio) I cannot upload Excel Templates.

 

I also delete extensions .jar, and .apk regarding what publish some time ago @Ryan Farley on https://customerfx.com/article/failure-to-upload-template-for-excel-rep…

 

But on a new site (demo) on v 7.17.1 without to modify nothing regarding extensions I can upload without any problem. I report this to Creatio Support, but they ask me to publish the problem here.

 

Thanks in advance

Like 0

Like

11 comments

 

Hello Julio,

 

Thank you for the detailed video. I saved the link and removed it from the post.

 

I was able to reproduce the issue and forwarded it to the relevant team for further analysis.

Ivan Leontiev,

Thanks Ivan

Hi

I have the same problem. Did you find the solution ?

Thanks

Hi Tiffany,

 

The team is still investigating this issue. I will let you know as soon as we have more information.

Ivan Leontiev,

Thanks Ivan

Any news about this case? I have the same problem

Hello Julio, Tiffany and Daniel,

 

The team fixed this issue. Install the updated package from Creatio Marketplace to resolve it on your end.

Hi Ivan Leontiev,

 

When I install the updated package are giving me the following mistakes that I don't understand.

Any idea how to solve it?

2021-04-21 18:30:27,256 Errors and (or) warnings occurred while compiling configuration dll
2021-04-21 18:30:27,271 Autogenerated\Src\IntReportHelper.IntExcelExport.cs(110,54) error CS0433: The type 'ExcelPackage' exists in both 'EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' and 'EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1'
2021-04-21 18:30:27,271 Autogenerated\Src\IntReportHelper.IntExcelExport.cs(273,31) error CS0433: The type 'ExcelWorksheet' exists in both 'EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' and 'EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1'
2021-04-21 18:30:27,271 Autogenerated\Src\IntReportHelper.IntExcelExport.cs(110,11) error CS0433: The type 'ExcelWorksheet' exists in both 'EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' and 'EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1'
2021-04-21 18:30:27,271 Autogenerated\Src\IntReportHelper.IntExcelExport.cs(84,49) error CS0433: The type 'ExcelPackage' exists in both 'EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' and 'EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1'
2021-04-21 18:30:27,271 Autogenerated\Src\IntReportHelper.IntExcelExport.cs(84,11) error CS0433: The type 'ExcelWorksheet' exists in both 'EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' and 'EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1'
2021-04-21 18:30:27,271 C:\Program Files\dotnet\sdk\3.1.301\Microsoft.Common.CurrentVersion.targets(2081,5) warning MSB3243: No way to resolve conflict between "EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1" and "EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1". Choosing "EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1" arbitrarily.
2021-04-21 18:30:35,410 When application installed, an error(s) occured

 

Hi Daniel,

 

This means you have another package with the EPPlus library. Creatio does not allow you to install the same library twice.

Any idea in how to delete the ERPlus library?

Hi Daniel,

 

Unfortunately, the responsible team cannot remove the EPPlus library from the app package. Would you consider removing the library from the other package installed on your site?

Show all comments
dashboards
Sales_Creatio
7.17

 

While creating a dashboard , to select any contact / owner , Creatio gives the option to choose contact or current contact . If the same dashboard is to be made available for a specific org role or few org roles  , how can that be configured ?

Like 0

Like

1 comments

Hello Shailey,

 

You can try to built the filter in a following way:

 

Best regards,

Bogdan S.

Show all comments