Dear community!

 

Does someone thinks about such a feature?

To let operator user work with chat channel from mobile application?

Maybe, Creatio team have it in the backlog?

Like 0

Like

1 comments

Hello,

 

Currently, there is no possibility to work with chats in the mobile application. However, we have already registered a task for our R&D team to explore the possibility of implementing this functionality in future.

 

Thank you for your question!

Show all comments

Hi Community,

On change of a specific field's value, the case should be updated automatically without any user interaction or confirmation needed to replace the case.

I want the case to be automatically replaced based on its condition.

Like 1

Like

2 comments

Hello,

Any updates on the issue I'm currently facing?

 

Thanks

Hello!
 


This is basic system functionality—if a DCM has previously been used in requests (or other areas) and work has already been done in it, the system does not update it, as it may not be necessary for the user. Therefore, on the left side, you’ll see an icon that first prompts for confirmation to apply changes for the current request.

Regards,
Orkhan

Show all comments

Good afternoon,

 

I'm looking for a no-code solation that would prevent a user from adding a new "active" contract to an account if one already exists.

 

Example,

"Account A" has "Contract X" which is currently active. We would like to prevent a user from adding "Contract Y" to "Account A" since it already has an active contract. Is this possible without code? Currently on 8.1.5.2177 if that makes a difference . 

 

Regards,

Michael

Like 0

Like

1 comments

Hello,

You can create a business process, using no-code tools that, when creating a contract, will check if a contract exists for that account and, if so, will notify the user. To do this, you may need elements such as:
Signal start, Read data, Modify data, Delete data and Pre-configured page
 

You can also configure a duplicate search process using the Find and merge duplicates element and a pre-configured deduplication rule.  Before setting up the element, ensure bulk duplicate search and global search features are configured, and the relevant section has active duplicate search rules.

Best regards,
Antonii.

Show all comments

Hello Community,

 

I would like to filter data in my dashboard (Freedom UI) from Approval object based on the role of the currently logged in user in the Approver field. However I could not find a way to achieve this at design time (possible way was to use a macro but it does not allow this). Please see attached screen shot. I have used a View to fetch data from the Approval object. Is there a way to filter the data possibly through code or from the View itself?

Like 0

Like

1 comments

Hello,
 

Unfortunately, it is not yet possible to build a filter with Approvals object when using the new Approval mechanism with the basic tools of our application.
 

As a workaround, you can try to develop a filter for your needs, but even using development methods, it is unlikely that you will be able to use the Approvals object for filtering.

You can try to develop filtering as follows:

1) Change the dashboard filter logic before loading data using the filter. This should be done by manipulating with the _Data_PredefinedFilter property of the dashboard. See example below:

 

Code example

 

Here we used the HandleViewModelInitRequest (page is opened) and we have access to the filter of the dashboard using request.$context.IndicatorWidget_5jpo3v5_Data_PredefinedFilter (IndicatorWidget_5jpo3v5 should be changed to the code of the dashboard we are interested in). To get the filter use the code:

let dashboardFilter = await request.$context.IndicatorWidget_5jpo3v5_Data_PredefinedFilter;

Then you can manipulate with the filter and set the value back as

request.$context.IndicatorWidget_5jpo3v5_Data_PredefinedFilter = dashboardFilter (or any other variable name that is used to manipulate the filter)

2) Manipulate with the already received response and set the value to the dashboard. This is easy with dashboards of the metrics type, but more complex with dashboards of the list type, and it cannot be done on the HandleViewModelInitRequest event. In this case you need to use sdk.Model to get some data for comparison (something like below):

const ceoFilter = new sdk.CompareFilter(sdk.ComparisonType.Equal, new sdk.ColumnExpression({
                       columnPath: "JobTitle"
                   }), new sdk.ParameterExpression({
                       value: "CEO"
                   }));
                   const contactModel = await sdk.Model.create("Contact");
                   const contacts = await contactModel.load({
                       attributes: ["Id", "Name", "JobTitle"],
                       parameters: [{
                           type: sdk.ModelParameterType.Filter,
                           value: ceoFilter
                       }]
                   });

