Hi Everyone,

I need to add button in the standard list (say Contacts). On click of this button, I want to call custom web service function. Is there a way I can do that. Is there any alternative available for the same.

Thanks,
Manoj

Like 0

Like

6 comments

Hello Manoj,
Thank you for your question.

There is an article available on the Academy that covers this topic with an example.

Regarding following question: "Is there any alternative available for the same". 

It depends on what you mean here. You can call a web service from different parts of an application. For example, you can make a business process that makes a call to a web service (link).

Hope this helps, let me know if you have any question left.

Yevhenii Grytsiuk,

Hi Yevhenii,

Apologies if my previous message was unclear. I want to add a button to each row in the native list, specifically as a column, and trigger a web service call when this button is clicked to sync data from another system.


 

For example, I need to add a sync icon as a column in the Project List. When the sync button for Project 1 is clicked, it should call the web service to sync data related to Project 1 from another system. Similarly, clicking the sync button for Project 2 should sync data related to Project 2, and so on.
 

I hope this clarifies my request. Thank you!

Manoj Patil,

You can add the following to the diff of the section: 

{
	"operation": "insert",
	"name": "DataGridActiveRowSyncButton",
	"parentName": "DataGrid",
	"propertyName": "activeRowActions",
	"values": {
		"className": "Terrasoft.Button",
		"style": "green",
		"tag": "sync",
		"caption": "Sync"
	}
}

 

This will add the button. Then for handling the click, add this to the methods:

onActiveRowAction: function(buttonTag, primaryColumnValue) {
	this.callParent(arguments);
 
	if (buttonTag === "sync") {
		// do your stuff here
		// primaryColumnValue is the row's Id value
 
		// you can get other values from the row using
		var row = this.getActiveRow()
		var val = row.get("UsrSomeColumn");
	}
}

Ryan

Ryan Farley,

Hi Ryan,
 

Thank you for the details. 

This section is created via Section Wizard and it correctly appears in Application Hub. However, I do not a find a place where this code needs to be added. Please guide me on the same as I am unsure if I am missing anything here.

The Section wizard creates two client schema files. One ending in "Page" and one ending in "Schema". The one ending in "Schema" is the one you want to add this code to. To see these files you need to look at the contents of the package containing your customizations, either by opening Advanced Settings from your application in App Hub or using the Advanced Settings link in the System designer.

Ryan

Ryan Farley,

I am unable to locate the System Designer icon on the Project List Page. See below screengrab.

I went to Advanced Settings and didn't find the schema files ending with "Page" and others ending with "Schema". See below screengrab.


Therefore, I navigated to Application Hub, Navigation Sections, and Selected Project which opened Projects: Section. 

 

In the Section Pages, I selected Edit Page which opened the Section Wizard screen with Tabs Pages, Business Rules, and Source Code at the top of the screen. 

 

I clicked on the Source Code tab and pasted the code at this place but it didn't reflect the new button in the list. 

 

 

I am unsure why the System Designer icon does not appear on the Project List screen. (Could it be a Creatio Version Issue? I am using Version 8.1.3.6734)
Why schema files ending with "Page" and "Schema" are not available in the Advanced Settings. (Could it be a Creatio Version Issue? I am using Version 8.1.3.6734) 
I assume I am placing the code on the Project Detail page and not on the Project List Page.

Show all comments

Hello,
I have some questions about lists in Creatio Freedom UI.

1. Is there any way to make a field read-only on a list while allowing it to be edited from the form page? I tried to use object-level business rules, but I couldn't disable the field only on the list. Fields are not available in the page-level business object on the list view.
2. Is it possible to add a custom validation for some fields on the list?
3. Is it possible to handle every field change, like on a form page? Some of my fields are being calculated live on the form page, using `crt.HandleViewModelAttributeChangeRequest`. I'd like to do the same on the list page or at least make those fields read-only on the list page.
4. I found a crt.SaveRecordsRequest request during debugging that allows me to review user changes before saving. But when I try to open a mini page using request.$context.executeRequest, nothing happens.
5/ Do you know of any more helpful requests related to lists? I found some more, like `crt.SaveDataRequest`, but it seems to have a restricted scope, so I can't add my own handler for it.
 

Like 1

Like

2 comments

Hey,
1.Yes you can deselect the inline editing of records option in the designer page for the detail.
2.Yes it is possible through code - but can you pls elaborate on what you mean by custom?
3.No you can't do the live calculation on the list page

Hello Eryk,
Thank you for your question!

Regarding your forth question. The following code should work
handler implementation code
Note that you also need to add @creatio-devkit/common library to your module dependencies as well as pass parameter it's function.
import deps and pass parameter to function
You can find some examples of how to open a page in custom handler here.

