Dear mates,

In one of our dashboard block, i want to display the sum of the opportunity value.

It works fine, but the currency is $

How can i change it to € ?

Thank you !

Nicolas

Like 0

Like

1 comments

Hello Community,

I have data-binded the organizational and functional roles, while importing it to another instance it shows an error.

 



Thanks in Advance

Yasaswini I

Like 0

Like

3 comments

Hello!



Every time when we want to import data with changes in SysAdminUnit we should do the following:



1. disable trigger TRSysAdminUnitRoot

2. install the package with data

3. enable trigger TRSysAdminUnitRoot



Kind regards,

Vladimir

Vladimir Sokolov,

Thank You

Vladimir Sokolov,

Hello Vladimir,

 

Where I can found this trigger?

Show all comments

Hi,

I'm new in Creatio. I'm testing the integrations capabilities and I feel uncomfortable with Oauth. I want my user to log into the web service every time they acess my Creatio app. I want the protocol to retrieve their permissions/scopes in order to ensure they can access the data. In Creatio, all is performed on behalf of the user specified in the "Shared User" field. I don't want my users to use those credentials. Is there a way to bypass this ?

 

Like 0

Like

3 comments

Hello!

 

OAuth (Open Authorization) is a trusted, widely used standard protocol for authentication and authorization. It allows users to grant access to their resources on one website or application to a third-party application without disclosing their credentials, such as username and password. This approach enhances security and reduces the risk of credential theft. 

 

According to the basic logic of OAuth, the connection is created only once and only for one user. You can create another connection for the new user, however, there is no alternative way to bypass the logic as you described.

 

Hope the information was useful.

Hi,

 

Thank you for your answer. In that case, I am very curious about how you refresh the token given by the third party application. Essentially, what happens when the token expires ?

Thibault Cros,

To get a refresh_token, it will be necessary to add settings for "Auth code request URL" as it is described here: https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#how-do-i-get-a-new-access-token--if-my-access-token-expires-or-is-revoked-

 

We will be glad to help with any other questions.

Show all comments

Hello team, 

While compiling i get the following error

2023-02-28 00:25:54,747 [75] ERROR IIS APPPOOL\test_site Build BuildInternal - An error occured while running dotnet cli

System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified

   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

   at Terrasoft.Core.Compilation.ProjectBuilder.BuildInternal(String projectFilePath, String tempPath, BuildCommandParameters parameters).

 

I have already tried the suggestion in this thread : https://community.creatio.com/questions/buildcompile-error

and still keep getting the same error

Sasori

Like 0

Like

3 comments

Sasori Oshigaki



Can you please share the complete error captured in log file?

Hi Bhoobalan Palanivelu,

The one mentioned is the complete error in the BuildLog file

Regards

Make sure the IIS AppPool user has full write access to CreatioWebroot\Terrasoft.WebApp\Configuration

Ryan

Show all comments

Hi 

Why when I add some attachments to case in mobile app, i didn't see this attachments on local instance on PC? (case is visible but no attachment)

Like 0

Like

1 comments

Hello,

 

This issue can happen if a user works in a mobile application in an online mode while their connection is not stable. 

 

Meanwhile, it would be better for those users who are working from mobile with a bad connection to stay in an offline mode and sync their apps when the connection gets better. 



Please contact our support team - if the issue still reproduces.

Show all comments

Hi Community,



How to convert the following SQL query into ESQ so that it can be used in the Script task Process element. 

 

SELECT TOP 1 SalesOwnerId 

FROM [Lead] 

WHERE SBLBranchLocationId ='060183EE-C2F3-4EDF-853C-59E28026EAD6' 

  AND LeadTypeId='669BC3A8-DFDB-4E53-8AAE-B643C2D6C677' 

  AND SalesOwnerId IS NOT NULL 

GROUP BY SalesOwnerId 

ORDER BY COUNT(SalesOwnerId) ASC

Like 0

Like

1 comments

Hi,

If you specifically need to use ESQ then take a look at this discussion where this topic was discussed.

However, in your case you can use Select class, with it you can easily use expressions like GROUP BY or ORDER BY.

Show all comments

I am getting meaningless Compilation errors , any ideawhat it is about ? 

namespace Terrasoft.Core.Process
{
 
	using System;
	using System.Collections.Generic;
	using System.Collections.ObjectModel;
	using System.Drawing;
	using System.Globalization;
	using System.Text;
	using Terrasoft.Common;
	using Terrasoft.Configuration;
	using Terrasoft.Core;
	using Terrasoft.Core.Configuration;
	using Terrasoft.Core.DB;
	using Terrasoft.Core.Entities;
	using Terrasoft.Core.Process;
	using Terrasoft.Core.Process.Configuration;
	using Terrasoft.UI.WebControls.Utilities;
 
	#region Class: UsrProcess_7b09d28TravelAgencyDev1MethodsWrapper
 
	/// <exclude/>
	public class UsrProcess_7b09d28TravelAgencyDev1MethodsWrapper : ProcessModel
	{
 
		public UsrProcess_7b09d28TravelAgencyDev1MethodsWrapper(Process process)
			: base(process) {
			AddScriptTaskMethod("ScriptTask2Execute", ScriptTask2Execute);
			AddScriptTaskMethod("ScriptTask3Execute", ScriptTask3Execute);
			AddScriptTaskMethod("ScriptTask4Execute", ScriptTask4Execute);
		}
 
		#region Methods: Private
 
		private bool ScriptTask2Execute(ProcessExecutingContext context) {
			string sender="AutoAddVisits";
			string msgbody="something";
			MsgChannelUtilities.PostMessage(UserConnection,sender,msgbody);
			return true;
		}
 
