This is my Tab in Account section, i have been trying to delete "Service" and "Sales"8 tabs but they don't appear in section wizard. 

here is my account tab :

here is in section wizard: 

Like 0

Like

2 comments

That usually means your package doesn’t have a dependency on the packages that add those tabs. Check which dependencies your package has. Adding dependencies to the sales and service package will likely make them show up. 

Ryan

Ryan Farley,

it worked thank you 

 

Show all comments

Hi community,

I have an AutoGeneratedPage element in a Business Process. I want to access its corresponding schema in order to do some frontend validadations.

Does the AutoGeneratedPage has its own schema ? 

Best regards,

Sasori

Like 1

Like

2 comments
Best reply

Hello,

It didn't have its own schema, the whole point of this element is that it generates during a run-time. 

If you want to customize a similar page try using pre-configured. 

Hello,

It didn't have its own schema, the whole point of this element is that it generates during a run-time. 

If you want to customize a similar page try using pre-configured. 

Thank you Dmytro for the clarification! Thats what i did.

Show all comments

Hello,

I have implemented a filter for a section using the getFilters  method which works fine on the Section page, but should not apply to the dashboard page. Is there a way to have the filter apply only to the Section grid but still leave the dashboard unfiltered?

Like 0

Like

1 comments

Not sure if this will work, but you could maybe try checking in the getFilters method which view the user is on, and if it's the dashboard view then don't apply the filter? Never tried this so not sure if it's too late at that point (or if it retrieves the data again when switching views or not)

To check if user is viewing dashboard view:

if (this.getActiveViewName() === "AnalyticsDataView") {
    // user is on dashboard view
}

I think you can override changeDataView to force it to reapply the filter (and retrieve data again). Something like this: 

changeDataView: function() {
    this.callParent(arguments);
    if (this.getActiveViewName() === "AnalyticsDataView") {
        this.sandbox.publish("ReloadDashboard", null, [this.sandbox.id + "SectionDashboardDashboardModule"]);
    }
    else {
        this.updateSection();
    }
}

Ryan

Show all comments

Hey,

I've been searching, but I can't seem to find the function I want to override, it's the function that creates the "Run Process" button on the section page.

 

I want to disable it to users who aren't the Supervisor.

I've done something similar with the getViewOptions function so that only the Supervisor could change the column layout of the different sections.

 

Any help in finding the function I need to override would be appreciated!

 

Thanks in advance! 😁

Like 0

Like

2 comments
Best reply

Hi Edo,

I've not tested this yet, but wanted to mention for you to try. That button does have an attribute that controls its visibility. The attribute is "IsProcessButtonVisible". The attribute, and populating of the menu items is done in the mixin "ProcessEntryPointUtilities". You can override the function "fillRunProcessButtonMenu" on BasePageV2 (or which ever specific page you want to do this on). Something like this: 

fillRunProcessButtonMenu: function() {
    if (UserIsSupervisor) {
        // call base function to populate menu and set visible
        this.mixins.ProcessEntryPointUtilities.fillRunProcessButtonMenu.apply(this, arguments);
    }
    else {
        // do nothing except ensure button not visible
        this.set("IsProcessButtonVisible", false);
    }
}

Again, I've not tested that, but I believe it would work.

Ryan

Hi Edo,

I've not tested this yet, but wanted to mention for you to try. That button does have an attribute that controls its visibility. The attribute is "IsProcessButtonVisible". The attribute, and populating of the menu items is done in the mixin "ProcessEntryPointUtilities". You can override the function "fillRunProcessButtonMenu" on BasePageV2 (or which ever specific page you want to do this on). Something like this: 

fillRunProcessButtonMenu: function() {
    if (UserIsSupervisor) {
        // call base function to populate menu and set visible
        this.mixins.ProcessEntryPointUtilities.fillRunProcessButtonMenu.apply(this, arguments);
    }
    else {
        // do nothing except ensure button not visible
        this.set("IsProcessButtonVisible", false);
    }
}

Again, I've not tested that, but I believe it would work.

Ryan

Ryan Farley,

Thank you very much!

