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

Hello Community, 

 

Is there a way to copy the record on click of a button in the Form Page such that it will open the record with copied values and is open to edit values?

When I tried to copy a record using Modal class it directly creates a new record in the DB. I don't want to create a new record in DB with copied values but to open a new record with copied value.

 

Thanks in Advance

Like 0

Like

3 comments

Hello,

By clicking a button you can start a business-process in which you have the element "Open edit page". In this element, you can also set default values from all the columns you need. 

Hello, 

 

Thankyou for your reply,

I tried doing this but I could not find my custom Form page in the Open edit page field. 

Actually I wanted to perform the same operation that we do on click of "Copy" of a record from a list page in the form page on click of button. 

On click of a button, Copy all the fields in the current form page and open a new record with  copied fields, But the record should not get saved in DB until user saves the record. 

 

Any Suggestions is really helpful. 

 

Thanks

Gargeyi

 

 

Hello,

In that case, you can add a button with the action "Open new record".

With it, you can choose your objects and set the column values from the main record.

this button will open a new page without actually saving the record.

Show all comments

Hi Community,

 

I would like to know how we can make a column mandatory in an attachment list (the detail here) as soon as we upload a file to the detail.

 

 

Thanks in advance!

 

Regards,

Abilash.S

Like 0

Like

1 comments

To make a column mandatory in FreedomUI, you can follow these steps:

  1. Identify the column you want to make mandatory in the detail view of your form.

  2. Open the code or configuration file associated with your FreedomUI implementation.

  3. Locate the section or code block related to the detail view of your form.

  4. Find the column you want to make mandatory within the code or configuration.

  5. Depending on the specific implementation of FreedomUI, you can typically add a validation rule or attribute to the column to make it mandatory.

  6. Add the necessary code or configuration to enforce the mandatory requirement for the column. This may involve setting a "required" flag, adding a validation rule, or specifying a validation message.

  7. Save your changes and test the form to ensure that the column is now mandatory in the detail view.

It's important to note that the exact steps may vary depending on the version and customization of FreedomUI you are using. Refer to the documentation or consult with the developers or support team of FreedomUI for specific guidance on making a column mandatory in the detail view.



More detail : https://360degreecloud.com/

Show all comments

Is there a way to deploy the security configuration for Organizational & Functional Roles from Development to Production?

Is some kind of binding needed?

Like 0

Like

2 comments
Best reply

Hello,

Thank you for your question. 

Please, note that it's not recommended to bind users, organizational structure, roles, licenses, and other administrative things to a package. It will be very hard to handle that if you decide to install that package after the moment when the client adjusts that administrative things according to his or her needs directly on the production.

Unfortunately, there is no script we could provide you with but in case you decide to bind this data and transfer it to another environment we suggest checking all changes on the copies before delivering it to the production websites. The organizational structure is in the "SysAdminUnit" and "SysAdminUnitInRole" tables and you are right, it's possible to bind it to the package via SQL scripts only.

Best regards,

Hello,

Thank you for your question. 

Please, note that it's not recommended to bind users, organizational structure, roles, licenses, and other administrative things to a package. It will be very hard to handle that if you decide to install that package after the moment when the client adjusts that administrative things according to his or her needs directly on the production.

Unfortunately, there is no script we could provide you with but in case you decide to bind this data and transfer it to another environment we suggest checking all changes on the copies before delivering it to the production websites. The organizational structure is in the "SysAdminUnit" and "SysAdminUnitInRole" tables and you are right, it's possible to bind it to the package via SQL scripts only.

Best regards,

Mykhailo Zeleniuk,

Thank you Mykhailo for the quick response.  Appreciate the callout of the risks.  Based on this, I see makes sense to stick with managing security configuration directly in Production.

Show all comments

Hello all! Which part of the code do I have to edit to show the contact phone number in the contact card visible in leads / opportunities? Thanks for your help.

Like 0

Like

1 comments

Hi,

Due to a system change I now have over 1,000 records that need the change case launched. Is there an efficient and quick way to do this?

Thanks, Mai 

Like 1

Like

3 comments

Hi!



Currently there is no possibility of mass records edition (like assigning an owner to multiple records), however, you can do it with the simple business process. Here is the example with the Accounts.



I used to have different owners:

image.png



 but after running this process

