Hi community,

I tried to install on my creatio instance the map widget (Map widget for Creatio | Creatio Marketplace), but it does not appear in the chart type list on dashboard designer.

 

What am I doing wrong?

Like 0

Like

3 comments

Hello Stefano,

See my reply on this post from Sept 15, it has the solution to get this to work (by overriding BootstrapModulesV2) https://community.creatio.com/questions/map-widget-creatio-no-map-option

Ryan

thank you very much!

Hi Stefano,

 

You could also check Mapsly which is a map solution available in Creatio Marketplace :)

Show all comments

Hello,



when replying to an email in Creatio, the lookup widget is missing in front of the CC field (the magnifying glass icon).

Can someone confirm this ?

it seems to be a bug...



Regards

Patrice

Like 0

Like

3 comments

Hello Patrice,

 

Thank you for your question!

 

Most probably, this field was replaced (added manually). We kindly suggest approaching our support team via support@creatio.com to have a closer look at the issue. It is hard to determine the root cause without having the access to the system itself.

 

Kind regards,

Anastasiia

Thank you Anastasiia,

i did thought it was an oob feature, it indeed has been added manually..

I'm gonna investigate a bit more about it.



Best regards

Patrice

Update : 

for some reason, in EmailPageV2,  the CC widget was disabled with 

{
"operation": "remove",
"name": "ToggleCopyRecipientVisible"
}

So i removed that part and added :

{
  "operation": "merge",
  "name": "ToggleCopyRecipientVisible",
  "values": {
   "layout": {
    "colSpan": 1,
    "rowSpan": 1,
    "column": 23,
    "row": 1
   }
 }
}

Issue solved !

Show all comments

So I was wondering...

I noticed that the "Feed" has a field called "Color" yet it doesn't really do much, I tried changing the colors and posting different stuff but it appears to be there for no reason, I assume that's not the case as there must be a reasoning behind this field so I figured I'd ask.

 

What does it do or change? How can I use this field?

 

 

Thanks in advance!

Like 0

Like

3 comments

Hello Edo, 

 

This field changes the color of Channel message, you can check the changes in the Feed section directly:

 





Should  you have any additional questions, please let us know!

Best regards,

Anastasiia

Hey,

 

Thank you very much for your reply!

 

That is super weird, I just checked 3 different domains we are working on and none of them has this.

 

I was looking at the Feed section and it's all blank white, no matter what color is chosen.

 

 

Edo Sagron,

For me I can see the colors in the feed section itself, but not in the communication panel feed. There is CSS out of the box that hides the colors in the feed panel in the right side communication panel. I don't know if it was intentional or not, since it adds the left border color, but then sets the style to not show it, weird. Just thought I'd mention this in case you're looking at the feed in the panel. See 

https://share.customerfx.com/7KuAZj7p

If you wanted to override this, you could add this as a global style:

.right-panel #ESNFeedModule_WrapContainer .parentPostContainer {
    border-left-style: solid !important;
}

Then it will show the color in the communication panel feed items.

Ryan

Show all comments

Hi Team,

 

I want to fetch the values of actions associated with the section that I'm accessing for which I have written the code given below:

 

The code is giving me the result as :

 

I'm still not able to fetch the list of action menu items as the section. Please help me fetch the values of action button items.

 

 

Thanks in advance

 

Sarika Sharma

Like 0

Like

2 comments

Hi,

 

Please explain which data do you want to fetch from these buttons.

 

Thank you!

 

Best regards,

Oscar

Hi Sarika

 

 

Here is the post where the same question is discussed:

 

https://community.creatio.com/questions/Fetchsectionactionlist

 

Please let me know if it helps!

 

Regards, 

 

Bogdan L.

 

Show all comments

Dear Comunity.

 

When a new activity-record is created (not update) I have to calculate some fields.

Normally I would do this on the server (business-process etc.).

But in this special case I need some information from the client (geo-coordinates).

I found the method "save" method in the "BaseEntityPage". It is possible to overwrite it.

But I have one problem, I could not find a way to find out if it is a new record or not.

