Hi, Is it possible to change the "number of active background processes" referenced on the acadamy information Here

 

 

I'm trying to get more than 50 parallel processes but i can't find a way to do it. The box running the portal has enough to do it.

Like 0

Like

4 comments

Hello,

 

The maximum amount of business processes that can be run simultaneously in the background is 5 for each application (for example, if you have two nodes with two apps on them but one database - the number of business processes will be already 10).



Alternatively, you can run business processes not only in the background but also "live" (which means you will see the uploading mask in front of you while business processes are running). This way, you can run plenty business processes at once but please take into consideration the memory capacity of the machine

Thank you for the answer.

 

I will try to not run it in th background to see how much faster it is.

 

So the app doesn't care about the number of processors, or threads available on IIS, it's a fixed value based on the number of nodes?

 

 

Thanks

Luciano De Munno,

 

Yes, it's fixed value based on the number of nodes.

Bogdan,

When you say "Live" you mean to uncheck the Run current and following elements in background, right? Or is there another setting?

Show all comments

In Freedom UI sections (ie Customer 360 Accounts and Contacts sections) I can't find the way to apply an advanced filter.

I see it's possible to create folders and set their filters but I don't find the same "Switch to advanced mode" action available in classic UI Creatio sections.

How can a user apply an advanced filter without the need of folders?

Thanks

Like 6

Like

5 comments

Did you find a method to apply advanced filters? I have the same problem here. 

Matthias Bendel,

 

At the moment there is not such functionality in the Freedom UI, but we already registered this idea for our R&D team and it may appear in future releases.

Hi! Is there any news regarding this feature?

 

Csilla Kiss,

Hello!

 

We are still working on this functionality, the R&D team has a task, so it should be available soon in new releases. 



Best regards,

Anton

 

Anton Starikov,

Hi!

Maybe you know at what release it shoud be? After your message already released two version, but still no functionality(

Show all comments

Good day!

Task: Upon changing the Type field in the account card, export all records from the section  to a CSV file on the user's computer.

You encountered an error message: 'File' does not contain a definition for 'WriteAllText'. However, you have included the using System.IO; directive.



Code:

 

  namespace Terrasoft.Configuration

{

    using Common;

    using System;

    using System.Linq;

    using Terrasoft.Core;

    using Terrasoft.Core.Entities;

    using Terrasoft.Core.Entities.Events;

    using Terrasoft.Core.Factories;

    using Newtonsoft.Json;

    using System.IO;

    #region Class: CHAccount_Custom_1EventListener

    [EntityEventListener(SchemaName = "Account")]

    public class CHAccount_Custom_1EventListener : BaseEntityEventListener

    {

        Entity _entity;

        UserConnection _userConnection;

        public UserConnection UserConnection => _userConnection ?? (_userConnection = _entity?.UserConnection);

        #region Methods: Public

        public override void OnSaved(object sender, EntityAfterEventArgs e)

        {

            base.OnSaved(sender, e);

            _entity = (Entity)sender;

            _userConnection = _entity.UserConnection;

            var typeId = _entity.GetTypedColumnValue("TypeId");

            // Check if the saving event occurred for the Account object.

            if (typeId == new Guid ("f2c0ce97-53e6-df11-971b-001d60e938c6"))

            {

                // Retrieve data of the accounts from the Account object.

                EntitySchemaQuery esq = new EntitySchemaQuery(_entity.Schema);

                esq.AddColumn("Name");

                esq.AddColumn("CreatedOn");

                EntityCollection collection = esq.GetEntityCollection(UserConnection);

                if (collection != null && collection.Count > 0)

                {

                    // Create a CSV file.

                    string csvContent = "Name,Date\n";

                    foreach (Entity entity in collection)

                    {

                        string name = entity.GetTypedColumnValue("Name");

                        DateTime date = entity.GetTypedColumnValue("CreatedOn");

                        csvContent += $"{name},{date.ToString("yyyy-MM-dd")}\n";

                    }

                    // Save the CSV file to the C drive of the user's computer.

                    string filePath = @"C:\Accounts.csv";

                    File.WriteAllText(filePath, csvContent);

                }

            }

        }

        #endregion

    }

    #endregion

}

 

Like 1

Like

2 comments
Best reply

Hi,

 

It happens because the system thinks that File is the Terrasoft.Configuration.File class by default. You need to specify complete class path (System.IO.File) in the code:

 

System.IO.File.WriteAllText(filePath, csvContent);

 

for the code to publish successfully.

Hi,

 

It happens because the system thinks that File is the Terrasoft.Configuration.File class by default. You need to specify complete class path (System.IO.File) in the code:

 

System.IO.File.WriteAllText(filePath, csvContent);

 

for the code to publish successfully.

Oleg Drobina,

Thank you very much, that helped."

Show all comments

Hello community,

Is it possible to refresh a dashboard widget in an AccountPageV2 schema, without reloading the whole entity?

Thank you,

Sasori

Like 1

Like

2 comments

HI community,

Any update regarding this question?

Sasori

Hello,

 

We have checked this and unfortunately it is not possible to set this up in the system using basic tools. However, we already registered this idea for our R&D team and such functionality may appear in future releases.

Show all comments

Hi, 

 

I have to read the current user timezone from their profile in Creatio.

I have found the object name - SysUserProfile (Title - User profile)

But i cannot read this object in the business process read element. 

Please help urgently.

 

Like 0

Like

2 comments

Hi Akshit,

Try writing an esq query in script task 

https://community.creatio.com/questions/how-create-or-update-record-usi…

Hello,

 

There is no basic method for reading the time zone in a business process.

I will register the idea for future versions.

Show all comments

Hello.

 

For now

request.$context.LookupPropName = undefined

clear the value, but not triggers any change events on page.

 

How can i clear lookup value on the page with triggering 

crt.HandleViewModelAttributeChangeRequest request?

Like 1

Like

1 comments

Hello,

It looks like the only possible solution for you would be to clear the value inside the business process.

Otherways you just don't trigger the handler.

Show all comments
hello, I would like to know what the error is due to, 
perform a business process in the local environment, 
but I try to import the package in the dev environment, 
it throws the following error with the business processes

An error occurred while generating the source code of the 
"AnalisisCancelacionPolizaLDFTProcess" schema in the 
"CancelacionPolizaLDFT" package. Uid e202d880-264f-4aa5-876d-ad3a59567156: 
Error resolving type specified in JSON 
'System.Collections.Generic.Dictionary`2[[System.Guid, System.Private.CoreLib],
[System.Collections.ObjectModel.Collection `1 
[[System.Guid, System.Private.CoreLib]], System.Private.CoreLib]], 
System.Private.CoreLib'. Path '$type', line 1, position 222.
2023-05-24 19:59:58,541 Newtonsoft.Json.JsonSerializationException: 
Failed to resolve type specified in JSON 
'System.Collections.Generic.Dictionary'2
[[System.Guid, System.Private.CoreLib],[System. Collections. ObjectModel.Collection`1[[System.Guid, System.Private.CoreLib]], 
System.Private.CoreLib]], System.Private.CoreLib'. 
Path '$type', line 1, position 222. ---> 
Newtonsoft.Json.JsonSerializationException: Could not load assembly 
'System.Private.CoreLib'.
Like 0