image.png

 all of them were changed to the Supervisor:

image.png



 We have already registered the idea for our R&D team to implement this functionality in further releases. I will assign your case to this project in order to increase its priority.  



Best regards,

Anton

Yes please !

Anton Starikov,

Could you please reshare your pictures - they are not shown now. And changing Case is not the same as changing Owner, as I understand



Thank you!

Vladimir

Show all comments

Hello!

I got a business need to send the users dashboard in xls format according to the schedule.

How can i do that using BPMN functional in Creatio?

Like 0

Like

1 comments

Hello!



We have consulted with the product owners of this feature and we are certain that this task can only be achieved by the means of development.

Also, we have created a request for our developers in order to bring this functionality in future releases.

 

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

In the meantime, as a workaround, we recommend creating a Word report and generating it within a business process, followed by sending it via email. This approach should help you achieve the desired outcome. 

For detailed instructions on setting up this business process, please refer to the following articles on the Creatio Academy:

https://academy.creatio.com/docs/user/customization_tools/print_ready_r…

https:/academy.creatio.com/docs/user/bpm_tools/process_elements_reference/system_actions/process_file/process_file_element?check_logged_in=1

https://academy.creatio.com/docs/7-17/user/bpm_tools/process_elements_r…

 

Please note that a Word report is generated for each section record separately.

I hope this information helps you resolve your business task.

 

Best regards,

Kate

Show all comments

Hi Creatio Community,

 

I would like to know the name of the function/handler that's called when creating a record and saving it in an editable detail in FreedomUI so that we can override it. We also noticed SaveRecordRequest doesn't seem to be called here.

 

Thanks in advance.

 

Regards,

Abilash.S

Like 0

Like

4 comments

Hello,

 

These should be the crt.CreateRecordRequest request and the crt.CreateRecordHandler handler. Try those in either:

 

1) Page where detail is added

2) Detail schema

3) Edit page of the detail

 

and it should be triggered.

Oleg Drobina,

 

Tried these two methods. They don't seem to be called when creating and saving the records in an editable detail.

Abilash,



I tried this handler:

handlers: /**SCHEMA_HANDLERS*/[
			{
				request: "crt.CreateRecordRequest",
				handler: async (request, next) => {
					return next?.handle(request);
				}
			}
		]/**SCHEMA_HANDLERS*/,

on the schema where detail is added and it's successfully triggered:

It also depends on which handler you have specified in the "Add button" properties, you need to find it in the schema diff (in my case it was crt.CreateRecordRequest):

{
				"operation": "insert",
				"name": "GridDetailAddBtn_z5e8jja",
				"values": {
					"type": "crt.Button",
					"caption": "#ResourceString(GridDetailAddBtn_z5e8jja_caption)#",
					"icon": "add-button-icon",
					"iconPosition": "only-icon",
					"color": "default",
					"size": "medium",
					"clicked": {
						"request": "crt.CreateRecordRequest",
						"params": {
							"entityName": "Contact"
						}
					},
					"visible": true,
					"clickMode": "default"
				},
				"parentName": "FlexContainer_n5yrzkv",
				"propertyName": "items",
				"index": 0
			},

 

Oleg Drobina,

 

The detail we are working with uses an inline record to create new records which doesn't seem to be calling CreateRecordHandler or CreateRecordRequest. 











 

Show all comments

Hi Community,

 

When I click reject in approval in freedom UI, comment field should be mandatory.



 





I followed this community post https://community.creatio.com/questions/make-comments-field-required-when-approval-gets-rejected-0. But its is not working for FreedomUI.



Thanks,

Regards,

Manideep

Like 2

Like

3 comments

Hello,



We don't have such functionality for now in Freedom UI.

 

We've registered it in our R&D team backlog for consideration and implementation in the future application releases. Thank you for helping us to improve our product. 

 

Yes, +1

Hello, some news regarding this? Is from a couple of years, but still we cannot do it :-(

Show all comments

I'm Getting Error while compiling the workspace everytime. I checked the error log and it's saying as below. Kindly help to resolve this. Have attached the file for reference.



[57] ERROR IIS APPPOOL\Creatio Terrasoft.Core.UserConnection OnCurrentUserConnectionChanged - Overwriting UserConnection.Current in the same context is not allowed    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)

File attachments
Like 0

Like

1 comments