This is exactly what I was looking for and is working great 😁

Show all comments

Hello Community,

 

I need to add some libraries with the "using" statement in the "Script Task". The libraries that I want to add are the following ones:

using System;
using System.Collections.Generic;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;

Is there any way of adding them? 

 

Thank you very much!

Like 0

Like

4 comments
Best reply

Click on any white space in the process to get the blue "Process" plane on the side. On the Methods tab you can add usings.

Ryan

Click on any white space in the process to get the blue "Process" plane on the side. On the Methods tab you can add usings.

Ryan

Ryan Farley,

Thank you for the clarification!

 

I have tried but I need to add previously the libraries to the site. Do you know how to add this library to the configuration for calling it later from the script?

You need to add the assembly to your package, there's an option for "Import" on the add menu.

I have tried and it works, thank you very much Ryan!

Show all comments

Where can i see the Schema details in the Creatio to edit it.

Like 0

Like

1 comments

Hello,

 

In Creatio, you can access the Schema details and make edits in the Configuration section

Show all comments

Hi Community,

1- Is there any set of practices to optimize Bussiness Processes ?

Ex- I already know that for 'Read Elements' we should only choose to read the fields we use through the process., and NOT all the fields of the Object.

 

2- Is it a good practice that for processes that are used often and that consume a lot of time, to replace the low code elements 'Add Data' od 'Modify Data' with user tasks ( C#) ?

 

Thank you

Sasori

Like 2

Like

6 comments
Best reply

Hello,

 

There are indeed several practices that can help optimize business processes:

- Minimize unnecessary actions: Similar to your example of reading only the required fields, it's a good practice to minimize unnecessary actions within a process. This includes reducing unnecessary data queries, calculations, or validations that may not contribute to the outcome.

- Use conditional branching wisely: Avoid excessive or complex branching conditions within a process, as it can make the process harder to understand and maintain. Simplify the logic by using conditions that are essential to the process flow.

- Optimize data retrieval: When retrieving data from external systems or databases, consider using filters and conditions to retrieve only the necessary data. This can improve the performance of the process and reduce unnecessary data processing.

- Monitor and measure process performance: Regularly monitor and measure the performance of your business processes. Use the built-in analytics tools to identify bottlenecks, areas for improvement, and opportunities for optimization.

2. It would be nice to create processes with no-code, but Creatio coverts them to C# code

Hi Vladimir, thank you for your answer :)

So using a 'user task' insted of low a low code element doesnt actually improve the performance ?

What is you suggestion in improving the performance of a business process ?

Hi community,

Any up-date regarding this topic ?

Sasori

Hi Creatio community,

Any up-date regarding the topic ?

Sasori

Hello,

 

There are indeed several practices that can help optimize business processes:

- Minimize unnecessary actions: Similar to your example of reading only the required fields, it's a good practice to minimize unnecessary actions within a process. This includes reducing unnecessary data queries, calculations, or validations that may not contribute to the outcome.

- Use conditional branching wisely: Avoid excessive or complex branching conditions within a process, as it can make the process harder to understand and maintain. Simplify the logic by using conditions that are essential to the process flow.

- Optimize data retrieval: When retrieving data from external systems or databases, consider using filters and conditions to retrieve only the necessary data. This can improve the performance of the process and reduce unnecessary data processing.

- Monitor and measure process performance: Regularly monitor and measure the performance of your business processes. Use the built-in analytics tools to identify bottlenecks, areas for improvement, and opportunities for optimization.

It is generally recommended to use low-code elements like "Add Data" or "Modify Data" within processes whenever possible. These elements are designed to work efficiently with the platform's data structures and provide a simplified way to interact with the database.

Replacing low-code elements with custom user tasks using C# should be considered when there are specific requirements or complex business logic that cannot be achieved using the standard functionality. However, using custom user tasks introduces additional complexity, development effort, and maintenance overhead. It's important to carefully evaluate the trade-offs and assess whether the benefits of using custom code outweigh the potential drawbacks.

Show all comments

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

6 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(

Anton Starikov,

Hi Anton, Is there any news on when we can expect this? It's a really useful feature 

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