Hello Creatio Community,

 

I am currently working on a page in Freedom UI which contains a detail. The detail's object resides in Classic UI. I need to apply field validation on this detail while performing inline editing within the Freedom UI.

 

Here's a brief overview of what I'm trying to achieve:

  1. The main page is in Freedom UI.
  2. The detail object is in Classic UI.
  3. I need to implement field validation on the detail during inline editing.

     

I've attempted a few approaches, but none seem to provide the desired results. Has anyone faced a similar challenge or can provide guidance on how to achieve this functionality?

Any help or pointers would be greatly appreciated.

 

Thank you!

Like 0

Like

1 comments

Hello Kumar,
Looks like this task is impossible for now because Freedom UI doesn't allow getting the value of one control (attribute) in the code of custom validator for another control.

We have this task registered on our R&D team and will get this possibility in future releases, please follow the updates.

Best regards, Anhelina!
 

Show all comments

Hello Community ,

 

how can we configure the home page as the default login instead of the Desktop page , as well as the workspace?

 

Thanks

Like 0

Like

1 comments

Hello,

Unfortunately, we do not currently have the option to specify a default Home page for all new users. As for now, you can only set a section (Dashboards, Contacts, Accounts, etc.) as the default value for the user. You can view this post:  https://community.creatio.com/questions/default-page-login

However, we have registered it in our R&D team backlog for consideration and implementation in future application releases. 

Show all comments

Hi All,

I have two instances of Creatio and they are both fail to compile.

 

Old Instance 

New Instance 

I do have the c:\windows\system32\inetsrv\NuGet\Migrations folder created.  

 

Both logs show a variegation of the below error messages, 6 in the old and 12 in the new one.

 

2024-05-29 15:36:07,813 [99] INFO IIS APPPOOL\Studio_Assignment Build CaptureOutput - C:\Program Files\dotnet\sdk\8.0.100\NuGet.targets(156,5): error :   No such host is known. (api.nuget.org:443) [C:\Creatio\Studio_Softkey_MSSQL_assinment\Terrasoft.WebApp\Terrasoft.Configuration\Terrasoft.Configuration.ODataEntities.csproj]
2024-05-29 15:36:07,813 [99] INFO IIS APPPOOL\Studio_Assignment Build CaptureOutput - C:\Program Files\dotnet\sdk\8.0.100\NuGet.targets(156,5): error :   No such host is known. [C:\Creatio\Studio_Softkey_MSSQL_assinment\Terrasoft.WebApp\Terrasoft.Configuration\Terrasoft.Configuration.ODataEntities.csproj]

 

I installed sdk\8.0.100 but the problem persists.

 

While looking at the documentation i see that sdk\8.0.100 is not a requirment so I'm a bit confused as to why the logs show this error message. 

 

The old version worked up until yesterday, not sure what changed.

Any help is much appreciated,

Thanks,

Paddy 

 

 

File attachments
Like 1

Like

2 comments
Best reply

It’s working now (the next day), both compile. 

 

My network was filtering some Microsoft traffic, after I removed the network restriction it worked as expected. 

It’s working now (the next day), both compile. 

 

My network was filtering some Microsoft traffic, after I removed the network restriction it worked as expected. 

Hello,
 

We are glad to hear that you managed to solve the compilation issues.

Based on the errors, the dotnet components lacked the necessary files for the application to work correctly and an attempt was made to get the necessary files from the NuGet repository, but since there was no full access to the repository via the Internet, this error occurred.

Show all comments

Hi,

 

I have a Freedom UI list where I can take a few actions after the user has selected one or more rows. The actions run as expected, but the records are kept selected after the actions run and the user has to manually clear the selection. What do I need to add to the custom code to clear the selection? 

Thanks,
Jose 

File attachments
Like 1

Like

7 comments
Best reply

Jose Hernandez,

 

You need to try

 