		private bool ScriptTask3Execute(ProcessExecutingContext context) {
			var frequency="frequencyInDays";
			switch (frequency) {
			         case "Daily":
			            Set(frequency, 1);
			                        break;
			                    case "Weekly":
			                        Set("frequency", 7);
			                        break;
			                    case "Monthly":
			                        Set("frequency", 30);
			                        break;
			                    default:
			                       break;
			 }
			return true;
		}
 
		private bool ScriptTask4Execute(ProcessExecutingContext context) {
			var travelOfferId = "TravelId"; 
			var travelOfferSchemaName = "TravelOffers";
			var travelOfferEsq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, travelOfferSchemaName);
			travelOfferEsq.addColumn("TravelOfferFrequency");
			var travelOffer = travelOfferEsq.getEntity(travelOfferId);
 
			var tourSchemaName = "Tours";
			var tourEsq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, tourSchemaName);
			var tourCollection = new Collection();
 
			var currentDate = new Date();
			var firstTour = tourCollection.add(tourEsq.createEntity(UserConnection));
			firstTour.set("TravelOffer", travelOfferId);
			firstTour.set("TourDate", currentDate);
 
			var travelOfferFrequency = travelOffer.get("UsrTravelOfferFrequencyId").displayValue;
			var tourDate = currentDate;
			for (var i = 1; i < 8; i++) {
			    switch (travelOfferFrequency) {
			        case "Daily":
			            tourDate.setDate(tourDate.getDate() + 1);
			            break;
			        case "Weekly":
			            tourDate.setDate(tourDate.getDate() + 7);
			            break;
			        case "Monthly":
			            tourDate.setDate(tourDate.getDate() + 30);
			            break;
			        default:
			            throw new UnknownException("Invalid travel offer frequency");
			    }
			    var tour = tourCollection.add(tourEsq.createEntity(UserConnection));
			    tour.set("TravelOffer", travelOfferId);
			    tour.set("TourDate", tourDate);
			}
 
			tourCollection.saveAll({
			    isExternal: true,
			    success: function() {
			        // The tour entities have been saved
			    },
			    failure: function() {
			        // An error occurred while saving the tour entities
			    }
			});
		}
 
		#endregion
 
	}
 
	#endregion
 
}

 

Like 0

Like

2 comments

Hello,

We need more information to solve your problem, please contact our support team - support@creatio.com

Pavlo Sokil,

I sent you a mail 

Show all comments

Hello Community, 

 

I wanted to perform two actions on click of a button

1. Saves the fields in the tab page 

2. Navigate to next tab 

Right now we are using the crt.SaveRecordRequest. This only saves the page. 

 

Any suggestions is really helpful 

 

Thanks

Gargeyi.G

Like 0

Like

4 comments

Hello,

This article will show you how to navigate to a new page on a Freedom UI page: 

https://customerfx.com/article/navigating-to-a-page-via-code-in-a-creat…

If you want to open an edit page for a record, or an add page, this article outlines how to do that: 

https://customerfx.com/article/opening-an-edit-page-to-add-or-edit-a-re…

Ryan

Also, as far as having the button trigger both - there are two routes you can take. 

Route 1 - If you'd always go to this other page after saving, you could just do that when the save request is triggered. This article shows how to listen for when the page is saved, then you could navigate to the other page from there: https://customerfx.com/article/adding-code-to-the-save-event-of-a-creat…

Route 2 - If you're only wanting to save, then go to this other page, when your own button is clicked, and not for all saves, then you can wire up your own handler for your button. This article shows how to to that: https://customerfx.com/article/adding-a-button-to-execute-custom-code-o… In the handler, you'd save the page, then navigate to the other page. If you go this route (creating a custom request for your button). It would look like this:

{
	request: "cfx.clickMeButtonClicked",
	handler: async (request, next) =&gt; {
		// make sure you've added the "@creatio-devkit/common" as mentioned in the articles			
		const handlerChain = sdk.HandlerChainService.instance;
 
		// first save the record
		await handlerChain.process({
			type: "crt.SaveRecordRequest",
			$context: request.$context
		});
 
		// now navigate to the other page, this navigates to the orders section
		await handlerChain.process({
			type: "crt.OpenPageRequest",
			schemaName: "OrderSectionV2",
			$context: request.$context
		});
 
		return await next?.handle(request);
	}
}

Ryan

Ryan Farley,

Please note that it's best to pass context to each handlerChain.process call. So, in your example, the second call should be:

		// now navigate to the other page, this navigates to the orders section
		await handlerChain.process({
			type: "crt.OpenPageRequest",
			schemaName: "OrderSectionV2",
			$context: request.$context
		});

 

Oleksandr Khardikov,

Thanks for that. I've updated the code in my reply for completeness and also the articles on my website.

Ryan

Show all comments

We are trying to implement the MiContact Center connector for Creatio but are having some issues.

 

We can make outgoing calls (using the phone icon) but the system is not recognising incoming calls.

 

Can someone advise as to what we should see in the UI when making and receiving calls, and also what I need to do within the app to make this function fully?

Like 0

Like

1 comments

Hi Kieron,

 

The connector is compatible with MiContact Center version 9.0. Could you tell us the name of your telephony product and its version?

Show all comments

Hi Community,

 

Any idea how to display the "Details" record in email template. In Template designer there is option to get data from Related Objects. However, there is no way to add records from child table.

 

 

Like 1

Like

1 comments

Hi Fulgen,

This marketplace add-on from SalesUp might fit your needs to add one-to-many data in an Email template: 

https://marketplace.creatio.com/app/salesup-enhanced-template-macros-cr…

Ryan

Show all comments