Hello community,

 

I want to remove the "No-Code Playbook" picture that appears by default on login page. Does anyone know how to do this?

 

Thanks in advance!

Like 0

Like

2 comments
Best reply

Hello,

You need to disable ShowWidgetOnLoginPage system setting in order to hide widget on the login page.

Best regards,
Pavlo!

Hello,

You need to disable ShowWidgetOnLoginPage system setting in order to hide widget on the login page.

Best regards,
Pavlo!

Thanks, Pavlo. It worked!

Show all comments


 

I have this list page, which has two QuickFilters, I need to get the values ​​from these quickfilters so that when the New button is pressed, these values ​​are passed to this new page to be taken into account when creating a new Payment.
One of the filters selects the contact and another selects the Loan to which the payment will be made. I have tried many ways, but I am unable to get the data from the quick filter.

Like 0

Like

5 comments
Best reply

How are you trying to do it? there is an element in the $context.attributes that must have the quickfilterName + "_value" and could be an array

How are you trying to do it? there is an element in the $context.attributes that must have the quickfilterName + "_value" and could be an array

Hi Jesus, I have tried to do it through that way but I only get undefined

hmm, if you do a console log to every change request in the handler (without specifying the attributeName) you can make sure you're using the correct name. I guess you've already done it, but just to make sure. 

 

Aditionally, there you could see in what format it comes. From what I see, it should show an array of objects, each object with an id and a displayValue

 

Probably the undefined is because of trying to get directly the value from the array without specifying which indexes. Or maybe you're trying to get the value from an inexistent field in the lookup. It's hard to tell without seeing the actual code

Carlos Soto,

Jesus is absolutely right. You may cover your task by taking the element code + "_value" in handler.

Please check one more time where exactly you are trying to take the filter value.

Hi Anhelina,

 

this is the code in the javascript of my form page

 

