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

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 Creatio community,

 

I'm trying to set default folder filter for product selection page in order product detail. Whenever the user login, a default folder should be selected and those products should be visible.

 

I'm able to achieve this task in Product section page where I'm updating the 'SysProfileData' object based on the key (ProductSectionV2GridDataViewFilters) .

 

But in the  Product Catalogue page shown below, SysProfileData object is not updating while switching from one folder to other also there is no Key for it to update.

 

 

 

Any idea on how to set default folder filter for the Product selection page would be appreciated.



 

Thanks,

Sivaranjani

Like 0

Like

2 comments

Greetings,



Unfortunately, we are unable to see the pictures you have attached.

Could you kindly re-post them in the comment section? 

Mykhailo Zeleniuk,

Please find the images below.



In "Product Catalogue" the folder filter is not working.



Product section default folder filter is working.





How to set a folder filter default in Product Catalogue (Order section - Product detail).



BR,

Bhoobalan Palanivelu.

Show all comments

Hello community,

I have a use case where i need to grant access rights to new owner in Lead when the owner gets changed.I want to remove the access rights of the old owner.

By default, Creatio grants maximum access permissions to record author and the record owner.

I have tried to give access to the new owner and revoke the access permission to old owner using Change access right Business process element . Since the old owner is the record author ,that user can able to see ,edit,delete the record .I want to remove the access rights of the old owner. 

Can anyone help me on this ?

Like 1

Like

1 comments

Hi!

 

If you remove all roles/users from default permissions (managed by records access rule settings), users who created the record and records owner will still be able to see/edit/delete the record. 

 

To change this behavior, there are several options: 

- open the record in the System Designer and set the rule for the author to grant himself the rights for "not reading" the record

 

- the database command to remote the specific rights in the sys[object]right table. You can check some details on the example of granting the rights and change the logic of the provided script: https://community.creatio.com/questions/there-way-provide-record-creato…

Here are some more details on how these system tables impact the record permissions: https://community.creatio.com/articles/what-database-tables-should-i-ta…

- design a business process with the "Change access" element to remove the rights from the record author

 

Hope this info helps you with the described case.

Show all comments

Hi Community,

Is there any possibility to put an image as a background in the Creatio Login Page ?

Example

Best regards,

Sasori

Like 0

Like

5 comments
Best reply

Hi Sasori,

 

It's possible, but proper css should be created:

what was done is adding the image to NuiLogin.aspx page css (add body elemnt there):

<style>
		.font-preload {
			position: absolute;
			opacity: 0;
		}
		.font-preload-open-sans {
			font-family: "Bpmonline Open Sans";
		}
		.font-preload-open-sans-light {
			font-family: "Bpmonline Open Sans Light";
		}
		.font-preload-open-sans-bold {
			font-family: "Bpmonline Open Sans Bold";
		}
		body {
			background-image: url("783px-Test-Logo.svg.png");
		}
	</style>

and put this image to the root directory of app binary files. Only css should be modified in case you don't need to repeat this image and to set the size for it.

Hi Sasori,

 

It's possible, but proper css should be created:

what was done is adding the image to NuiLogin.aspx page css (add body elemnt there):

<style>
		.font-preload {
			position: absolute;
			opacity: 0;
		}
		.font-preload-open-sans {
			font-family: "Bpmonline Open Sans";
		}
		.font-preload-open-sans-light {
			font-family: "Bpmonline Open Sans Light";
		}
		.font-preload-open-sans-bold {
			font-family: "Bpmonline Open Sans Bold";
		}
		body {
			background-image: url("783px-Test-Logo.svg.png");
		}
	</style>

and put this image to the root directory of app binary files. Only css should be modified in case you don't need to repeat this image and to set the size for it.

Oleg Drobina,

Thanks for the explanation Oleg, 

I tried all the steps but still the image is not showing in the background of the login page.

1- Modified NuiLogin.aspx file (path : inetpub\wwwroot\creatio\Login)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NuiLogin.aspx.cs" Inherits="Terrasoft.WebApp.Loader.Login.NuiLogin" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" dir="<%= PageDirection %>" culture="<%= LanguageCultureName %>">
<head runat="server">
	<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
	<meta name="fontiran.com:license" content="LAXSN" />
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Creatio</title>
	<style>
		.font-preload {
			position: absolute;
			opacity: 0;
		}
		.font-preload-open-sans {
			font-family: "Bpmonline Open Sans";
		}
		.font-preload-open-sans-light {
			font-family: "Bpmonline Open Sans Light";
		}
		.font-preload-open-sans-bold {
			font-family: "Bpmonline Open Sans Bold";
		}
		body {
			background-image: url("test.png");
		}
	</style>
</head>
<body>
	<div class="font-preload">
		<span class="font-preload-open-sans">_</span>
		<span class="font-preload-open-sans-light">_</span>
		<span class="font-preload-open-sans-bold">_</span>
	</div>
	<form id="IndexForm" runat="server">
	</form>
</body>
</html>

1- Added test.png image file in ( path - inetpub\wwwroot\creatio\)

Sasori Oshigaki,

 

Strange, this approach worked in my local app perfectly. Maybe there is an error message in the console when trying to reach the Login page and it will provide more details? Or maybe the image is empty? Also try restarting the application in IIS.

Oleg Drobina,

Just fixed it Oleg

The mistake was the path of the image ( got it from console window)

The image should be placed under this path :

inetpub\wwwroot\creatio\Login

Thanks a lot for the help

Sasori

Sasori Oshigaki,

 