request.$context.GridDetail_tviz7gf_SelectionState = null
 

null is needed to remove the selection, but also change GridDetail_tviz7gf to your list attribute.

Hello,

Could you describe exactly what your custom logic performs for better understanding?

Malika,

 

It depends on the action. The Unlock one just clears the locked by field for the selected cases. The print generates letters and sends them to our print vendor for each case selected. Finally, the Assign one opens a window where the user can select the person to assign the cases to. Each one is calling the code below with the proper parameters.

I just need to know what I need to add to that code to clear the selection after the code that runs the business process.

 

Thanks,

Jose

        processSelectedRows: async function(request, processName, message, next) {
            var selectedRecords = await this.getSelectedRows(request.$context);
            var count = selectedRecords.count;
            var date = new Date();
            var hours = date.getHours();
            var minutes = date.getMinutes();
            var ampm = hours >= 12 ? 'PM' : 'AM';
            hours = hours > 12 ? hours - 12 : hours;
            var timeString = hours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0') + " " + ampm;
            message = message + " on " + timeString + " for " +  count + " selected records.";
            request.$context.executeRequest({
                type: "crt.NotificationRequest",
                message:message
            });
            const handlerChain = sdk.HandlerChainService.instance;
            result = await handlerChain.process({
                type: 'crt.RunBusinessProcessRequest',
                processName: processName,
                processRunType: "RegardlessOfThePage",
                processParameters: {
                    "SelectedRecords": selectedRecords.selected
                },
                $context: request.$context
            });
            if (!result.success)  {
                var errorMsg = Ext.String.format(resources.localizableStrings.UnableToProcessSelectedRows, processName, result.errorInfo?.message);
                request.$context.executeRequest({
                    type: "crt.NotificationRequest",
                    message: errorMsg
                });                        
            }
            /* Call the next handler if it exists and return its result. */
            return next?.handle(request);
        }

I've not tried clearing the selections, but it might work to do this after you execute the process: 

request.$context.DataTable_SelectionState.selected = [];

Or it could be that you'll set SelectionState to null or {}?

Ryan

Ryan Farley,

Thanks Ryan. I tried that (and other variations like setting the type to 'clear') and the model gets cleared, but the GUI is not refreshed. In other worlds on the page the records are still showing as selected even though the model now has cleared the selection.

Jose Hernandez,

 

You need to try

 

request.$context.GridDetail_tviz7gf_SelectionState = null
 

null is needed to remove the selection, but also change GridDetail_tviz7gf to your list attribute.

Thanks Oleg. That worked. In my case I used  request.$context.DataTable_SelectionState = null; 

Viktoriia,

 

Hello,

 

It's 

 

request.$context.DataTable_SelectedRows
 

DataTable should be replaced with your list attribute name.

Show all comments

Hi;

We try to upgrade version 7.17 to 8.1
in our solution we use such script (in attachment) after upgrade FindFlowElemetbyName return null.
We try to find wait for signal element.

 

thanks for any suggestions.

Regards
Tomek

File attachments
Like 0

Like

3 comments

Hello!

Unfortunately, the file is not available.
Please re-send it once again.

Alona Dolya,

Hi.
 that is ScriptTask we use

private bool UsrSetClaimRequestCrSignalScriptTaskExecute(ProcessExecutingContext context) {
    var uc = Get<UserConnection>("UserConnection");
    
    var claimSignalDAO = new ClaimSignalDAO(uc);
    
    var signalId = Guid.Parse(context.Process.FindFlowElementByName("UsrClaimRequestStartSignals").GetPropertyValueByPath("RecordId").ToString());
    var signalTypeId = claimSignalDAO.GetSignalType(signalId);
    var crId = claimSignalDAO.GetParameterGuid(signalId);
    
    Set("UsrClaimSignalType", signalTypeId);
    Set("UsrClaimRequest", crId);
    
    return true;
}

Hi;
Does anyone have idea why script element do not see the start element by name.


