Hi all,

 

In our project we need to produce with Creatio application some .pdf documents. In order to do this we found a Creatio Application (Aspose.PDF connector). This application is not free of charge.

 

We were wondering if exists an OOTB (free of charge) functionality to produce .pdf documents. We are asking since on our view 'production of .pdf document' must be an OOTB functionality. Moreover it's very hard to convince a customer that this functionality it not free of charge.

 

Best Regards

 

Stefano    

Like 2

Like

2 comments

Hello, 

By default, Creatio provides a plugin to be able to upload only in Word format.
https://academy.creatio.com/docs/8.x/no-code-customization/category/pri…;
https://academy.creatio.com/online-courses/article-courses-18

PDF conversion in printables is available after installing this marketplace app https://marketplace.creatio.com/app/asposepdf-connector-creatio. The first 150 conversions are for free, but other conversions require additional payment (prices are available here https://purchase.aspose.cloud/pricing). 

So for test purposes, you can use the free 150 conversions provided in the app. 

We have already registered the idea for our R&D team to implement this functionality in further releases. I will assign your case to this project in order to increase its priority.

Best regards,
Ivan

Besides, this aspose means that your document will go through some 3rd-party service, that is not acceptable by many customers security polices.

So, it is extremely necessary to have this functionality inside Creatio system

Show all comments

I have integrated SOAP service in trial version of Sales Creatio. The test request was successful and returns the response parameters correctly, but when I'm trying to call the webservice in business process and bind the response parameter to auto-generated page, it shown only "Response body" in Process Elements parameter.

 

Please, refer the screenshots attached.

 

 

 

Any guidance would be appreciated!

Like 0

Like

3 comments

My guess is that it is because the web service is returning an array of records and the MemberNumber is from an element in the array/collection. If the web service is really just returning one record, but wrapping it in an array, you could map the field in the web services setup in Creatio as something like (you might need to modify this to match the structure of the json returned from the API):

$.[0].MemberNumber

To specifically get the value from the record at index 0 of the array.

Ryan

How to bind all the records from array/collection in grid from web service response without entity?

Revathi,

You’ll need to use a subprocess and pass each item returned to the sub process. See an article on that here https://customerfx.com/article/working-with-collections-from-a-web-service-element-in-a-process-in-creatio/

Ryan

Show all comments

 

Hello! 

 

Would anyone know how to open dashboards in Section view in Creatio free trial?

Is there an additional package I need to install? If yes, what is it? 

 

Thanks,

Jacek

 

 

What I see...

What I am looking for

Like 0

Like

1 comments

Not yet available in Freedom UI sections.

Show all comments

Hello community,

 

Do you know how I can configure the duplicate widget on account or contact form page like the following snapshot ?

 

 

Like 0

Like

5 comments

In the classic UI I can enable it using the DuplicatesWidget feature.

In the freedom UI it does not work the DuplicatesWidget setting.

Hello,

 

Unfortunately, this widget is not currently available in Freedom UI.

However, we are pleased to inform you that our development team is already aware of this need and is actively considering adding this functionality in future versions of Creatio. Your feedback is valuable and helps us improve our product.

Thank you for choosing Creatio!

 

Hi, 

I hope sooner than later, because indeed, the videos show this widget in Freedom UI ...

@stefano, there are some possibilities provided by the following app: https://marketplace.creatio.com/app/deduplication-freedom-ui-enhancements 

Thanks,


Damien

Damien Collot,

Hi Damien I tried the addon you suggested, this addon doesn't provide the widget feature.

I've doubt, when the functionality will be integrated on the system what will happen for the customer who used the marketplace addon?

Stefano Bassoli,


Hi, it's a good question. For what happens when the functionality gets natively integrated in future versions without the need of the addon.

It's one of those hygiene expected CRM features that is taking too long to re-emerge in Freedom UI. Data quality is paramount in a CRM. 


Damien

Show all comments

I need to be able to read the name of the current user in a business process so I can insert it in a comment section (not as the GUID).

 

I was thinking I could look up contact (or user) where the ID equals the system variable current user but that doesn't work. 

Like 0

Like

2 comments