I tried following methods/attibutes

  • this.isNewMode();
  • this.get("Operations");
  • this.isNew;

Everything brought the same result, whether I created a new data record or not: 'edit'



 

Like 0

Like

4 comments

You can try

if (!this.isAddMode() && !this.isCopyMode())

Vladimir Sokolov,

Hello. 

Thanks for the quick reply.

Unfortunately, both methods "isAddMode()" and "isCopyMode()" returns every time the same value:  false. sad

Regardless of whether I create a new data record or not.

 

Maybe "save" ist not the right method. 

But I could not finde a method like "onBeforeSave",  or something like that.

Christian Kern,

 

Hi,

 

save client-side method is the same "onBeforeSave" from the server-side logic. There is also onSaved method that is the same as "onRecordSaved" in the server logic. And the this.isAddMode() check that Vladimir mentioned works perfectly if using it both in the save and onSaved methods on the client-side.

 

You need to debug the code and find a way to make it work in the way you need the business task to be completed. Probably if you could share the code of your page and describe the task in details we could take a look at it together.

 

Best regards,

Oscar 

Hello.

 

I found the cause of my problem.

In our project we work with the ActivityMiniPage.

If you expand this AcitvityMiniPage to the normal page (ActivityPageV2)  the record is saved automatically. For this reason it is always a "change" for the system if I click on the "Save" button.

Show all comments

Very strange occurance with our instance.  activities that were created during a 'make recurring' process are not visible in Schedule view when logged in and attempting to look at their own activities.  When others set the owner in the Schedule view in the activity section to the activity owner, the activities are visible.  Has anyone else seen this with this Marketplace add-on?

Like 0

Like

3 comments

Hello Stephen,

 

Kindly note that the add-on was developed for and tested on Creatio desktop.

 

That said, please send us the following details:

 

1. Creatio desktop product and version.

2. Mobile app version and operating system.

 

This information will help us to reproduce the issue and get back to you with feedback.

Thank you:

 

our desktop is Sales Creatio, enterprise edition Version 7.17.1.1363

Mobile OS and app version are Android and v7.18.5

Stephen J Fisher,

Hi Stephen!

Based on the symptoms, I recommend rechecking the ActivityParticipant Detail.

All out-of-the-box filters in the Activity section work with this detail because one activity can have several participants. Maybe there is a problem with the data in this detail.

 

We have also reviewed the add-on and tested it on our site. However, we were unable to reproduce the issue on our end.

 

Possible reasons for this:

1. Non-standard rights settings on ActivityParticipant Detail.

2. Customized Activity \ ActivityParticipant or Recurring Activities logic.

I recommend using the official version of the add-on.

 

Also, you may test your settings on a trial site to pinpoint the bottleneck.

 

Show all comments

Hi,

I am trying to update a lookup field linked to Owner field of Accounts (Lookup to Contacts) for multiple records using an input box, which is added as custom action. But, the list of records are not displaying either by typing in the field or clicking on magnifying glass icon.

 

I have tried multiple way to bind attributes and diff but no progress, therefore I have attached the code snippet of this custom action for reference.

 

I appreciate if you can suggest a way to tackle this issue.

Thanks,

 

File attachments
Like 0

Like

5 comments
Best reply

Hi Kavian,

 

The code below will do the trick:

define("AccountSectionV2", [], function() {
	return {
		entitySchemaName: "Account",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		attributes:{},
		methods: {
			updateAccount: function(callback, autoIds, selectedContact){
				var update = Ext.create("Terrasoft.UpdateQuery", {
                            rootSchemaName: "Account"
                        });
				var filters = Terrasoft.createFilterGroup();
				filters.logicalOperation = Terrasoft.LogicalOperatorType.OR;
				autoIds.forEach(function(item) {
					var accountIdFilter = update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Id", item);
					filters.add("AccountIdFilter" + item, accountIdFilter);
				}, this);
				update.filters.add(filters);
				update.setParameterValue("Owner", selectedContact, Terrasoft.DataValueType.LOOKUP);
				update.execute(function(result) {
					callback.call(this, result);
				}, this);
			},
			getSectionActions: function() {
				var actionMenuItems = this.callParent(arguments);
				actionMenuItems.addItem(this.getButtonMenuItem({
					"Caption": {bindTo: "Resources.Strings.MultiplyChangeAction"},
					"Click": {bindTo: "showOwnerInfo"}
				}));
				return actionMenuItems;
			},
			showOwnerInfo: function() {
                var caption = "Select an owner";
                var ContactList;
                this.set("ContactList", new Terrasoft.Collection());
                var controls = {
                    "Owner": {
                        dataValueType: Terrasoft.DataValueType.ENUM,
                        isRequired: true,
                        caption: "Owner",
                        value: {
                            bindTo: "Contact"
                        },
                        customConfig: {
                            list: {
                                bindTo: "ContactList"
                            },
                            prepareList: {
                                bindTo: "onPrepareContactList"
                            }
                        }
                    }
                };
                var ownerInputBoxHandler = this.ownerInputBoxHandler.bind(this);
                Terrasoft.utils.inputBox(caption, ownerInputBoxHandler, [
					{
						className: "Terrasoft.Button",
						caption: "ASSIGN",
						returnCode: "ok"
					}, "cancel"
				], this, controls);
                Terrasoft.each(Terrasoft.MessageBox.controlArray, function(item){
                    item.control.bind(this);
                }, this);
            },
            onPrepareContactList: function(){
                var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" });
                esq.addColumn("Id");
                esq.addColumn("Name");
                esq.getEntityCollection(function(result){
                    if (result.success){
                        var items = {};
                        result.collection.each(function(item) {
                            items[item.get("Id")] = { "value": item.get("Id"), "displayValue": item.get("Name") };
                        }, this);
                    }
                    var list = this.get("ContactList");
                    list.loadAll(items);
                }, this);
            },
            ownerInputBoxHandler: function(tag, data){
				var autoIds = this.getSelectedItems();
				var selectedContact = data.Owner.value;
                if (Terrasoft.MessageBoxButtons.OK.returnCode === tag){
                    if (Ext.isEmpty(selectedContact)){
                        this.showInformationDialog("Field is required", function(){
                            this.showOwnerInfo();
                        });
                    } else {
                        this.updateAccount(function(context, result){}, autoIds, selectedContact);
                    }
                }
            }
		}
	};
});

You will be able to select an owner from contacts:

and the selected records will be updated properly.

 

Best regards,

Oscar

Hi Kavian,

 

The code below will do the trick:

define("AccountSectionV2", [], function() {
	return {
		entitySchemaName: "Account",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		attributes:{},
		methods: {
			updateAccount: function(callback, autoIds, selectedContact){
				var update = Ext.create("Terrasoft.UpdateQuery", {
                            rootSchemaName: "Account"
                        });
				var filters = Terrasoft.createFilterGroup();
				filters.logicalOperation = Terrasoft.LogicalOperatorType.OR;
				autoIds.forEach(function(item) {
					var accountIdFilter = update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Id", item);
					filters.add("AccountIdFilter" + item, accountIdFilter);
				}, this);
				update.filters.add(filters);
				update.setParameterValue("Owner", selectedContact, Terrasoft.DataValueType.LOOKUP);
				update.execute(function(result) {
					callback.call(this, result);
				}, this);
			},
			getSectionActions: function() {
				var actionMenuItems = this.callParent(arguments);
				actionMenuItems.addItem(this.getButtonMenuItem({
					"Caption": {bindTo: "Resources.Strings.MultiplyChangeAction"},
					"Click": {bindTo: "showOwnerInfo"}
				}));
				return actionMenuItems;
			},
			showOwnerInfo: function() {
                var caption = "Select an owner";
                var ContactList;
                this.set("ContactList", new Terrasoft.Collection());
                var controls = {
                    "Owner": {
                        dataValueType: Terrasoft.DataValueType.ENUM,
                        isRequired: true,
                        caption: "Owner",
                        value: {
                            bindTo: "Contact"
                        },
                        customConfig: {
                            list: {
                                bindTo: "ContactList"
                            },
                            prepareList: {
                                bindTo: "onPrepareContactList"
                            }
                        }
                    }
                };
                var ownerInputBoxHandler = this.ownerInputBoxHandler.bind(this);
                Terrasoft.utils.inputBox(caption, ownerInputBoxHandler, [
					{
						className: "Terrasoft.Button",
						caption: "ASSIGN",
						returnCode: "ok"
					}, "cancel"
				], this, controls);
                Terrasoft.each(Terrasoft.MessageBox.controlArray, function(item){
                    item.control.bind(this);
                }, this);
            },
            onPrepareContactList: function(){
                var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" });
                esq.addColumn("Id");
                esq.addColumn("Name");
                esq.getEntityCollection(function(result){
                    if (result.success){
                        var items = {};
                        result.collection.each(function(item) {
                            items[item.get("Id")] = { "value": item.get("Id"), "displayValue": item.get("Name") };
                        }, this);
                    }
                    var list = this.get("ContactList");
                    list.loadAll(items);
                }, this);
            },
            ownerInputBoxHandler: function(tag, data){
				var autoIds = this.getSelectedItems();
				var selectedContact = data.Owner.value;
                if (Terrasoft.MessageBoxButtons.OK.returnCode === tag){
                    if (Ext.isEmpty(selectedContact)){
                        this.showInformationDialog("Field is required", function(){
                            this.showOwnerInfo();
                        });
                    } else {
                        this.updateAccount(function(context, result){}, autoIds, selectedContact);
                    }
                }
            }
		}
	};
});

