In Activity we wanted to filter owner field . currently all users are showing in the list but we need only to show active users ?

I try to add an attribute in the ActivityPageV2 but it does not work unlike in the contact section

        attributes: {

            "Owner": {

                // Attribute data type.

                "dataValueType": Terrasoft.DataValueType.LOOKUP,

                "lookupListConfig": {

                    "filters": [

                        function() {

                            var filterGroup = Ext.create("Terrasoft.FilterGroup");

                            filterGroup.add("IsUser",Terrasoft.createColumnIsNotNullFilter("[SysAdminUnit:Contact].Id"));

                            

                            filterGroup.add("IsActive",

                                            Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"[SysAdminUnit:Contact].Active",true));

                            return filterGroup;

                        }

                    ]

                }

            },

        },

Like 0

Like

2 comments

Hi,

Your code doesn't work on the Activity page because it has additional logic to owner filters.

In order to make it work you need to override method _applyLookupListConfigToOwnerColumn in the ActivityPageV2 and make it empty:

            _applyLookupListConfigToOwnerColumn: function() {

                return false;

            }

Thank you

Show all comments

Hello community,

                                while adding SVN to other repositories. I am getting an issue no such host is known. please help me through this problem.

File attachments
Like 0

Like

1 comments

Hi!

 

I wasn't able to reach the specified address - https://naveen/svn/paasprojectwork/

Please make sure it is available svn address and try again.

Show all comments

I have a business process where I want to go through a collection of records, so I create a sequential sub-process to go through them. To this sub-process I also want to pass a string from main process to sequentially concatenate new values onto the string passed between main and sub-process. 

 

For each new instance of sub-process I would then have a string in main process that is updated to "1" and then "1,2", then "1,2,3" and so on. 

 

I have created this string in main process and passed it to a corresponding string in sub-process, however when passing the parameter I cant get it to set a value that is retained in main process. I will attach pics to describe the scenario better:

And here is the subprocess:

Like 0

Like

6 comments
Best reply

Hi!

 

Unfortunately, in a business process using a sequential subprocess, direct data transfer between the parent and subprocess between iterations is not possible. The parent process cannot read or receive data created by the subprocess because that data is not persisted between iterations.

However, you can achieve the desired result by storing the values between iterations in a database table instead of your current element "Set relation role on Actor A". The subprocess can write each new value to this table, and the parent process can retrieve this data from the table after each iteration.

Here's how you can do it:

  1. Create a table in the database that will be used to store the values. For example, name it "SubprocessData" and add a column to store the values (e.g., "Value").

  2. In the subprocess, after computing the new value, perform an insertion operation to insert that value into the "SubprocessData" table.

  3. After the subprocess completes, in the parent process, execute a query against the "SubprocessData" table to retrieve all the values stored during the subprocess iterations.

  4. Use the retrieved values for further processing in the parent process, such as creating strings like "1", "1,2", "1,2,3", and so on.

This approach will allow you to persist values between iterations and pass them from the subprocess to the parent process.

Pics below

Hi!

 

Unfortunately, in a business process using a sequential subprocess, direct data transfer between the parent and subprocess between iterations is not possible. The parent process cannot read or receive data created by the subprocess because that data is not persisted between iterations.

However, you can achieve the desired result by storing the values between iterations in a database table instead of your current element "Set relation role on Actor A". The subprocess can write each new value to this table, and the parent process can retrieve this data from the table after each iteration.

Here's how you can do it:

  1. Create a table in the database that will be used to store the values. For example, name it "SubprocessData" and add a column to store the values (e.g., "Value").

  2. In the subprocess, after computing the new value, perform an insertion operation to insert that value into the "SubprocessData" table.

  3. After the subprocess completes, in the parent process, execute a query against the "SubprocessData" table to retrieve all the values stored during the subprocess iterations.

  4. Use the retrieved values for further processing in the parent process, such as creating strings like "1", "1,2", "1,2,3", and so on.

This approach will allow you to persist values between iterations and pass them from the subprocess to the parent process.