Like

1 comments

Good day,

 

Typically this error occurs when you are trying to install a package from the .Net Core version of the system to the .Net Framework variation.

 

Please make sure that the environments that you are working on and the target ones are identical in the version in order to ensure the stability of the systems after transferring the customizations.

 

Thank you.

Show all comments

Hi all, 

 

I've long wondered how best to set up the configuration when you have many objects and related schemas, etc. that all depend on each other. Let's say we have "Accounts", "Contacts", "Agents" "Feedback", "Bookings" and so on. 

 

All of these objects have either a dependency based on a lookup of the other, or they have a related list on a page schema. 



I am attempting to try and separate out, but it's not possible without causing dependency issues. I noticed that Creatio's base configuration copes with this by creating many copies of a object, and adding them in packages such as "ContactInAccount". This seems like it would be hard to manage from a user level. 



Would most just add all the objects mentioned above into a single package to decrease complexity? 



Thanks

Harry

Like 0

Like

1 comments

Hello,

 

When setting up the configuration for multiple objects with interdependencies, there are various approaches you can take. Let's consider some strategies to help you manage the complexity effectively:

  1. Analyze interdependencies: Start by analyzing the interdependencies between the objects. Identify which objects depend on each other and how they are related. This will help you understand the relationships and dependencies that exist within your system.

  2. Consider modularization: Instead of including all objects in a single package, you can consider modularizing your configuration. Divide your objects into logical modules based on their functionality or business domains. 

  3. Use shared packages: If you have objects that are commonly used across multiple modules or have shared dependencies, you can create separate packages for these shared objects. This way, you can include these packages in the respective modules that require them. 

  4. Leverage lookup fields and related lists: When configuring the objects, utilize lookup fields and related lists to establish the relationships between them. This allows you to reference and display related records without creating redundant copies of objects.

  5. Test and validate: Regardless of the approach you choose, it's crucial to thoroughly test and validate your configuration to ensure that the interdependencies and relationships are properly maintained. This will help identify any issues or conflicts early on.