You will be able to select an owner from contacts:

and the selected records will be updated properly.

 

Best regards,

Oscar

Oscar Dylan,

 

Thanks, the solution works perfectly.

Oleg Drobina,

Hi, 

The code works very well. I however need to display the list as a modal pop up instead of drop down. Could you please let me know what changes need to be done or point me to resources?

Hi 

how I could modify the code (onPrepareContactList) to add a filter to the contact list (only display who are users) !

Oleg Drobina,

Oleg Drobina,

Hi! Is there a way to update only the selected contacts that have Ownership Status = Active?

Show all comments

Can someone help me with the save printable please i'm having real difficulty getting it working?

I can't even figure what the trigger should be.

 

Please help!!

 

What I would like is the Printable Saved to the Opportunity record with a defined name.

I would like the name to be a combination of the Opportunity name and the Account name.

Like 0

Like

2 comments

I have this error.. any ideas? 

Could not load type 'Terrasoft.Core.Process.Configuration.GlbPrintableSaverUserTask' from assembly 'Terrasoft.Configuration, Version=7.18.4.1532, Culture=neutral, PublicKeyToken=null'.

Nicola Wall,

 

Could you please try generating source code and compiling the system?

 

Best regards,

Max.

Show all comments

Hi Everyone,



in mobile app, in the Account section,  we added a link to the order detail, which display the order list for that account.

Unfortunatelly, when selecting one order, the product list is missing.

 

I did not found a way to display it, using the mobile app assistant.

After some searching, i found that the MobileOrderRecordPageSettingsDefaultWorkplace define the fields to be displayed, but i could not configure it properly to display the product list.



How can it be done, please ?



Thanks.



Patrice

Like 0

Like

3 comments

Hello Patrice,

 

You need to add it to the mobile application manifest.

Find details here:

https://academy.creatio.com/docs/developer/mobile_development/mobile_ap…

 

Best Regards, 

Bogdan 

Hello Bogdan,

thank you for your answer.

The mobile application manifest is a part of the solution as one need to add OrderProduct reference in it to make it work.

 

For my particular issue, i did not set MobileOrderRecordPageSettingsDefaultWorkplace correctly.

Finally, i found the right way :

 

	{
		"operation": "insert",
		"name": "OrderProductDetail",
		"showForVisibleModule": true,
		"values": {
			"caption": "OrderProductDetailCaptionOrder_caption",
			"entitySchemaName": "OrderProduct",
			"filter": {
				"detailColumn": "Order",
				"masterColumn": "Id"
			},
			"operation": "insert"
		},
		"parentName": "settings",
		"propertyName": "details",
		"index": 1
	},

 