As you can see, the quickfilter does not have a control with which you can control the change in the field or recover the value that is set to it.

 

	"operation": "insert",
				"name": "QuickFilter_Loans",
				"values": {
					"layoutConfig": {
						"column": 1,
						"row": 1,
						"colSpan": 1,
						"rowSpan": 1
					},
					"type": "crt.QuickFilter",
					"config": {
						"caption": "#ResourceString(QuickFilter_Loans_config_caption)#",
						"hint": "",
						"icon": "filter-column-icon",
						"iconPosition": "left-icon",
						"defaultValue": [],
						"entitySchemaName": "DfcLoans",
						"recordsFilter": null
					}
Show all comments

Hello community,

 

the Excel reports builder for Creatio | Creatio Marketplace doesn't work correctly for custom sections.

I created a custom section and the "Section report" designed with the addon does not appear in the list section.

The addon adds the section customization on the "ListFreedomTemplate" but the freedom list page created inherits from ListPageV2Template (CrtUIPlatform).

 

Like 0

Like

2 comments

I tried to replace the ListPageV2Template, but it doesn't work

Does anyone have some suggestions?

Hi Stefano,

 

Thanks for letting us know about this issue! The responsible team plans to submit the update to the Creatio Marketplace at the beginning of February.

Show all comments

Hello community 

What do you suggest to start a new Creatio project, use the setup file for .NET Framework or start with NET 8?

Like 0

Like

4 comments

Dear Stefano, 

The decision to start the new Creatio project with the .NET Framework or with .NET 8 is entirely up to you. We support both options, so feel free to choose the one that best suits your needs. For additional guidance, you can use the system requirements calculator here: Creatio System Requirements Calculator.

Hanna Shevchenko writes:

Dear Stefano, 

The decision to start the new Creatio project with the .NET Framework or with .NET 8 is entirely up to you. We support both options, so feel free to choose the one that best suits your needs. For additional guidance, you can use the system requirements calculator here: Creatio System Requirements Calculator.

Do all marketplace addons work with both frameworks?

Vladimir Sokolov,

Hi!

 

Unfortunately, not all marketplace add-ons are compatible with both platform types. Some are designed specifically for .NET Framework, while others are compatible only with .NET. However, some add-ons do support both platform types.

To check compatibility, you can refer to the "Installation" tab on the marketplace page, where the available platform types are listed.

You might want to set up in .net 8 . Creatio 8.2.1 release notes : ".NET 6 deprecation. Since Microsoft ended official support for .NET 6 in November 2024, starting from version 8.2.1 Creatio no longer supports .NET 6 and switches to .NET 8."  https://academy.creatio.com/docs/8.x/resources/release-notes/8-2-1-energy-release-notes#title-2782-14 

Show all comments

Hi,

I'd like to know is it possible to have the log history of all export record by users and time in Creatio. I only know there is a setting of export permission in the object permission.

Jeffrey. 

Like 0

Like

1 comments

Hello Jeffrey, 

Unfortunately, there is no possibility to track down the information about exports from the CRM system.
We have already registered the idea for our R&D team to implement this functionality in further releases. 

Thank you for your valuable help in improving our product!

Show all comments

Hi Community,

I encountered an error while trying to change the Default Page in an object.

 

 

Does anyone know what might be causing this issue or how to resolve it? Any insights would be greatly appreciated.

Thank you in advance!

Like 0

Like

1 comments

Hello,

The issue can occur if you have two add-ons with different names referring to the same object. This typically happens when the object was renamed, and a new add-on was generated as a result. Or if duplicate add-ons were created for the same object in one package.

I'm also adding an example of how the addon will look in the system:

 

In order to solve this problem, it is necessary:
1. Identify and Remove the Conflicting Add-On
2. After removing the conflicting add-on, regenerate and compile the system to ensure all settings are correctly applied.

This should resolve the issue and ensure consistent behavior for your Default Page settings.

Show all comments

I have the following script task in a bpm.
This is responsible for taking the results of this api and inserting the records into a Creatio object.

Script task:

 var baseUrl = "https://angelbaraldo.creatio.com";
    var authUrl = baseUrl + "/ServiceModel/AuthService.svc/Login";
    var apiUrl = baseUrl + "/0/rest/CustomStockService/GetNoConciliadosData";
    var username = "MyUser";
    var password = "MyPassword";
 
    // Cuerpo de autenticación
    var authBody = new
    {
        UserName = username,
        UserPassword = password
    };
 
    var authBodyJson = Newtonsoft.Json.JsonConvert.SerializeObject(authBody);
 
    // Solicitud de autenticación
    var authRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(authUrl);
    authRequest.Method = "POST";
    authRequest.ContentType = "application/json; charset=utf-8";
 
    using (var streamWriter = new System.IO.StreamWriter(authRequest.GetRequestStream()))
    {
        streamWriter.Write(authBodyJson);
    }
 
    string authCookies = null;
    string bpmcsrf = null;
 
    // Obtener la respuesta de autenticación
    using (var authResponse = (System.Net.HttpWebResponse)authRequest.GetResponse())
    {
        authCookies = authResponse.Headers["Set-Cookie"];
 
        // Buscar el token BPMCSRF en las cookies
        var cookies = authResponse.Headers.GetValues("Set-Cookie");
        if (cookies != null)
        {
            foreach (var cookie in cookies)
            {
                if (cookie.Contains("BPMCSRF"))
                {
                    bpmcsrf = cookie.Split('=')[1].Split(';')[0];
                }
            }
        }
 
        if (string.IsNullOrEmpty(authCookies) || string.IsNullOrEmpty(bpmcsrf))
        {
            throw new Exception("Autenticación fallida: no se obtuvieron cookies o token BPMCSRF.");
        }
    }
 
    // Solicitud autenticada a la API
    var apiRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(apiUrl);
    apiRequest.Method = "GET";
    apiRequest.ContentType = "application/json";
    apiRequest.Headers["ForceUseSession"] = "true";
    apiRequest.Headers["Cookie"] = authCookies;
    apiRequest.Headers["BPMCSRF"] = bpmcsrf;
 
    // Obtener respuesta de la API
    string apiResponseContent;
    using (var apiResponse = (System.Net.HttpWebResponse)apiRequest.GetResponse())
    {
        using (var streamReader = new System.IO.StreamReader(apiResponse.GetResponseStream()))
        {
            apiResponseContent = streamReader.ReadToEnd();
        }
    }
 
    // Parsear los datos de la API
    var jsonRecords = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>>(apiResponseContent);
    // Procesar los registros (como en tu código original)
    var cantidadInsertados = 0;
 
    foreach (var record in jsonRecords)
    {
        var tipo = record.ContainsKey("Tipo") ? record["Tipo"]?.ToString() : null;
        var letter = record.ContainsKey("Letter") ? record["Letter"]?.ToString() : null;
        var cardCode = record.ContainsKey("CardCode") ? record["CardCode"]?.ToString() : null;
        var nroComprobante = record.ContainsKey("Nro Comprobante") ? record["Nro Comprobante"]?.ToString() : null;
        var nroOv = record.ContainsKey("Nro OV") ? record["Nro OV"]?.ToString() : null;
        var pymentGroup = record.ContainsKey("PymntGroup") ? record["PymntGroup"]?.ToString() : null;
        var docDate = record.ContainsKey("DocDate") ? record["DocDate"]?.ToString() : null;
        var vencimiento = record.ContainsKey("Vencimiento") ? record["Vencimiento"]?.ToString() : null;
        var docCur = record.ContainsKey("DocCur") ? record["DocCur"]?.ToString() : null;
        var docRate = record.ContainsKey("DocRate") ? record["DocRate"] : null;
        var debe = record.ContainsKey("Debe") ? record["Debe"] : null;
        var haber = record.ContainsKey("Haber") ? record["Haber"] : null;
        var debeUsd = record.ContainsKey("Debe USD") ? record["Debe USD"] : null;
        var haberUsd = record.ContainsKey("Haber USD") ? record["Haber USD"] : null;
 
        // Verificar si el registro ya existe
        var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "AgbCuentaCteSocioNegocios");
        var idColumn = esq.AddColumn("Id");
        esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "AgbCuemtaCteNumeroComprobante", nroComprobante));
        var entityCollection = esq.GetEntityCollection(UserConnection);
 
        // Consultar la cuenta relacionada
        var esq2 = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Account");
        var accountIdColumn = esq2.AddColumn("Id");
        esq2.Filters.Add(esq2.CreateFilterWithParameters(FilterComparisonType.Equal, "AgbCodigoSocioDeNegocios", cardCode));
        var accountCollection = esq2.GetEntityCollection(UserConnection);
 
        Guid? accountId = accountCollection.Count == 1 ? accountCollection[0].GetTypedColumnValue<Guid>(accountIdColumn.Name) : (Guid?)null;
 
        // Insertar el registro si no existe
        if (entityCollection.Count == 0 && !string.IsNullOrEmpty(nroComprobante))
        {
            var newEntity = UserConnection.EntitySchemaManager.GetInstanceByName("AgbCuentaCteSocioNegocios").CreateEntity(UserConnection);
 
            newEntity.SetDefColumnValues();
 
            newEntity.SetColumnValue("AgbCuemtaCteNumeroComprobante", nroComprobante);
            newEntity.SetColumnValue("AgbCuentaCteCodigoSn", cardCode);
            newEntity.SetColumnValue("AgbCuentaCteCondicionPago", pymentGroup);
            newEntity.SetColumnValue("AgbCuentaCteCuentas", accountId);
            newEntity.SetColumnValue("AgbCuentaCteDebe", debe);
            newEntity.SetColumnValue("AgbCuentaCteDebeUsd", debeUsd);
            newEntity.SetColumnValue("AgbCuentaCteFechaDocumento", docDate);
            newEntity.SetColumnValue("AgbCuentaCteFechaVencimiento", vencimiento);
            newEntity.SetColumnValue("AgbCuentaCteHaber", haber);
            newEntity.SetColumnValue("AgbCuentaCteHaberUsd", haberUsd);
            newEntity.SetColumnValue("AgbCuentaCteLetra", letter);
            newEntity.SetColumnValue("AgbCuentaCteMoneda", docCur);
            newEntity.SetColumnValue("AgbCuentaCteNumeroOv", nroOv);
            newEntity.SetColumnValue("AgbCuentaCteTipoCambio", docRate);
            newEntity.SetColumnValue("AgbCuentaCteTipoDocumento", tipo);
 
            newEntity.Save();
 
            // Incrementar el contador de registros insertados
            cantidadInsertados++;
        }
    }
 
    // Establecer el valor de registros insertados en la variable del proceso
    Set<int>("CantidadInsertados", cantidadInsertados);
 
    return true;

 

