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

Hi Community,

 

We have this business requirement, where we need to add a "Quick Complete" button to the NextStep line. Similar to what this marketplace app have, but for FreedomUI.

 

https://marketplace.creatio.com/app/quick-complete-order-activities-creatio

 

We want to add the button next to the "Complete" one.

 

 

How can we achieve such business requirement? What do we need to change?

 

Thank you in advance.

 

Best Regards,

Pedro Pinheiro

Like 1

Like

1 comments

Hello,
 

Unfortunately, at the moment, the Message-composer element is not customizable from the inside using no-code/low-code tools.
 

Currently, we do not have a ready-made instruction for adding such a button. However, we have created a task for the responsible team to either create such an instruction or add no-code tools for adding custom buttons to the element.
 

Thank you for helping make our product better!

Show all comments
Question

Hi All, 

 

I have this code - 

But I am getting this error - 

Error: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

 

I checked in the database and yes there are Null values stored in the columns, how can I keep null as well.

 

Thanks

 

Like 0

Like

1 comments

Hello.
Thank you for your question.

Please provide more details on the issue you've faced. Where exactly the issue occurs (custom webservice, business process etc.), which database type is used in your local installation (MS SQL, PostgreSQL or Oracle), which value is stored in the database record in the specific column of DateTime type, which is the column settings in the database (which type is used?), what is the error message in the Error.log?

It is very unclear how you are getting that exception but this article might be handy.

I am eager to receive your answer! 

Show all comments

Hello Community,

I recently installed Creatio 8.0.9 ( Creatio8Atlas). And changed the language into Russian but some parts ( especially actions section and new folder function) remaining unchanged. 

I would appreciate it, if you can tell me how to fix this? 
Best,
Xojiakbar

Like 0

Like

2 comments

Hello,

As we can see, only a few sections are not translated, so you can use the Translations section to translate individual parts of the interface.
https://academy.creatio.com/docs/8.x/no-code-customization/customizatio…

Thank you Antonii for your help. I fixed it. The reason was old browser caches from installations I did in the past. I cleared the browser cache and it worked.

Show all comments