Alla Blinova,

Hello. Sorry for the late reply, this approach actually worked using a database field to store the value from each subprocess iteration. Thanks for the detailed explanation!

Show all comments

Like 0

Like

1 comments

Hello,

 

This error is related to the connection timeout with the application server.

Try running the action again.

Show all comments

Hi community,

There is a system user needs to operate with records in several different objects. But I don't want that user can delete any records

Is there any way to set up permission for that?

 

Thank you!

Like 0

Like

1 comments

Hello,

I am looking to extract the sort field and sort order being used by a user on a section and implement this same sort condition into an EntitySchemaQuery so that it brings back data in the same order.

I see the information exists in the SysProfileData.ObjectData field. Are there any modules/libraries that can help simplify the extraction of the sort columns? In particular the use of a sort based on an aggregate field has a complex structure to it and seems difficult to translate to an ESQ condition.

 

Thanks in advance!

Like 0

Like

2 comments
Best reply

Hello,

 

Additional question: should it be a client-side or server-side logic? Because if this is a client-side logic then you need the same logic as in the initQuerySorting method from the GridUtilitiesV2 module in the UI that gets the sorting column and add adds it to client-side ESQ when loading the grid:

and use the same in your logic. If this is a server-side implementation this is more complicated, try debugging the ReadProfileData method from the CommonUtilities class that reads profile data.

Hello,

 

Additional question: should it be a client-side or server-side logic? Because if this is a client-side logic then you need the same logic as in the initQuerySorting method from the GridUtilitiesV2 module in the UI that gets the sorting column and add adds it to client-side ESQ when loading the grid:

and use the same in your logic. If this is a server-side implementation this is more complicated, try debugging the ReadProfileData method from the CommonUtilities class that reads profile data.

I am working on the client side, so this helps a lot. Thank you!

Show all comments

Hi Community,

I am trying to save a file in a Creatio Cloud solution. Which is the relative path I can use to store the file ?

Is this correct:

\..\..\inetpub\wwwroot\creatio_instance_name\ ?

Sasori

Like 0

Like

0 comments
Show all comments

Hi,

I've created a remote angular module for Freedom UI, following the tutorial: https://academy.creatio.com/docs/developer/front_end_development_freedo…

I added my component to Freedom UI library. Thus, I'm able to drag'n'drop my component to page area.

The problem is that my component have some configuration params (a string and an integer), that I can't fill using the no-code designer. I have to do it manually, from source code.

I would like to add such configuration options to component to make it possible to configure a component instance in no-code way.

For example, when I create button I can change its label or action performed on click event. I would like to achieve something similar with my component.

I use Creatio 8.0.7

I will be really grateful for your answers :)

Eryk

 

Like 3

Like

6 comments

Could anyone help me? :)

Hi,

Can you please give more detail on these configuration params you are talking about? Some screenshots would be nice.

Dmytro Vovchenko,



Yes, sure :)

Some elements, like an input, have many configuration options:

 

And my component not:

 

So, I'd like to add similar configuration options to my custom component to reduce amount of coding while using custom angular components.

 

Hi,

Unfortunately for now the system does not support such no-code option.

However, already informed our developers about this option and they will work on this feature in future versions.

Thank you for helping us improve the system.

Hi, has anything changed since last time? :)

Hello,



After reviewing all the information, we inform you that at the moment the system still does not support this kind of no-code option. However, this particular request has been passed on to the responsible team for consideration and implementation in future releases. Task number: PR-29433.

Show all comments

Hi Creatio Community,

 

I want to create a virtual column in the case entity  with the normal section wizard and I'm a bit confused with the mutiple methods that have been posted in this forum. Does anyone have a custom code that works? :)

 

I want to create a virtual text 250 colum in the case section that automatically show the value of a text column of the case account.

 

Thanks a lot,

Markus

Like 0

Like

6 comments
Best reply

Markus Kumpfmüller,

 