Regards
Tomek

 

Show all comments

I am trying to add Virtual Detail that will contain records which don't exist in DataBase.

Now I have Detail connected to Object "Card" and After clicking Get card I am calling Get method which returns Data which I Parse in my Detail . But records exists in DataBase and i want to make it virtual.

 

I am following https://community.creatio.com/articles/add-virtual-detail-page,

1.I Created Virtual Object .

2. I did not created service while we are making API call which will returns Data. 

3. I Created virtual detail. 

4. I Insert virtual detail into Contact page.

Error: As we see in collection there is my data and thats fine but I can not read Column in virtual Object. 

 

Please help how can i solve this issue and how to add virtual detail in proper way

Like 0

Like

2 comments

Here is an example of code for the detail that will input values from the custom array into the detail. Please also note that this approach will only work if the detail contains at least 1 record (in case there are no records you will need to click the button twice for the array content to be displayed in the page). Also don't forget to add the LoadGridButtonCaption localizable string to your detail schema:

define("UsrSchema130af5ebDetail", [], function() {
	return {
		entitySchemaName: "UsrTestDetail",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: {
			IsGridEmpty: {
                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
                    value: true
                }
		},
		diff: /**SCHEMA_DIFF*/[
			{
                "operation": "insert",
                "name": "LoadGridButton",
                "parentName": "Detail",
                "propertyName": "tools",
                "values": {
                    "itemType": Terrasoft.ViewItemType.BUTTON,
                    "caption": {"bindTo": "Resources.Strings.LoadGridButtonCaption"},
                    "click": {"bindTo": "onLoadGridButtonClick"},
                    "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT
                }
            }
		]/**SCHEMA_DIFF*/,
		methods: {
			onLoadGridButtonClick: function() {
				//object to load data from
				var object = [
					{
						UsrName: "1111",
						UsrIntColumn: 1
					},
					{
						UsrName: "Test2",
						UsrIntColumn: 24
					}
				];
				//create view model for the object items
				var newCollection = Ext.create("Terrasoft.Collection");
				Terrasoft.each(object, function(item, key) {
					var model = Ext.create("Terrasoft.BaseViewModel", {
						rowConfig: {
							Id: {
								columnPath: "Id",
								dataValueType: Terrasoft.DataValueType.GUID
							},
							UsrName: {
								columnPath: "UsrName",
								dataValueType: Terrasoft.DataValueType.TEXT
							},
							UsrIntColumn: {
								columnPath: "UsrIntColumn",
								dataValueType: Terrasoft.DataValueType.INTEGER
							}
						},
						values: {
							Id: Terrasoft.generateGUID(),
							UsrName: item.UsrName,
							UsrIntColumn: item.UsrIntColumn,
						}
					}, this);
					newCollection.add(model.get("Id"), model);
				});
				//add new collection items from the created model
 
 
				//get current Grid collection
				var collection = this.get("Collection");
				//empty current Grid collection
				collection.clear();
				//add Grid collection items from the new collection
				collection.loadAll(newCollection);
				//specify that Grid data is loaded
				this.set("IsGridEmpty", false);
			}
		}
	};
});

Oleg Drobina,

It works, Thanks a lot.

Show all comments

How can I solve this block in the localhost environment?

Like 0

Like

2 comments

Hello,

Please note that the error "Cannot add more than 1000 records to table "%" in demo mode" means that your environment works in a demo mode, which is the only way a site can work without licenses. In the demo mode, there are certain restrictions on working with data, specifically a maximum number of a 1k records in a table, and your process seems to be trying to add more records than that, hence the error.

So, to solve it, you have to apply licenses to the instance.

 

Best regards,
Mariia

I thought we would have full access to prepare an environment as partners with localhost, and in the end just import the package on the client's server.
But ok, thanks for the answer Mariia.

Show all comments

Hi everyone,