Regarding you fifth question. Could you please clarify and provide example on how you are implementing your logic? 
 

Show all comments

Hi there. 

The goal is to adjust visibility of row toolbar Item depending on the value of the field of corresponding record. I added necessary column (ClvSaleStatus) to the list in Freedom UI designer, so all the changes to viewConfigDiff, viewModelConfigDiff and modelConfigDiff look to be present. But nevertheless, If i hide that column manually in the list page then corresponding attribute has undefined value and toolbar item is not visible

viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
	{
		"operation": "merge",
		"name": "DataTable",
		"values": {
			"columns": [
				...
				{
					"id": "791d9bca-eac2-a585-0b1f-8ebacf4e2fa4",
					"code": "PDS_ClvSaleStatus",
					"path": "ClvSaleStatus",
					"caption": "#ResourceString(PDS_ClvSaleStatus)#",
					"dataValueType": 10,
					"referenceSchemaName": "ClvSaleStatus"
				}
			],
			"rowToolbarItems": [
				...
				{
					"type": "crt.MenuItem",
					"caption": "#ResourceString(ReserveObjectMenuItemCaption)#",
					"icon": "open-button-icon",
					"disabled": "$Items.PrimaryModelMode | crt.IsEqual : 'create'",
					"visible": "$Items.PDS_ClvSaleStatus | clv.IsObjectForSaleConverter",
					"clicked": {
						"request": "crt.ClvReserveObjectRequest",
						"params": {
							"itemsAttributeName": "Items",
							"recordId": "$Items.PDS_Id"
						}
					}
				}
			]
		}
	}
...
]/**SCHEMA_VIEW_CONFIG_DIFF*/
viewModelConfigDiff: /**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/[
	...
	{
		"operation": "merge",
		"path": [
			"attributes",
			"Items",
			"viewModelConfig",
			"attributes"
		],
		"values": {
			...
			"PDS_ClvSaleStatus": {
				"modelConfig": {
					"path": "PDS.ClvSaleStatus"
				}
			}
		}
	},
]/**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/
modelConfigDiff: /**SCHEMA_MODEL_CONFIG_DIFF*/[
	{
		"operation": "merge",
		"path": [
			"dataSources",
			"PDS",
			"config"
		],
		"values": {
			"entitySchemaName": "ClvObject",
			"attributes": {
				...
				"ClvSaleStatus": {
					"path": "ClvSaleStatus"
				}
			}
		}
	}
]/**SCHEMA_MODEL_CONFIG_DIFF*/,
converters: /**SCHEMA_CONVERTERS*/{
	"clv.IsObjectForSaleConverter": function(value) {
		const result = value?.value == ClvJsConsts.ClvSaleStatus.ForSale;
		return result;
	}
}/**SCHEMA_CONVERTERS*/,
Like 0

Like

4 comments

Hi, here is an example of how to get the column value:

viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
			{
				"operation": "insert",
				"name": "DataGrid_3c1xo0k",
				"values": {
					----
					"columns": [
						------
						{
							"id": "a68e978a-790d-9af6-974e-c102ee0bd00e",
							"code": "DataGrid_3c1xo0kDS_Stage",
							"path": "Stage",
							"caption": "#ResourceString(DataGrid_3c1xo0kDS_Stage)#",
							"dataValueType": 10,
							"referenceSchemaName": "OpportunityStage"
						}
					],
					"rowToolbarItems": [
						{
							"type": "crt.MenuItem",
							"caption": "Test",
							"icon": "open-button-icon",
							"disabled": false,
							"visible": "$DataGrid_3c1xo0k.DataGrid_3c1xo0kDS_Stage | clv.IsObjectForSaleConverter",
							------
			},
-----
		]/**SCHEMA_VIEW_CONFIG_DIFF*/,
		viewModelConfigDiff: /**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/[
			{
				"operation": "merge",
				"path": [
					"attributes"
				],
				"values": {
					-----
					"DataGrid_3c1xo0k": {
						"isCollection": true,
						"modelConfig": {
							"path": "DataGrid_3c1xo0kDS"
						},
						"viewModelConfig": {
							"attributes": {
								"DataGrid_3c1xo0kDS_Title": {
									"modelConfig": {
										"path": "DataGrid_3c1xo0kDS.Title"
									}
								},
								"DataGrid_3c1xo0kDS_Stage": {
									"modelConfig": {
										"path": "DataGrid_3c1xo0kDS.Stage"
									}
								},
-----
					}
				}
			}
		]/**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/,
		modelConfigDiff: /**SCHEMA_MODEL_CONFIG_DIFF*/[
			----
		]/**SCHEMA_MODEL_CONFIG_DIFF*/,
		handlers: /**SCHEMA_HANDLERS*/[]/**SCHEMA_HANDLERS*/,
		converters: /**SCHEMA_CONVERTERS*/{
			"clv.IsObjectForSaleConverter": function(value) {
				const result = value?.value == "test";
				return result;
			}
		}

Dmytro Vovchenko,

Well I didn't see any difference to mine code except that you are probably making it for detail and thus inserting new collection attribute "DataGrid_3c1xo0k" while my code is for section and thus merges new attribute to some collection attribute called "Items" which is added in BaseGridSectionTemplate schema.

Anyway, I solved my task by jsut making "clv.IsObjectForSaleConverter" async and requesting column value from db if it's hidden from the list

converters: /**SCHEMA_CONVERTERS*/{
	"clv.IsObjectForSaleConverter": async function(value, scope) {
		let result = value?.value == ClvJsConsts.ClvSaleStatus.ForSale;
		if (!result && !value) {
			const currentRecId = await scope.PDS_Id;
			if(sdk.isGuid(currentRecId)) {
					  const dataModel = await sdk.Model.create("ClvObject");
 
					  const filters = new sdk.FilterGroup();
 
					  filters.addSchemaColumnFilterWithParameter(sdk.ComparisonType.Equal, "Id", currentRecId);
 
					  const records = await dataModel.load({
						  attributes: ["Id", "ClvSaleStatus"],
						  parameters: [{
							  type: sdk.ModelParameterType.Filter,
							  value: filters
						  }
				]
					  });
					  const firstRecord = records[0];
					  const recSaleStatusId = firstRecord?.ClvSaleStatus?.value;
					  result = recSaleStatusId == ClvJsConsts.ClvSaleStatus.ForSale;
			}
		}
		return result;
	}
}/**SCHEMA_CONVERTERS*/,

 

Dmytro Vovchenko,

Ok, I rewrote viewModelConfigDiff to exactly match yours

{
	"operation": "merge",
	"path": [
		"attributes",
	],
	"values": {
		"Items": {
			"viewModelConfig": {
				"attributes": {
 
					"PDS_ClvSaleStatus": {
						"modelConfig": {
							"path": "PDS.ClvSaleStatus"
						}
					},
 
				}
			}
		}
	}
},

And it didn't help. If I hide column from the list => I get value argument of converter clv.IsObjectForSaleConverter as undefined. 

 

I looked into data saved to profile when hiding column from the list and it appears that it also modifies  viewModelConfigDiff and contains next snippet.

"viewModelConfigDiff": [
 
	{
		"operation":"remove",
		"path":[
			"attributes",
			"Items",
			"viewModelConfig",
			"attributes"
		],
		"properties":[
			"PDS_ClvSaleStatus"
		]
	}
]

 

The main point I experimented with is how to apply a converter in this line:

"visible": "$DataGrid_3c1xo0k.DataGrid_3c1xo0kDS_Stage | clv.IsObjectForSaleConverter"

When it was filled incorrectly, I saw the same problem behavior that you described. The example I provided should tell you how it needs to be filled. Please check this part in your code.

Show all comments

Is there a way to make a LookUp column the display value of the list. In this case I have the brand and display value to jump into the Record Form, I want that behavior in the ID Fleet which is a LookUp. Is it possible?

Like 0

Like

3 comments

Hello,

 

Thank you for being a part of Creatio Community!

 

From the screenshot, it seems that your ID Fleet is a text field. In this article, you can find more information about setting up lists: https://academy.creatio.com/docs/8.x/no-code-customization/customizatio…

 

We hope this helps!

ID Fleet is a LookUp

Hello,

 

To create this kind of solution, you can use this  https://academy.creatio.com/docs/8.x/no-code-customization/customizatio…

as an example.

Show all comments

Hi everyone,

 

Is there a way to display the "add next steps" button/functionality for each record in the list view, so that you can add a task to that record with the pre-filled values without opening that record? 

 

Thanks, Timea

Like 2

Like

2 comments
Best reply

Hello,



I have discussed this request with the Product Owner.

As for now, there is no such functionality.



We have already registered the idea for our R&D team to implement this functionality in further releases.



Thank you for this suggestion, this helps to make our product better!

Love the idea

Hello,



I have discussed this request with the Product Owner.

As for now, there is no such functionality.



We have already registered the idea for our R&D team to implement this functionality in further releases.



Thank you for this suggestion, this helps to make our product better!

Show all comments

Hi everyone,

 

is it possible to sort the list by two values? For example I want to sort my list first by the Account and the by the Opportunity Name, because I have multiple opportunities for one Account, and I would like to see which are these. 

 

Thanks, Timea

Like 1

Like

2 comments

Hello,

 

Unfortunately, such a feature is not available.



However, you can set a filter to display records only for a specific Account and then set a filter for opportunities.

 

We have also registered your request with our development team to explore the mechanisms of implementing such a feature.

 

Thank you for reaching out!

Hello, we create a field that is calculated as Account name + Opportunity name. So, if user filters by it, they get needed sorting (hardcoded one). Besides, this field can be set as primary displayed field



Kind regards,

Vladimir

Show all comments

Hello!

I want to include contacts from my opportunity in the opportunity list view. As i can add multiple contacts into an opportunity team, I checked for the right detail and found the object "Contact in opportunity" which has a contact column/field.

When trying to add this into my opportunity view, I'm only presented with a few fields (see screenshot). How to add all the opportunity team into my opportunity view (or at least the main contact)?

Thanks for your help

Like 0

Like

2 comments
Best reply

Hello,



Unfortunately, it is currently not possible to display such a column on the page. Because you are trying to display a one-to-many relationship, which is not currently supported in the list.

Since you want to display a value from a detail, and there may be many records stored on the detail, the system will not be able to display the names of all records from the "Contact in opportunity" field in the list.



However, a task has already been registered in our R&D team to consider and implement such a feature in future releases. In case you would like to check  what stage this task is at, I am sending you the task number: PR-882. Feel free to share this number with us at any time and ask your questions.

Hello,



Unfortunately, it is currently not possible to display such a column on the page. Because you are trying to display a one-to-many relationship, which is not currently supported in the list.

Since you want to display a value from a detail, and there may be many records stored on the detail, the system will not be able to display the names of all records from the "Contact in opportunity" field in the list.



However, a task has already been registered in our R&D team to consider and implement such a feature in future releases. In case you would like to check  what stage this task is at, I am sending you the task number: PR-882. Feel free to share this number with us at any time and ask your questions.

Show all comments

Hello Everyone,



How can we add background color to a specific field in Record list. Please refer to the Screenshot i have attached. I want that status should change color as the value is also changes . ex. Status = Passed , then color should be green. if status = Failed then color should be Red. Please advise .

Like 0

Like

2 comments
Best reply

Weird, I had responded to this before, but now my response is gone. Anyway, I rewrote my response in an article showing how to do this for a Freedom UI list here: https://customerfx.com/article/adding-color-to-column-values-in-creatio…

Ryan

Weird, I had responded to this before, but now my response is gone. Anyway, I rewrote my response in an article showing how to do this for a Freedom UI list here: https://customerfx.com/article/adding-color-to-column-values-in-creatio…

Ryan

Ryan Farley,

 

Thanks Ryan 

 

Show all comments

Hello all!

 

I try to get a list of all synchronized emails in creatio (for searching, grouping etc.). The standard activity-section doesn't display emails it seems (https://community.creatio.com/questions/email-type-activities-section).

 

How can I setup a (new) list view to display all email activities or how can i modify the filter in the activities view to also contain all emails?

 

Thanks,

 Christian

Like 0

Like

4 comments

Hello Christian,

 

You can check this add-on https://marketplace.creatio.com/app/mailbox-section-creatio.

 

BR,

Jelena

Jelena Nikcevic,

Thank you!

 

I installed the addon but adding it to my workplace does not work. the section disappears instantly after adding.

Hello Christian, 

 

According to the basic logic of the Activity section, it doesn't contain activities with a  type "email" and "call" in order to not overload activity section with tons of emails/calls.

In case you need to check only one particular email or a few of them, you may simply find this email in the Communication panel.

Also, you may apply changes to the emails with a help of custom business processes or directly in DB. 



Alternatively, as mentioned by Jelena, you can use a corresponding marketplace add-on, that lets you manage emails in the pre-configured Mailbox section.



If the installation of the add-on was successful, please try to re-login to the site, clear your browser cache and add the section to a workplace once again. 



Best regards,

Anastasiia

Anastasiia Zhuravel,

Yes, I know that the activities section doesn't display emails, that is my original problem.

I also know the communication panel but searching for particular information in emails is still not easy (and I have installed the addon available for searching emails already).

 

Installation of the mentioned addon was successfull, I always test afterwards in privacy mode so still no success.

 

Best regards,

 Christian

Show all comments

Hi Community,

I have created a database view, joining tables which altogether include more than 10000 records.

However when creating a Dashboard (List View) with this View, I can not scroll down through all the records (although all the records are there). Any idea why this happens ?

Best regards,

Sasori

 

Like 0

Like

1 comments

Hello Sasori,

 

We need more information to analyze your problem.

Please contact our technical support team (support@creatio.com)

Show all comments