here is a simple example I created and tested recently:

 define("CasePage", [], function() {
		return {
			entitySchemaName: "Case",
			attributes: {
				"CustomTextColumn": {
					dataValueType: this.Terrasoft.DataValueType.TEXT,
					type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				},
				"Account": {
					"lookupListConfig": {
						"columns": ["UsrCustomAccountColumn"]
					},
					"dependencies": [
						{
							"columns": ["Account"],
							"methodName": "setCustomTextColumnValue"
						}
					]
				}
			},
			messages: {},
			methods: {
				onEntityInitialized: function() {
					this.callParent(arguments);
					this.setCustomTextColumnValue();
				},
 
				initOnRestored: function(callback, scope) {
					this.callParent(arguments);
					this.reloadEntity();
					this.setCustomTextColumnValue();
				},
 
				setCustomTextColumnValue: function() {
					var currentCaseAccount = this.get("Account");
					if (currentCaseAccount) {
						var currentCaseAccountCustomColumn = currentCaseAccount.UsrCustomAccountColumn;
						this.set("CustomTextColumn", currentCaseAccountCustomColumn);
					} else {
						this.set("CustomTextColumn", "");
					}
				}
			},
			details: /**SCHEMA_DETAILS*/ {} /**SCHEMA_DETAILS*/ ,
			diff: /**SCHEMA_DIFF*/ [
				{
					"operation": "insert",
					"name": "CustomAddedColumn",
					"values": {
						"layout": {
							"column": 0,
							"row": 10,
							"colSpan": 24,
							"rowSpan": 1
						},
						"bindTo": "CustomTextColumn",
						"caption": {
							"bindTo": "Resources.Strings.CustomAddedColumnCaption"
						},
					},
					"parentName": "ProfileContainer",
					"propertyName": "items"
				}
			] /**SCHEMA_DIFF*/
		};
	});

also the "CustomAddedColumnCaption" localizable string should be added to the CasePage schema. The logic is:

 

1) Populate the column when the page is opened (onEntityInitialized method)

2) In the "Account" attribute:

"lookupListConfig": {
						"columns": ["UsrCustomAccountColumn"]
					},

retrieve the value for the "UsrCustomAccountColumn" column from the "Account" object (added as a lookup to the CasePage)

3) In the "Account" attribute:

"dependencies": [
						{
							"columns": ["Account"],
							"methodName": "setCustomTextColumnValue"
						}
					]

modify the "CustomTextColumn" virtual column value each time account is changed in the "Account" lookup

4) Modify the value in the "CustomTextColumn" virtual column each time we open the account from the CasePage (click on the value in the "Account" lookup) and modify the value in the "UsrCustomAccountColumn" custom column on the account page and return back to the case page (initOnRestored method).

5) Also pay attention to this part in the diff:

"layout": {
							"column": 0,
							"row": 10,
							"colSpan": 24,
							"rowSpan": 1
						},

I took the last element that has "ProfileContainer" as a parent element, took its layout (which was:

{
						"operation": "merge",
						"name": "CaseOwner",
						"values": {
							"layout": {
								"column": 0,
								"row": 9,
								"colSpan": 24,
								"rowSpan": 1
							}
						}
					},

) and added 1 to the "row" attribute (to place my custom element right after the previous one).

 

The outcome is:

Hello Markus,

 

Please clarify the question a little:

 

1) Do you need it for the Freedom UI interface or 7x interface?

2) You need to place it in the case section page or on the edit page of the case section?

3) In case the answer to the question 2 is "case section" - which particular account use from the grid?

4) Which column of the case account should be displayed? Account name, account code, account primary contact?

Hi, thanks for replying,



I want to add the virutal column to 7x interface, int the case edit page to be precise.

The field of the account I want to be displayed is a field cretaed by me. It's a text field aswell

Markus Kumpfmüller,

 