hm, in my case it requested the root directory of the app when I was testing it. Anyway, it's good that the console message answered the question!

Show all comments

I am using mobile application, i am trying to download a files attached in documents attachments, i am able to see a documents is attached but unable to download it. In web version when you click on the attachment it automatically downloads. Is there any separate setting for that i am missing on.

Like 0

Like

1 comments

Hello Creatio Community,

I would like to create my creatio local environment from version 8.0.6.3429 to the newest one 8.0.8.4807. For this procedure I followed the instructions on the updating guide in this link (https://academy.creatio.com/docs/release/update-guide/update-guide). 

I filled in the downloader.json with this information:

{

    "WebRootDirectory": "C:\\inetpub\\wwwroot\\CustomerJourney_9002",

    "WorkDirectory":  "C:\\Temp\\updatedCreatio",

    "Site": "CustomerJourney_UBA_9002",

    "Product": "Lending",

    "VersionBuild": "8.0.6.3429",

    "DbEngineType": "MSSQL",

    "CurrentSchemaName": "dbo",

    "RedisServer": "localhost",

    "RedisDB": 8,

    "RedisPort": 6379

}

After I run the Downloader.ps1 on the powershell (administrator mode), I get this error on the command line:

Thanks in advance for your time :)

Like 0

Like

2 comments

Greetings,



We kindly ask you to contact support@creatio.com directly in order for us to provide you with a necessary package for updating your on-site application.

You cannot use the updater to get the update files since Creatio 8.0.0, you need to ask support for the files. For some reason, the update guide does not mention it, and nothing in the partner knowledge base explaining it either...

Show all comments

Hello,

 

as we use non-standard font for our report, it should be embedded into result pdf-file. FastReport has this option during export to PDF. But how can we achieve the same from Creatio?

Like 2

Like

3 comments

Hi Vladimir!



Fonts should be installed on the IIS side and the template also needs to be set up correctly to make them available.



The following instructions can help you to achieve the result you are looking for:

https://www.fast-report.com/en/blog/show/custom-fonts-online-designer/

Pavlo Sokil,

Thank you, Pavlo!



We have installed fonts on our Dev IIS server and it works.

But when customer has done the same, on their Test server it works, but on Production - not.



Can you give any idea what can be checked more?



Thank you!

Vladimir

Hi Vladimir.



There are several possible reasons why a custom font added to IIS for Fast Reports may work for one site but not for another, even with the same settings. Here are a few possible reasons:

  1. Different versions of IIS: If the two sites you are configuring the custom font for are running on different versions of IIS, this can cause compatibility issues. Therefore, depending on which version of IIS your sites are running on, you should use the corresponding version of the custom font.

  2. Different IIS settings: Another possible issue is different IIS settings on different sites. For example, if one site is working with custom fonts over HTTP, and another is over HTTPS, this can affect how the fonts are displayed on the site.

  3. Different font locations: It's possible that the fonts are not located in the same place on two different servers, and this can cause issues with loading the fonts on one of the sites.

  4. Caching: If the font is added to one site, and then you add it to another, the browser may have a cached copy of the old version of the font. This can cause the font to not change when you switch to the other site.

  5. If this is a self-hosted font, it may be necessary to modify the hosting settings of the font to allow access from other domains (perhaps by adding the instance address of Creatio to the Allowed domains list).

To address these issues, make sure you are using the correct version of the font, check if the settings are the same on both servers, make sure the fonts are located in the same place, and clear the browser cache.

Show all comments

Hi All,



The requirement is to generate a document where data is stored in detail inside a detail and it should be grouped based on the value in the parent detail.



Scenario Explanation,



We have created a custom section named "Quotes" and a detail inside it named "Parts, Design, Labor Components", this detail has a string column known as "CEID".





And we have detail named "Parts Transformation : Design Paid Upfront" and "Design Transformation : Design Paid Upfront" inside this main detail,





And our final printable document should be in the format like as below, As the CEID group should be common (pointing the main detail) and the parts and design records associated to it should be shown as table (pointing to child details). This printable should generate a single document for all the list of the CEID's and their associated parts and design. 





In OOTB printables, its unable to bring the printables in this format. Is there a way to implement this logic in creatio ?



Regards,

Adharsh S

Like 1

Like

1 comments

Hello,



As far as I understand you need to pull the "Design Transformation : Design Paid Upfront" detail data from the "Parts, Design, Labor Components" detail into Quotes printable. Unfortunately, that would not work since it is not possible to print out the table in the table.

As a workaround to display data in a report from the nested second-level detail data as a hierarchy, you can use an object as a database view. The view can be created using a Common Table Expression (CTE). For example:

WITH  cte AS (
    select
             cast(l1.Name as NVARCHAR(MAX)) as Name,
             l1.Id,
             0 as hierarhy,
             l1.Id as Level1,
             m.Id as MainId
       from Main as m
       join Level1 as l1 on m.Id = l1.MainId
 
    UNION ALL
 
     select
             cast('  -  ' + l2.Name as NVARCHAR(MAX)) as Name,
             l2.Id, 
             1 as hierarhy,
             l2.Level1Id as Level1,
             m.MainId as MainId
       from cte as m
       join Level2 as l2 on m.Id = l2.Level1Id
)
 
SELECT *
FROM   cte
order by Level1, hierarchy

In this example,

Main is the main object, Level1 is the detail that is linked to Main, and Level2 is the detail that is linked to Level1.

As a result, an object can be obtained that joins two tables and displayed the data. Therefore, when creating the necessary columns in the view, they can be used to build the table and output the information row by row.

 

Best regards,

Kate

Show all comments