You must first create a param in your process with Type=Unique Identifier and set the param value to [#System variable.Current user contact#]

Then you can use that param when reading from Contact

Ryan

Great, thanks Ryan. 

 

Show all comments

Hello, I would like to get assistance on how to implement the "Account Addresses" detail within contacts section, inside activities for the mobile app. When you view a contact in the mobile app and see their addresses in the "Account addresses" detail you can click the address and it will open the native maps app on your phone so you can get directions. 

 

How do I set this up within the activities section of the mobile app so that if I put in a location, it can be a clickable field similar to Contacts section?

 

Also, is there a way to pull in the contact's address to the activity that can be clicked to open the maps app?

 

Thank you,

 

Eric

Like 2

Like

1 comments

Hello Eric,
Thank you for your question.

Yes, it is possible. For the example, in Configuration menu i added an object (UsrActivityAddress) with a parent object - BaseAddress and a column UsrActivity with data source - Activity, which links UsrActivityAddress with Activity. 

Then go to Mobile application wizard. Here i created a custom workplace and added Activity section to the workplace. In page setup:


Save and go to Configuration. There search you need to search for the name of the detail that mobile wizard provides for the detail on the page you just added. For this search for MobileActivityRecordPageSettings[plus the name of workplace you are adding activity with address to]. In my case it was UsrMobileActivityRecordPageSettingsUsrTestMobile. After that scroll down and find items which represent fields that you added to mobile section page wizard. The name of the detail looks might look like this "UsrSchema302ae53eDetailEmbeddedDetail". Copy the value and go to the top of file.

Then you need to add viewConfigDiff:1
Here you delete those details fields from you mobile page layout and you merge AddressPreview component. If the column name was Address in viewConfigDiff it becomes [name of your detail in mobile wizard]_ItemLayout_[column name]. 

Also note, that this component is not described on the Academy and designed for internal usage thus in not recommended for public usage in current version.

Hope this helps
 

Show all comments

Hi community,

I need help with implementing a toggle button in my Freedom UI section.Thanks in advance.

Regards,
Mahalaxmi Ganesan


 

Like 0

Like

1 comments

Hi 

 

I'm currently using the trial version of Sales Creatio in Chrome and would like to integrate Gmail for better email management. Could someone guide me through the steps or provide tips on how to successfully integrate Gmail with Creatio? Any insights on best practices or potential pitfalls to watch out for would be greatly appreciated!

Please refer a Screen Shot : 



 

Like 0

Like

2 comments

In order to add a gmail account you need to create an app specific password (which means you'll also need 2 factor authentication enabled in gmail also). Then, when adding the gmail account in Creatio you'll provide the app specific password instead of your real one. See https://support.google.com/mail/answer/185833?hl=en

Ryan

Hi Ryan

Despite already using an app-specific password, I'm still encountering errors when trying to integrate Gmail with Creatio. What steps should I take to resolve this issue?

Show all comments

Hi,

I often use backend validation in Creatio - I prevent saving a record and throw an exception from an event listener. It works like a charm, but as a result, the end user sees only a toast message, which is small and disappears after a moment, so it's easy to overlook. Is it possible to intercept such an error and display a normal confirmation popup, instead of this one?

It would be great if there is a generic solution, which doesn't require me to change all of my validations.

Like 0

Like

2 comments

Hi Eryk, in your business process you can display a mini page with the process component pre-configured page. 

 

Else you have following component to add in your site:

https://marketplace.creatio.com/template/popup-element-business-processes

 

Hope this helps.

Hello Eryk,
Thanks for your question.

As an alternative you can use websockets to implement your logic. 

Here i created a custom section and a clientMessageBridge as described in this article. In this section i created a Test Field. To subscribe to message broadcasting in the HandleViewModelInitRequest handler i used schema attribute to store a function that will be called whenever a message is published. Also note, that you should unsubscribe from websocket connection when your view is destroyed. To do this please don't forget to implement such logic in HandleViewModelDestroyRequest handler. 

On the form page when user clicks Save button a custom MyCustomRequest handler is called. In this handler i realized the following logic: call a business process (where i pass Test Field value as well as expected business process parameter value) -> if there is no validation error that is passed back from business process (hasValidationErrors property) i call SaveRecordRequest request -> if there is an error - the SaveRecordRequest is not performed.

Also the function that is triggered when a websocket message is broadcasted does open a pop-up which displays error message.

Here is an example:
page designer
handlers
bp

script task

And the outcome:
3
1

2

Hope this helps and let me know if you have any question left.

Show all comments

Hi all,

 

We want, in Freedom UI, to order as per customer need the options in a drop-down menu.

 

We know that this implementation is possible in Classic UI but we don't know how to address it using Freedom UI.

 

Can anyone help us in addressing our customer request?

 

Thank you very much in advance.

 

Best regards

 

Stefano

Like 1

Like

8 comments

Hello,
Please specify where exactly you need a drop-down menu; 
Please provide us with the screenshots of the Classic UI functionality that you want in Freedom UI.

Antonii Viazovskyi,

I believe Stefano is referring to a lookup displayed as a drop down. I would love to know if those can be sorted as well. They're typically sorted in alphabetical order, any of my attempts to change the order in the load request don't work.

Ryan

Antonii Viazovskyi,

Hello Antonii,

I've a lookup with figures 1, 2, 3, ,4, 5, 6, 7, 8, 9, 10... the lookup values are sorted alphabetically so the result is 1, 10, 2, etc..

I can add a leading 0 or change the collate rule for the "Name" field 

 

CREATE COLLATION numeric (provider = icu, locale = 'en-u-kn-true'); ALTER TABLE "UsrPercentDeductible" 

ALTER COLUMN "Name" SET DATA TYPE character varying(250) COLLATE "numeric";

Hi All,

 

As stated by Ryan I'm referring to a lookup dispalyed as a drop down. Is there a way to configure a custom sorting in that situation?

 

Best Regards

 

Stefano

STEFANO FERRARI,


Unfortunately, there are no basic system tools to change the alphabetical filtration order. To implement a custom filtration order, additional development will be needed. 
You can check the below posts where similar business tasks have been already discussed: https://community.creatio.com/questions/sorting-values-lookup-field-besides-alphabetic-order https://community.creatio.com/questions/sorting-drop-down-lookup https://community.creatio.com/questions/freedom-ui-sorting-lookup https://community.creatio.com/questions/change-order-lookup-values-list 
In addition, a task has already been registered in our R&D team to consider and implement such a feature in future releases

Hi guys,

 

I have decided to take a quick look at this and managed to get it working.

For example, adding this handler on the Accounts_FormPage should filter the "Type" by "Id" descending.


(In the code block change the ">" to ">", can't seem to fix this in the reply editor)

 

{
	request: "crt.HandleViewModelInitRequest",
	handler: async (request, next) => {
		let sortingConfigList = await request.$context.Type_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "Id";
		firstSortingConfig.direction = "desc"; //desc or asc
		return next?.handle(request);
	}
}

 

 

 

 

So the page context attribute we need to change is attributecode_List_Sorting.
This is a list of "order configurations" (so you can order by multiple columns for example)
So we just need to get the first item in this list and change the columnName from Name to whatever other field we need to order on
And we can optionally change the direction property to "desc" to order descending (it is "asc" by default).

Thanks, I have an additional question. I have more than one lookup to be needed to sort in accounts, use this code, but sort just one. What's wrong?

 

{
	request: "crt.HandleViewModelInitRequest",
 
	// 1.- Typo Empresa
	handler: async (request, next) => {
		//await next?.handle(request);
		let sortingConfigList = await request.$context.Type_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "NdosOrdenarPor"; // Campo nuevo creado en AccountType
		firstSortingConfig.direction = "asc"; //desc or asc
		return next?.handle(request); 
	}, 
 
	// 2.- Nro de Empleados
	handler: async (request, next) => {
		//await next?.handle(request);
		let sortingConfigList = await request.$context.EmployeesNumber_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "Position";
		firstSortingConfig.direction = "asc"; //desc or asc
		return next?.handle(request); 
	}, 
 
	// 3.- Annual revenue/Facturacion anual
	handler: async (request, next) => {
		//await next?.handle(request);
		let sortingConfigList = await request.$context.AnnualRevenue_List_Sorting;
		let firstSortingConfig = sortingConfigList[0];
		firstSortingConfig.columnName = "FromBaseCurrency";
		firstSortingConfig.direction = "asc"; //desc or asc
		return next?.handle(request); //next?.handle(request);
	}
 
}

Julio Falcon (Cibernética),

You will need to combine these into one "handler"

 

{
	request: "crt.HandleViewModelInitRequest",
 
	handler: async (request, next) => {
		// 1.- Typo Empresa
		let sortingConfigListType = await request.$context.Type_List_Sorting;
		let firstSortingConfigType = sortingConfigListType[0];
		firstSortingConfigType.columnName = "NdosOrdenarPor"; // Campo nuevo creado en AccountType
		firstSortingConfigType.direction = "asc"; //desc or asc
 
		// 2.- Nro de Empleados
		let sortingConfigListEmployeesNumber = await request.$context.EmployeesNumber_List_Sorting;
		let firstSortingConfigEmployeesNumber = sortingConfigListEmployeesNumber[0];
		firstSortingConfigEmployeesNumber.columnName = "Position";
		firstSortingConfigEmployeesNumber.direction = "asc"; //desc or asc
 
		// 3.- Annual revenue/Facturacion anual
		let sortingConfigListAnnualRevenue = await request.$context.AnnualRevenue_List_Sorting;
		let firstSortingConfigAnnualRevenue = sortingConfigListAnnualRevenue[0];
		firstSortingConfigAnnualRevenue.columnName = "FromBaseCurrency";
		firstSortingConfigAnnualRevenue.direction = "asc"; //desc or asc
 
		return next?.handle(request); 
	},  
}
Show all comments