here is a simple example I created and tested recently:

 define("CasePage", [], function() {
		return {
			entitySchemaName: "Case",
			attributes: {
				"CustomTextColumn": {
					dataValueType: this.Terrasoft.DataValueType.TEXT,
					type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				},
				"Account": {
					"lookupListConfig": {
						"columns": ["UsrCustomAccountColumn"]
					},
					"dependencies": [
						{
							"columns": ["Account"],
							"methodName": "setCustomTextColumnValue"
						}
					]
				}
			},
			messages: {},
			methods: {
				onEntityInitialized: function() {
					this.callParent(arguments);
					this.setCustomTextColumnValue();
				},
 
				initOnRestored: function(callback, scope) {
					this.callParent(arguments);
					this.reloadEntity();
					this.setCustomTextColumnValue();
				},
 
				setCustomTextColumnValue: function() {
					var currentCaseAccount = this.get("Account");
					if (currentCaseAccount) {
						var currentCaseAccountCustomColumn = currentCaseAccount.UsrCustomAccountColumn;
						this.set("CustomTextColumn", currentCaseAccountCustomColumn);
					} else {
						this.set("CustomTextColumn", "");
					}
				}
			},
			details: /**SCHEMA_DETAILS*/ {} /**SCHEMA_DETAILS*/ ,
			diff: /**SCHEMA_DIFF*/ [
				{
					"operation": "insert",
					"name": "CustomAddedColumn",
					"values": {
						"layout": {
							"column": 0,
							"row": 10,
							"colSpan": 24,
							"rowSpan": 1
						},
						"bindTo": "CustomTextColumn",
						"caption": {
							"bindTo": "Resources.Strings.CustomAddedColumnCaption"
						},
					},
					"parentName": "ProfileContainer",
					"propertyName": "items"
				}
			] /**SCHEMA_DIFF*/
		};
	});

also the "CustomAddedColumnCaption" localizable string should be added to the CasePage schema. The logic is:

 

1) Populate the column when the page is opened (onEntityInitialized method)

2) In the "Account" attribute:

"lookupListConfig": {
						"columns": ["UsrCustomAccountColumn"]
					},

retrieve the value for the "UsrCustomAccountColumn" column from the "Account" object (added as a lookup to the CasePage)

3) In the "Account" attribute:

"dependencies": [
						{
							"columns": ["Account"],
							"methodName": "setCustomTextColumnValue"
						}
					]

modify the "CustomTextColumn" virtual column value each time account is changed in the "Account" lookup

4) Modify the value in the "CustomTextColumn" virtual column each time we open the account from the CasePage (click on the value in the "Account" lookup) and modify the value in the "UsrCustomAccountColumn" custom column on the account page and return back to the case page (initOnRestored method).

5) Also pay attention to this part in the diff:

"layout": {
							"column": 0,
							"row": 10,
							"colSpan": 24,
							"rowSpan": 1
						},

I took the last element that has "ProfileContainer" as a parent element, took its layout (which was:

{
						"operation": "merge",
						"name": "CaseOwner",
						"values": {
							"layout": {
								"column": 0,
								"row": 9,
								"colSpan": 24,
								"rowSpan": 1
							}
						}
					},

) and added 1 to the "row" attribute (to place my custom element right after the previous one).

 

The outcome is:

Oleg,

this helped me very much. Do you know how I could didplay this text as multiline? Currently the formatting of the source field in the account page is not being passed on.

 

Thanks,

Markus

Oleg Drobina writes:

Markus Kumpfmüller,