Show all comments
Question

Hi, 

 

we have a new requirement of the customer like when we perform the import from excel, the customer wants to change the screens while performing the import process. as shown in the picture. 

 

 

File attachments
Like 0

Like

1 comments

Hello,

 

unfortunately, because of the fact that the mechanism behind the import process is quite difficult to customize as it has some core dependencies, there is no possibility to create those changes you are talking about at the moment.

 

Regards,

Gleb.

Show all comments

Hi,

I've created a custom FreedomUI page for AccountAddress object. I'd like to implement some kind of automation for two lookup fields: Country and Region. It consists of two parts:

1. When I choose a region from list, the country should be set to region's country. For example, if I choose Texas region, I expect that country will be set to United States

2. When I choose a country, regions lookup should display only these regions, which are connected with selected country.

I haven't any problem with implementation of the first part. But the second part doesn't work I expected. I use handler for crt.LoadDataRequest to append a filter parameter when loading regions list. The problem is that this handler runs only once, at first list load. It doesn't execute when I change country, although I trigger such request from other handler (crt.HandleViewModelAttributeChangeRequest). Here is the crucial of my code:

{
	request: 'crt.LoadDataRequest',
	handler: async (request, next) => {
        if (request.dataSourceName === 'Region_List_DS') {
	        const predefinedFilter = await request.$context.Region_filter;
	        request.parameters.push({
		        type: "filter",
		        value: predefinedFilter
	        });
        }
 
		return await next?.handle(request);
	}
},
{
	request: 'crt.HandleViewModelAttributeChangeRequest',
	handler: async (request, next) => {
        if (request.attributeName === 'EvCountry' && request.value?.value != null && (request.oldValue?.value == null || request.value.value !== request.oldValue.value)) {
			const countryId = request.value?.value;
            request.$context.EvRegion_filter = {
				"items": {
					"1954b2e1-ea91-4014-b785-cda17020595c": {
						"items": {
							"CustomFilters": {
								"items": {
									"customFilterCountry_Region_1664cb4d-2690-48d6-bcdf-0c8075824efa": {
										"filterType": 1,
										"comparisonType": 3,
										"isEnabled": true,
										"trimDateTimeParameterToDate": false,
										"leftExpression": {
											"expressionType": 0,
											"columnPath": "Country"
										},
										"rightExpression": {
											"expressionType": 2,
											"parameter": {
												"dataValueType": 10,
												"value": countryId
											}
										}
									}
								},
								"logicalOperation": 0,
								"isEnabled": true,
								"filterType": 6
							}
						},
						"logicalOperation": 0,
						"isEnabled": true,
						"filterType": 6
					}
				},
				"logicalOperation": 0,
				"isEnabled": true,
				"filterType": 6
			};
 
			const handlerChain = sdk.HandlerChainService.instance;
			const result = await handlerChain.process({
				type: "crt.LoadDataRequest",
				$context: request.$context,
				config: {
					loadType: "load"
				},
				dataSourceName: "EvRegion_List_DS",
			});
		}
 
		return next?.handle(request);
	}
}

The problem is that my trigger (handlerChain.process call) doesn't run crt.LoadDataRequest, and result variable contains full, unfiltered list of regions.

Like 1

Like

5 comments

Hello,

 

Thank you for the code and description!

 

We've verified the issue and discussed it with our core R&D team: in 8.0.9 there will be a possibility to add filtration business rules using wizard capabilities in Freedom UI. Please wait until this version is released and use this rule type to create dynamic filtration in Freedom UI interface.

Oleg Drobina,

as filtration business rules do not cover all cases of filtration, when can we wait for trigger fix?

We have tested in 8.0.9 and have the same issue as described



Thank you!

Vladimir

Vladimir Sokolov,

 

indeed filtration rules (along with static filtering business rules) don't cover all cases, but most of them. As for the list loading and the LoadDataRequest - in 8.1.0 there will be new "filterAttributes" attribute added for each list of each data source with the boolean "loadOnChange" property that will allow dynamic setup of filters in the lists (including combobox). It will look like this:

"filterAttributes": [
					{
						"loadOnChange": true,
						"name": "AccountItems_FILTER_BY_ACTIVE_ROWS"
					}

where AccountItems_FILTER_BY_ACTIVE_ROWS will be the filter itself. So in 8.1.0 all filtration cases should be covered by this functionality.

Hello,

 

Glad to inform you that in 8.1.1 we've added the possibility to use custom filters in page schema handlers when working with SDK. So you can upgrade your apps and you will be able to use custom filtration on the page.

Hi Oleg,

 

Do you have the code / Procedure to do this in 8.1.1 ?

Show all comments