And then modify the received data set from the dashboard (this dataset can be retreived from the dashboard.

End of problem not decided


However, we understand that this is not ideal for your specific needs.

 

We want to assure you that we have created a request for our development team to implement this functionality in future versions of our application. We understand the importance of providing our clients with the best possible experience and will work hard to implement the changes you have suggested.

 

Thank you again for bringing this to our attention, and please do not hesitate to reach out if you have any further questions or concerns.
 

Show all comments

Hi, folks. By default, custom angular components have no setting UI panel, as on screen. I haven't found any info in docs, so maybe here somebody knows how to add user-friendly way to set up component?

Like 0

Like

2 comments

Hello,
​​​​​​​
Unfortunately, for now, the system does not support such no-code option. However, already informed our developers about this option, and they will work on this feature in future versions. 

Thank you for helping us improve the system!


Best regards,
Ivan

Ivan Savenko,

ok, thx. Maybe there is some way to detect when page opened in configuration mode?

Show all comments

Hello,

 

How can I transfer the email template between DEV to QA?

 

Thanks

 

Like 0

Like

2 comments

Hi, you need to bind EmailTemplate & SysImage

 

Julio

Julio.Falcon_Nodos,

how can i know which one to bind?

Show all comments

Generate the process using BPM tools to export the data to SFTP location

Like 0

Like

1 comments

Hello,
Creatio does not currently have built-in functionality to upload files automatically through a business process. Files can only be uploaded manually via the “Files and Links” detail. 

Thank you!

Show all comments

Create a two folders in contact page Active users and Inactive users and add 2 buttons Activate and deactivate, after selecting multiple records from contact page when ever we click on deactivate the selected records should me moved to Inactive users folder and it shouldn't  available in Active folder, and from Inactive folder after selecting multiple records and after click on Activate all the selected records moved to Activate folder. how to achieve this using business process.

Like 0

Like

1 comments

Hello!

 

To set up something like this u will need:

 

At first create process which which will deactivate user depends on contact Id. I named it Deactivate sub.

 

  1. 1. Add parameter "Contact" type "Id"

 

 

2. Setup read data element, to find the user connected to this contact.

 

 

3. Modify this user.

 

 

Then create a parent process that will run "Deactive sub" i named it Deactive.

 

  1. 1. Add parameter collection and add inside it parameter type Id.

 

 

2. Add a subprocess parameter which is "Deactivate sub" and set process parameters.

 

 

Add a button to the page, and set it to run the process as it shown on the screenshot.

 

 

Use this to create a similar process for activating users. However, I recommend adding checking if a user exists for this contact.

Show all comments

Hi!

 

I'm trying to get all items in my detail list on freedom ui in the handler: "crt.SaveRecordRequest".
When enter in this handler, I need to read the values from an especific field from all items in the detail (In the image below you can see the field).
How can I access all items?

Like 0

Like

1 comments

Hello,

 

Here is the example of a handler where I read all values displayed in the list of contacts on the account form page:

{
                request: 'crt.SaveRecordsRequest',
                handler: async(request, next) => {
                  if (request.itemsAttributeName == "GridDetail_9ib3s20"
) {
                    const gridDetail = await request.$context.GridDetail_9ib3s20;
                    let nameColumnValues = [];
                    gridDetail.forEach((item) => {
 
                      nameColumnValues.push(item.GridDetail_9ib3s20DS_Name.__zone_symbol__value);
 
                    });
                    console.log(nameColumnValues);
                  }
                  return next?.handle(request);
                }
            }

 

GridDetail_9ib3s20 - is the attribute name for my test list.

As a result the array of names was logged in the console:

So you can try the same approach on your end.

Show all comments

Dear colleagues,

 

In Classic UI when ran a process we can get resultParameterValues in Client Code.

 

I need to do the same but in Freedom UI client module,

 

I saw some code like this in Academy, Community and so on, but didn't any who shows us how to get process output paramaters

const handlerChain = sdk.HandlerChainService.instance;
const result = await handlerChain.process({
    type: "crt.RunBusinessProcessRequest",
    processName: "UsrSomeProcess",
    processParameters: {
        AccountId: await request.$context.Id,
        InputParameter1: "Some Value 1",
		InputParameter2: "Some Value 2"
 
    },
    $context: request.$context
});
 
if (result.success) {
    // process was sucessfully executed
}

 

Please help

 

Thanks

Julio Falcón

Like 2

Like

8 comments

I saw in the debugging is there some resultParameterValues in the response, but is null and I have one output parameter?

 

Julio.Falcon_Nodos,

Solved! due the debugging resultParameterNames element I tried and works, here the result

 

// Inicialize Process input parameters
var ClienteObject = await request.$context.NCSDetalleDelPedidoDS_NCSCuenta_kn04jps;
var LugarPobladoObject = await request.$context.NCSDetalleDelPedidoDS_NCSLugarPoblado_g8rmatm;
var ProductoObject = await request.$context.NCSDetalleDelPedidoDS_NCSProducto_cuzrngv;
if ( ClienteObject == null || LugarPobladoObject == null || ProductoObject == null ) {
	await next?.handle(request);
 
}
/// Run process
const handlerChain = sdk.HandlerChainService.instance;
const result = await handlerChain.process({
	type: "crt.RunBusinessProcessRequest",
	processName: "NCSPrecioFinalProductoPedido",
	processParameters: {
		DetallePedidoID: await request.$context.Id,
		ClienteID: ClienteObject.value,
		LugarPobladoID: LugarPobladoObject.value,
		ProductoID: ProductoObject.value
 
	},
	/* Process Output Paramters */
	"resultParameterNames": [
		"PrecioFinal",
		"ProcessesRanOK"
	],
	$context: request.$context
});
 
// Result is OK?
if ( result.success && result.resultParameterValues[ "ProcessesRanOK" ] ) {
	// OK, get price
	request.$context.NCSDetalleDelPedidoDS_NCSPrecio_leqtalu = result.resultParameterValues[ "PrecioFinal" ];
 
} else {
	// Some error msg
	console.log( "Error getting price" )
 
}

Julio.Falcon_Nodos,

Julio, excellent find - I assume the start of the process needs to be marked as "run in background" = false? Can you check if your process is marked that way?

Ryan

.

Ryan Farley,

Hi Ryan, 

 

Yes, I have configured it as you indicate. Happy to help you!

Julio

Does anybody know which version of Creatio this works from? I'm seeming to get errors thrown when trying what Julio showed, and can't seem to track down what's causing it. We're currently running on 8.1.3, so was wondering if that might be the cause - what version were you running where it worked Julio? The error we see in the Network tab:

 

And the error text for reference:

The server encountered an error processing the request. The exception message is 'There was an error deserializing the object of type Terrasoft.Core.ServiceModelContract.RunProcessRequest. End element 'value' from namespace '' expected. Found element 'value' from namespace ''.'. See server logs for more details.

 

Checking the server logs, I don't see anything that gives much more information. I've tried using Output only and Bidirectional parameters, same result. To me, the error message seems to be saying it found what it was looking for, so I don't really understand why it should be throwing an error!

 

I've double checked that I'm using the right Parameter Code, and tried creating a new Parameter with a different Code to be requested to return and still get the same error.

Harvey Adcock,

I had tried this in an earlier version of Creatio and it definitely did not work, but I can't remember what version it was when I originally tried. I don't recall getting an error however, just didn't get any values back fore the params. Either way, I believe this was something that started working along the way, but I don't have any specifics. 

Ryan

Thanks Ryan, yes just discovered that I was accidentally passing a Lookup, rather than the Lookup's value (the actual Id!). So user error, and the data is being returned as expected in 8.1.3 I can confirm for anyone else looking. Not the clearest error for identifying the issue!

Show all comments