here is a simple example I created and tested recently:


 
 define("CasePage", [], function() {
		return {
			entitySchemaName: "Case",
			attributes: {
				"CustomTextColumn": {
					dataValueType: this.Terrasoft.DataValueType.TEXT,
					type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				},
				"Account": {
					"lookupListConfig": {
						"columns": ["UsrCustomAccountColumn"]
					},
					"dependencies": [
						{
							"columns": ["Account"],
							"methodName": "setCustomTextColumnValue"
						}
					]
				}
			},
			messages: {},
			methods: {
				onEntityInitialized: function() {
					this.callParent(arguments);
					this.setCustomTextColumnValue();
				},
 
				initOnRestored: function(callback, scope) {
					this.callParent(arguments);
					this.reloadEntity();
					this.setCustomTextColumnValue();
				},
 
				setCustomTextColumnValue: function() {
					var currentCaseAccount = this.get("Account");
					if (currentCaseAccount) {
						var currentCaseAccountCustomColumn = currentCaseAccount.UsrCustomAccountColumn;
						this.set("CustomTextColumn", currentCaseAccountCustomColumn);
					} else {
						this.set("CustomTextColumn", "");
					}
				}
			},
			details: /**SCHEMA_DETAILS*/ {} /**SCHEMA_DETAILS*/ ,
			diff: /**SCHEMA_DIFF*/ [
				{
					"operation": "insert",
					"name": "CustomAddedColumn",
					"values": {
						"layout": {
							"column": 0,
							"row": 10,
							"colSpan": 24,
							"rowSpan": 1
						},
						"bindTo": "CustomTextColumn",
						"caption": {
							"bindTo": "Resources.Strings.CustomAddedColumnCaption"
						},
					},
					"parentName": "ProfileContainer",
					"propertyName": "items"
				}
			] /**SCHEMA_DIFF*/
		};
	});

also the "CustomAddedColumnCaption" localizable string should be added to the CasePage schema. The logic is:

1) Populate the column when the page is opened (onEntityInitialized method)

2) In the "Account" attribute:


 
"lookupListConfig": {
						"columns": ["UsrCustomAccountColumn"]
					},

retrieve the value for the "UsrCustomAccountColumn" column from the "Account" object (added as a lookup to the CasePage)

3) In the "Account" attribute:


 
"dependencies": [
						{
							"columns": ["Account"],
							"methodName": "setCustomTextColumnValue"
						}
					]

modify the "CustomTextColumn" virtual column value each time account is changed in the "Account" lookup

4) Modify the value in the "CustomTextColumn" virtual column each time we open the account from the CasePage (click on the value in the "Account" lookup) and modify the value in the "UsrCustomAccountColumn" custom column on the account page and return back to the case page (initOnRestored method).

5) Also pay attention to this part in the diff:


 
"layout": {
							"column": 0,
							"row": 10,
							"colSpan": 24,
							"rowSpan": 1
						},

I took the last element that has "ProfileContainer" as a parent element, took its layout (which was:


 
{
						"operation": "merge",
						"name": "CaseOwner",
						"values": {
							"layout": {
								"column": 0,
								"row": 9,
								"colSpan": 24,
								"rowSpan": 1
							}
						}
					},

) and added 1 to the "row" attribute (to place my custom element right after the previous one).

The outcome is:

Markus Kumpfmüller,

 

just add this line

"contentType": this.Terrasoft.ContentType.LONG_TEXT,

into the "values" object of the "CustomAddedColumn" element in diff:

{
					"operation": "insert",
					"name": "CustomAddedColumn",
					"values": {
						"contentType": this.Terrasoft.ContentType.LONG_TEXT,
						"layout": {
							"column": 0,
							"row": 10,
							"colSpan": 24,
							"rowSpan": 1
						},
						"bindTo": "CustomTextColumn",
						"caption": {
							"bindTo": "Resources.Strings.CustomAddedColumnCaption"
						},
					},
					"parentName": "ProfileContainer",
					"propertyName": "items"
				}

The column will become multiline after that.

Is there any example of how we can do the same in the Freedom UI?

 

Show all comments

Hi Community,

 

Is it feasible to replicate the functionality of Forecast section for a custom object and add its corresponding fields?

 

Any idea on replicating the functionality or any other way for achieving the same would be helpful.

 

Thanks,

Sivaranjani

Like 1

Like

2 comments

Hello, 

 

Unfortunately, we do not have that option. 

But we have registered it with our R&D team for review and implementation in future releases of the application.



Thank you for your help in improving our product.





Best regards,

Orkhan Gojaev

Very interesting idea indeed :)

Show all comments