Please advise on how to set up default image display on both the Form Page and List Page using Freedom UI in Creatio.


We have followed the below article in Creatio.

 

https://academy.creatio.com/documents/technic-sdk/7-15/how-add-field-im…

Like 0

Like

1 comments

Hello,

 

Please note that the article you mentioned is outdated. Please try to follow the instructions from the up-to-date article below and let us know if questions appear.

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

Show all comments

Hi Community,

is it possible to custom image size ? not using template 'S, M, L, XL' in page No-Code editor, but more like custom value in form page client module or custom css?



 

I intend to increase the width of the image; the size would be the same as the field width.

Thanks

Like 2

Like

1 comments

Hi 

 

I'm currently using the trial version of Sales Creatio in Chrome and would like to integrate Gmail for better email management. Could someone guide me through the steps or provide tips on how to successfully integrate Gmail with Creatio? Any insights on best practices or potential pitfalls to watch out for would be greatly appreciated!

Please refer a Screen Shot : 



 

Like 0

Like

2 comments

In order to add a gmail account you need to create an app specific password (which means you'll also need 2 factor authentication enabled in gmail also). Then, when adding the gmail account in Creatio you'll provide the app specific password instead of your real one. See https://support.google.com/mail/answer/185833?hl=en

Ryan

Hi Ryan

Despite already using an app-specific password, I'm still encountering errors when trying to integrate Gmail with Creatio. What steps should I take to resolve this issue?

Show all comments

Hi,

I often use backend validation in Creatio - I prevent saving a record and throw an exception from an event listener. It works like a charm, but as a result, the end user sees only a toast message, which is small and disappears after a moment, so it's easy to overlook. Is it possible to intercept such an error and display a normal confirmation popup, instead of this one?

It would be great if there is a generic solution, which doesn't require me to change all of my validations.

Like 0

Like

2 comments

Hi Eryk, in your business process you can display a mini page with the process component pre-configured page. 

 

Else you have following component to add in your site:

https://marketplace.creatio.com/template/popup-element-business-processes

 

Hope this helps.

Hello Eryk,
Thanks for your question.

As an alternative you can use websockets to implement your logic. 

Here i created a custom section and a clientMessageBridge as described in this article. In this section i created a Test Field. To subscribe to message broadcasting in the HandleViewModelInitRequest handler i used schema attribute to store a function that will be called whenever a message is published. Also note, that you should unsubscribe from websocket connection when your view is destroyed. To do this please don't forget to implement such logic in HandleViewModelDestroyRequest handler. 

On the form page when user clicks Save button a custom MyCustomRequest handler is called. In this handler i realized the following logic: call a business process (where i pass Test Field value as well as expected business process parameter value) -> if there is no validation error that is passed back from business process (hasValidationErrors property) i call SaveRecordRequest request -> if there is an error - the SaveRecordRequest is not performed.

Also the function that is triggered when a websocket message is broadcasted does open a pop-up which displays error message.

Here is an example:
page designer
handlers
bp

script task

And the outcome:
3
1

2

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

Show all comments

We have over thousands of contacts, so we decided to limit user to see contact that built by other team(divisions). But I assume it's prebuilt to make all user to view all the contacts.

So I wonder if that's some way to limit user to read the record?  

Like 1

Like

1 comments

Hello,
 

You can implement this using "Object permissions."


To do this, go to Settings.
Then find the "Object permissions" section.

In Object permissions, locate the "Contact" section.

Set up "Use record permissions" for each role.


For example, I added two roles: "Role1" and "Role2." 


I configured it so that if "Role1" creates a record, other roles cannot see it.
If a user with the "Role2" creates a record, users with "Role1" cannot see the data of this record.


Please note that this is an example; you can modify and adapt this example to suit your needs.


Have a great day!

Show all comments

Hello everyone,

I hope you're all doing well. I am currently working on a project where I need to rename the "forecast" module to better align with the project's terminology.

Could someone guide me on how to edit the name of the forecast module? Specifically, I'm looking for instructions on which files need to be modified and any potential impacts this change might have on the existing codebase. Any tips or best practices would also be greatly appreciated.
 

Thank you in advance for your help!

Best regards,

Like 1

Like

1 comments

Hello,

 

Thank you for your question!

 

To change the name of the Forecast section, you need to go to the workspace settings, go to the workspace for example Sales and find the Forecast section. Click on the section wizard and change the title of the Forecast object and save the changes.

 

Show all comments

Hi all,

 

We want, in Freedom UI, to order as per customer need the options in a drop-down menu.

 

We know that this implementation is possible in Classic UI but we don't know how to address it using Freedom UI.

 

Can anyone help us in addressing our customer request?

 

Thank you very much in advance.

 

Best regards

 

Stefano

Like 1

Like

8 comments

Hello,
Please specify where exactly you need a drop-down menu; 
Please provide us with the screenshots of the Classic UI functionality that you want in Freedom UI.

Antonii Viazovskyi,

I believe Stefano is referring to a lookup displayed as a drop down. I would love to know if those can be sorted as well. They're typically sorted in alphabetical order, any of my attempts to change the order in the load request don't work.

Ryan

Antonii Viazovskyi,

Hello Antonii,

I've a lookup with figures 1, 2, 3, ,4, 5, 6, 7, 8, 9, 10... the lookup values are sorted alphabetically so the result is 1, 10, 2, etc..

I can add a leading 0 or change the collate rule for the "Name" field 

 

CREATE COLLATION numeric (provider = icu, locale = 'en-u-kn-true'); ALTER TABLE "UsrPercentDeductible" 

ALTER COLUMN "Name" SET DATA TYPE character varying(250) COLLATE "numeric";

Hi All,

 

As stated by Ryan I'm referring to a lookup dispalyed as a drop down. Is there a way to configure a custom sorting in that situation?

 

Best Regards

 

Stefano

STEFANO FERRARI,


Unfortunately, there are no basic system tools to change the alphabetical filtration order. To implement a custom filtration order, additional development will be needed. 
You can check the below posts where similar business tasks have been already discussed: https://community.creatio.com/questions/sorting-values-lookup-field-besides-alphabetic-order https://community.creatio.com/questions/sorting-drop-down-lookup https://community.creatio.com/questions/freedom-ui-sorting-lookup https://community.creatio.com/questions/change-order-lookup-values-list 
In addition, a task has already been registered in our R&D team to consider and implement such a feature in future releases

Hi guys,

 

I have decided to take a quick look at this and managed to get it working.

For example, adding this handler on the Accounts_FormPage should filter the "Type" by "Id" descending.


(In the code block change the ">" to ">", can't seem to fix this in the reply editor)

 

{
	request: "crt.HandleViewModelInitRequest",
	handler: async (request, next) => {
		let sortingConfigList = await request.$context.Type_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "Id";
		firstSortingConfig.direction = "desc"; //desc or asc
		return next?.handle(request);
	}
}

 

 

 

 

So the page context attribute we need to change is attributecode_List_Sorting.
This is a list of "order configurations" (so you can order by multiple columns for example)
So we just need to get the first item in this list and change the columnName from Name to whatever other field we need to order on
And we can optionally change the direction property to "desc" to order descending (it is "asc" by default).

Thanks, I have an additional question. I have more than one lookup to be needed to sort in accounts, use this code, but sort just one. What's wrong?

 

{
	request: "crt.HandleViewModelInitRequest",
 
	// 1.- Typo Empresa
	handler: async (request, next) => {
		//await next?.handle(request);
		let sortingConfigList = await request.$context.Type_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "NdosOrdenarPor"; // Campo nuevo creado en AccountType
		firstSortingConfig.direction = "asc"; //desc or asc
		return next?.handle(request); 
	}, 
 
	// 2.- Nro de Empleados
	handler: async (request, next) => {
		//await next?.handle(request);
		let sortingConfigList = await request.$context.EmployeesNumber_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "Position";
		firstSortingConfig.direction = "asc"; //desc or asc
		return next?.handle(request); 
	}, 
 
	// 3.- Annual revenue/Facturacion anual
	handler: async (request, next) => {
		//await next?.handle(request);
		let sortingConfigList = await request.$context.AnnualRevenue_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "FromBaseCurrency";
		firstSortingConfig.direction = "asc"; //desc or asc
		return next?.handle(request); //next?.handle(request);
	}
 
}

Julio Falcon (Cibernética),

You will need to combine these into one "handler"

 

{
	request: "crt.HandleViewModelInitRequest",
 
	handler: async (request, next) => {
		// 1.- Typo Empresa
		let sortingConfigListType = await request.$context.Type_List_Sorting;
		let firstSortingConfigType = sortingConfigListType[0];
		firstSortingConfigType.columnName = "NdosOrdenarPor"; // Campo nuevo creado en AccountType
		firstSortingConfigType.direction = "asc"; //desc or asc
 
		// 2.- Nro de Empleados
		let sortingConfigListEmployeesNumber = await request.$context.EmployeesNumber_List_Sorting;
		let firstSortingConfigEmployeesNumber = sortingConfigListEmployeesNumber[0];
		firstSortingConfigEmployeesNumber.columnName = "Position";
		firstSortingConfigEmployeesNumber.direction = "asc"; //desc or asc
 
		// 3.- Annual revenue/Facturacion anual
		let sortingConfigListAnnualRevenue = await request.$context.AnnualRevenue_List_Sorting;
		let firstSortingConfigAnnualRevenue = sortingConfigListAnnualRevenue[0];
		firstSortingConfigAnnualRevenue.columnName = "FromBaseCurrency";
		firstSortingConfigAnnualRevenue.direction = "asc"; //desc or asc
 
		return next?.handle(request); 
	},  
}
Show all comments

Hi;
In process saving and download file system Creatio create resources for no active languages.

 

Like 0

Like

2 comments

Greetings,
 

The resources are loaded because there is localization data in the package.

 

Package

Orkhan,

Hi;
thanks;
the problem is that I want to create resources just for languages which are set to active in our project.
Regards;
Tomek

Show all comments

Hello everybody!

 

I couldn't find anywhere description of checkboxes in page parameters configuration windows in client schema code designer. Working on Freedom UI on 8.1.2 and 8.1.3.

I understand several of them because checbox title pretty much reflects it's purpose.
1. For example, "Required" checkbox makes parameter required for filling on client page. But if it is required it doesn't block saving. So, what's the meaning of this checkbox?
2. Another example is "Copy value" checkbox. It must mean that if I copy record then the parameter value is copied. But right now I see those parameters as virtual columns from Classic UI and don't understand how they possibly be copied if you copy from section list, for example.

3. Another example is "Lazy load". I understand concept of lazy loading (https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading), but I don't understand how it would affect parameter and all related logic in Creatio.

 

Would really appreciate any information on what each of them do exactly in Creatio system (when are provoked, how affects logic of parameter and etc.).

 

Checkboxes I'm talking about:

1. Required

2. Resulting

3. Contains performer Id

4. Lazy load

5. Serializable

6. Copy value
 

Screenshot of window with checkboxes:

Like 2

Like

1 comments
Best reply

Hello Khassan,
Thank you for your question!

[ Required ] Determines whether the value of the parameter must be specified when designing a process diagram or a diagram element.

[ Resulting ] Specifies that the value of this parameter is the result after the execution of the process element.

[ Contains performer Id ] Indicates that the responsible contact ID can be stored in the value of this process element parameter. The property becomes available if you select "Lookup" in the [ Type ] property.

[ Lazy load ] Specifies the load process. If you select the checkbox, Creatio loads the parameter immediately before using it.

[ Serializable ] Determines whether the value of the parameter should be stored in the database. Not supported for interpreted process diagrams. Mapping will not work if the value is false. 

[ Copy value ] Determines how to initialize the value of the parameter when the process element is executed. If the value is true, then when the element is re-executed, the value of the parameter will be determined from the previous iteration of this process element. 

You can read about page parameters here.


Hope this helps.

Hello Khassan,
Thank you for your question!

[ Required ] Determines whether the value of the parameter must be specified when designing a process diagram or a diagram element.

[ Resulting ] Specifies that the value of this parameter is the result after the execution of the process element.

[ Contains performer Id ] Indicates that the responsible contact ID can be stored in the value of this process element parameter. The property becomes available if you select "Lookup" in the [ Type ] property.

[ Lazy load ] Specifies the load process. If you select the checkbox, Creatio loads the parameter immediately before using it.

[ Serializable ] Determines whether the value of the parameter should be stored in the database. Not supported for interpreted process diagrams. Mapping will not work if the value is false. 

[ Copy value ] Determines how to initialize the value of the parameter when the process element is executed. If the value is true, then when the element is re-executed, the value of the parameter will be determined from the previous iteration of this process element. 

You can read about page parameters here.


Hope this helps.

Show all comments

Hi all,

I have created a process to modify date into a column (Last Action Date). But when this column is empty it has value of 01/01/0001 instead of 0. Which messed another calculation depended on this column. Making the result 700,000 days which is exactly 01/01/2024 minus 01/01/0001.

 

Could anyone please help me with me this?


(Last Action Date with Empty Value causing conflick result in another calculation.)


(I used to make dialog box to check whether my calculation is correct so we suspect it might relate to to this.)

Like 1

Like

2 comments
Best reply

Hello!

 

"Date/Time", "Date" and "Time" data types in Creatio objects are represented in C# as "DateTime" struct. This struct's value defaults to "1/1/0001 12:00:00 AM" (reflected in "DateTime.MinValue" property of struct).


When you are working with columns in business-process designer in Creatio you are literally working with C#. That's why you can use formula (which is C# one-line code) in most of places where you work with columns or parameters in business-processes. Check https://academy.creatio.com/docs/8.x/no-code-customization/bpm-tools/business-process-setup/process-formulas for more details.


I guess all you need to do is add condition in your calculations that replaces value with 0 if column is empty. It could be something like "if [YourCoumnResult] == DateTime.MinValue ? 0 : [YourCoumnResult]" in your calculations (ternary conditional operator for one-line code). This is just an example, I don't know how you calculate so can't provide related example.

If you can send screenshot of your calculation or describe more precisely how you do it I can help with realizing condition.

Hello!

 

"Date/Time", "Date" and "Time" data types in Creatio objects are represented in C# as "DateTime" struct. This struct's value defaults to "1/1/0001 12:00:00 AM" (reflected in "DateTime.MinValue" property of struct).


When you are working with columns in business-process designer in Creatio you are literally working with C#. That's why you can use formula (which is C# one-line code) in most of places where you work with columns or parameters in business-processes. Check https://academy.creatio.com/docs/8.x/no-code-customization/bpm-tools/business-process-setup/process-formulas for more details.


I guess all you need to do is add condition in your calculations that replaces value with 0 if column is empty. It could be something like "if [YourCoumnResult] == DateTime.MinValue ? 0 : [YourCoumnResult]" in your calculations (ternary conditional operator for one-line code). This is just an example, I don't know how you calculate so can't provide related example.

If you can send screenshot of your calculation or describe more precisely how you do it I can help with realizing condition.

Khassan Khakak,


Hi, thanks for your reply, I resolved the issue by applying the solution that you provided!

 

Good day.

Show all comments