I hope you're all doing well. I'm currently working on exporting an Excel report of section data and its details in Creatio. I found a package named IntExcelExport in the Creatio marketplace, which seemed perfect for my needs.

However, I ran into an issue while trying to configure the report. Whenever I try to set it up, I get the following error:

"Cannot read properties of null (reading 'isTiled')"

I've tried several times, but I keep encountering the same problem. Has anyone else experienced this issue or have any insights on how to resolve it?

 

Any guidance or suggestions would be greatly appreciated!

Thank you in advance for your help.

Like 0

Like

1 comments

Hello Abderrahman Tigami,

I have successfully configured and generated Excel reports using the current version of the app. I kindly ask you to provide more details how to reproduce your issue (version of Creatio instance, report type, any section or specific one).

Show all comments

Hi Creatio Community,

 

I am currently working on a project in Creatio Freedom UI and need to implement a tree view for a section or detail. This functionality is essential for displaying data hierarchically and enhancing user navigation.

Could anyone provide guidance or share any documentation, examples, or best practices on how to achieve this in Creatio Freedom UI? Your assistance would be greatly appreciated.

Thank you in advance for your help.

Like 1

Like

1 comments

Satyam, 

Have you checked the product selection in the order module ?

 

The object cannot be directly taken from the component in the Freedom UI designer but you can use it if you set as parent the "Base entity catalog page (BaseEntityCatalogPage)" page in your page. 

 

As restult you will get a hierarchy tree and then you can customize the page as needed. I tried it with the case object and using the account and contact in the hierarchy.

 

inherit from base entity catalog page

 

Set the option on the hierarchy tree

Show all comments

Hi,

 

I have to implement validations on the editable detail of a section. For the purpose, I am using addRecord

But while I am trying to get the value of the lookup field which is connecting the records to the main section, it is returning undefined.

 

Please refer below code:

addRecord: function()

{

     this.DurationValidation();

     this.callParent(arguments);

}
DurationValidation : function()
            {
                var invalidMessage="";
                try
                {
                     var esqDuration = this.Ext.create("Terrasoft.EntitySchemaQuery", {
                    rootSchemaName: "UsrPRDetail"
                });
                esqDuration.addColumn("UsrDurationmin");
                var groupFilters = this.Ext.create("Terrasoft.FilterGroup");
                var currentPR = this.get("UsrPR");
                console.log(currentPR);
                var filterId = this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "UsrPR", currentPR);
                groupFilters.addItem(filterId);
                esqDuration.filters.add(groupFilters);
                esqDuration.getEntityCollection(function(result) {
                    if (!result.success) {
                        this.showInformationDialog("Request error");
                        return;
                    } else {
                        var totalDuration = 0;
                        result.collection.each(function(item) {
                            totalDuration += item.get("UsrDurationmin");
                        });
                        this.set("totalSessionDuration", totalDuration);
                        
                        console.log(totalDuration);
                        this.showInformationDialog(totalDuration);
                         invalidMessage = this.get('Resources.Strings.DurationLimitExceeded');
                        this.showInformationDialog(invalidMessage);
                    }
                }, this);
                }
                catch(e)
                {
                    console.log(e);
                }
                finally
                {
                    return {
                        invalidMessage: invalidMessage
                    };
                }   
            }

 

 

Due to this undefined value, I am not able to check the total duration of details elements in current section record. Please guide in this regard.

Like 0

Like

1 comments

Hello,

 

From the code I can suppose that the undefined value is in the UsrPR column and it happens because the addRecord method triggers before the record values are filled in and the record is actually added (the method is triggered once the + button to add a record is clicked).

 

In case you need to get the value for the lookup column that links the detail to the main section you can use

 

this.values.DefaultValues
 

to get the value for the main section record (in the screenshot below the detail is added to the CasePage and the main entity is Case, the lookup column to connect detail to the main section in the detail is UsrCase):

Show all comments