But when I run the bpm I get this error

Error:

System.Net.WebException: The remote server returned an error: (401) Unauthorized.
   at System.Net.HttpWebRequest.GetResponse()
   at Terrasoft.Core.Process.AgbProcess_93e521fAngelBaraldo1MethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessScriptTask.InternalExecute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.CallInternalExecute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.ExecuteItem(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

 

Like 1

Like

2 comments

Are you trying to send requests from Creatio to the same Creatio environment? 

If that's so, it's really strange implementation. I think it's much better to call the service logic directly rather then  send an HTTP request to the endpoint and parse the response json. 

the mock code would look like this 

var service = new CustomStockServiceHelper(userConnection); 
var response = service.GetNoConciliadosData();

I assumed that you use a CustomStockServiceHelper in CustomStockService to retrieve the data. 

 

DM me if you need more help. 

Best regards, 
Yurii

 

Yuri Sokil,

Yuri thanks for you response.

Show all comments

Hi

I am trying to follow the example of building a custom components using remote module from this page: 

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/front-end-development/freedom-ui/remote-module/implement-a-remote-module/overview

But when I reach the part of building the project on VS code using "npm run build" I always get the following error:

 

Generating browser application bundles (phase: setup)...C:\Users\Lenovo\Downloads\example4\node_modules\webpack\lib\container\ModuleFederationPlugin.js:58
                       throw new TypeError(
                             ^
TypeError: The 'compilation' argument must be an instance of Compilation
   at ModuleFederationPlugin.getCompilationHooks (C:\Users\Lenovo\Downloads\example4\node_modules\webpack\lib\container\ModuleFederationPlugin.js:58:10)
   at C:\Users\Lenovo\Downloads\example4\node_modules\webpack\lib\container\HoistContainerReferencesPlugin.js:36:33
   at Hook.eval [as call] (eval at create (C:\Users\Lenovo\Downloads\example4\node_modules\tapable\lib\HookCodeFactory.js:19:10), <anonymous>:88:1)
   at Hook.CALL_DELEGATE [as _call] (C:\Users\Lenovo\Downloads\example4\node_modules\tapable\lib\Hook.js:14:14)
   at Compiler.newCompilation (C:\Users\Lenovo\Downloads\example4\node_modules\@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:1121:30)
   at C:\Users\Lenovo\Downloads\example4\node_modules\@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:1166:29
   at eval (eval at create (C:\Users\Lenovo\Downloads\example4\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:31:1)

   

Any help for this?

Like 0

Like

1 comments

Hello,
I do not believe this issue has something to do with the article you provided or the Creatio system. Try to look for this error in other sources for example here.

Show all comments

Hi

I need help from you please how can I upload any file inside Attachment file and store it inside SharePoint can you help me

Regards,

Like 0

Like

2 comments

Hi Muath,

You can use the following marketplace add-on:
https://marketplace.creatio.com/app/sharepoint-integration-creatio

If this connector is not sufficient, the only other option is custom development.

Have a great day!

the case is that i need to develop this without add-ons  from marketplace. can you provide any guidelines or article to help me

Show all comments

Hey Everyone,


I am trying to change the order of the address in full address field in Accounts section of Customer360 creatio. Instead of Zip + Country + State + City + Address I want it as Address + City + State + ZipCode + Country.

 

I tried overriding the BaseAddressEventListener with my custom event listener but it didn't worked

 

Can someone please guide me on how to do it?

Like 1

Like

2 comments

Hello Ansh,
 

I have contacted our R&D team regarding this question. First of all, this logic is implemented on the backend side, which means that even if it is possible, it would likely be extremely challenging to achieve.
 

To conclude, I believe it is not feasible at the moment. However, I will register this as a potential improvement, and hopefully, this feature will be implemented in the future.
 

Best regards

Yevhenii Grytsiuk,

Thank you
The issue is fixed now, As I added a CustomAddressEventListener to override the BaseAddressEventListener in the source code of my custom package.

Show all comments