If anyone searching for the complete solution, here is the MobileOrderProductRecordPageSettingsDefaultWorkplace :

 

[
	{
		"operation": "insert",
		"name": "settings",
		"values": {
			"entitySchemaName": "OrderProduct",
			"details": [],
			"columnSets": [],
			"localizableStrings": {
				"primaryColumnSetOrderProduct_caption": "Informations générales"
			},
			"settingsType": "RecordPage",
			"operation": "insert"
		}
	},
	{
		"operation": "insert",
		"name": "primaryColumnSet",
		"values": {
			"items": [],
			"rows": 1,
			"entitySchemaName": "OrderProduct",
			"caption": "primaryColumnSetOrderProduct_caption",
			"position": 0,
			"operation": "insert"
		},
		"parentName": "settings",
		"propertyName": "columnSets",
		"index": 1
	},
	{
		"operation": "insert",
		"name": "Product_row_123",
		"values": {
			"row": 2,
			"content": "Nom du produit",
			"columnName": "Name",
			"dataValueType": 1,
			"operation": "insert"
		},
		"parentName": "primaryColumnSet",
		"propertyName": "items",
		"index": 2
	},
	{
		"operation": "insert",
		"name": "Quantity_row_123",
		"values": {
			"row": 3,
			"content": "Quantité",
			"columnName": "Quantity",
			"dataValueType": 1,
			"operation": "insert"
		},
		"parentName": "primaryColumnSet",
		"propertyName": "items",
		"index": 3
	},
	{
		"operation": "insert",
		"name": "Price_row_123",
		"values": {
			"row": 4,
			"content": "Prix de vente",
			"columnName": "Price",
			"dataValueType": 1,
			"operation": "insert"
		},
		"parentName": "primaryColumnSet",
		"propertyName": "items",
		"index": 4
	},
	{
		"operation": "insert",
		"name": "Discount_row_123",
		"values": {
			"row": 5,
			"content": "Réduction",
			"columnName": "DiscountAmount",
			"dataValueType": 1,
			"operation": "insert"
		},
		"parentName": "primaryColumnSet",
		"propertyName": "items",
		"index": 5
	},
	{
		"operation": "insert",
		"name": "Product_row_123",
		"values": {
			"row": 6,
			"content": "Détails du produit",
			"columnName": "Product",
			"dataValueType": 10,
			"operation": "insert"
		},
		"parentName": "primaryColumnSet",
		"propertyName": "items",
		"index": 6
	}
]



Best regards

Patrice

Patrice Vigouroux,

 

Hello, 

 

Many thanks for sharing your solution with us! :)

Please let us know in case of any additional questions. 

 

Best regards, 

Anastasiia

Show all comments

Hey,

 

I've created a new lookup using the Section Wizard and created a new table for it there as well but for some reason I can't find the table on the System Designer -> Lookups.

 

I tried searching for it by name and manually but it appears as if it doesn't exist although on the section itself you can see the lookup field and when editing the field you can see the table connected to it.

 

Any thoughts on how I can find this table?

Like 1

Like

3 comments

Hello, 

 

Please check whether you are adding a new lookup through the Section Wizard in a proper way. 

While adding a new lookup column to the page you can choose a "Data source": existing lookup or a new one.

You can proceed with creating a new lookup in a following way:

All the changes should be first saved through the Section Wizard, once done you can find a newly created lookup in Lookup section:

To be able to find the newly created lookup in the Configuration section, please check whether there are no additional filters:

 

Alternatively, you can first create a new lookup based on the need object and only after that proceed with adding a new lookup column to the needed section through the Section Wizard based on the already existing lookup.

 

Hope this clarifies!

Best regards,

Anastasiia 

 

 

I actually created it in the proper way thru the Section Wizard to avoid any complications but it appears to have created the object but not the lookup, so I went to lookups and created a new lookup using the created object (found it in the Configuration section).

 

So the problem is resolved :)

Edo Sagron,

 

Thank you for the update! 

Please do not hesitate to contact us in case of any additional questions. :)



Best regards,

Anastasiia 

Show all comments