Question

Hello. In my case, I need to add the ability to upload to excel from pivot tables. As far as I understand, this is a possible corrective version of the "PivotTableViewConfig" module, but as far as I know, modules cannot be loaded into their own package.

Like 0

Like

3 comments

Hello Roman,



You can export pivot table data to Excel from the dashboard only in Freedom UI.



Please find more information here.

Bogdan,

Hello, 

I want to further ask on this. In freedom UI, Nor form edit pages neither list pages edit pages, there is no 'list' type component. Components in these edit pages are:

spline, bar, line, doughnut, area, column, scatter --> ( those are 'chart' types),

Pipeline

Metric

Gauge.

There is NO 'LIST' type component in new UI page/form/list edit Pages. 

Again, how can We 'create' list type dashboard element in new UI? And beside system being in new UI or old UI, How can we export pivot table? 

 

Ismet Sinan Ekici, 

Hello,

Sorry for the misunderstanding, but pivot tables are not currently available in Freedom UI.  You can use pivot tables only in the Classic UI, but unfortunately, there is no way to export them yet.

 

To answer your second question, to create a list element in the dashboard of the Freedom design, you can use a regular list element: 

 

 

Best Regards, 

Halyna 

Show all comments

Hello

Does anyone have any successful experience with authenticating to an external web service that only uses Token-based authentication?

I found a similar post, how the solution was proposed to be passed in the heder of the Authorization request: 

Authorization: Bearer .

Unfortunately, this method did not work. Please help me solve the problem

Like 0

Like

4 comments

Hello Olga,

 

Could you please clarify this question?

What difficulties arise?

Hello, Anastasia.

Now in the CRM - system only two methods of authentication are available - the basic and Auth 2.0, when setting up a web - service 

Only Token - based authentication is available for the web-service that we are trying to integrate with.

How can I configure Token - based authentication?

 

Hi,

I will try to describe the problem in more detail

In the documentation of the web service, in addition to Token-based authentication, there is a description of the authentication method based on OAuth 1.0a

Here is a successful request to Postman

 

When I tried to send the same request from Creatio (I copied the parameters from Postman), I get an error

 



 

Hello Olga,

 

Please review this video material, as it may assist you in implementing your task:

https://www.youtube.com/live/mHaGY1DxETw?feature=share&t=292

https://www.youtube.com/live/ehjfcBxpLsQ?feature=share&t=247

Show all comments

Hi,

Is it possible to use system date in advanced filter somehow? Small example of what I try to achieve:

Like 0

Like

4 comments

Dear Taras,



Could you please specify exactly what information you expect to receive from the system Data filter, we do not fully understand the needs of your request.



Best regards,

Pavlo.

I expect to see just current date there. The main goal is to make filter display 0 records whenever it is used on Sundays

Taras,

 

It won't be possible to add a condition like in your screenshot. Are we interested in a specific filter all in any filter in the section (for example disable displaying data in some section on Sunday)? If so we can restrict loading data to grid on Sundays using:

loadGridData: function() {
					var currentDate = new Date();
					var currentDayNumber = currentDate.getDay();
					var restrictDataLoading = currentDayNumber == 0;
					if (restrictDataLoading) {
						return;
					}
					this.callParent(arguments);
				}

This should be added to the section schema (like ContactSectionV2). If we are interested in a specific filter in the context of loadGridData we can read current filters using this.getFilters().getItems() and in case a needed filter is found - use additional current day check and restrict grid data loading. 

Thanks! This should work for me, I will try

Show all comments

The list of lookups suddenly disappeared from the Object permissions page !

I tried to compile and restart the service but got the same result 

 

Like 0

Like

3 comments

Dear Moheman, 



Unfortunately, it's hard to say what have caused this behavior on the website. 

Please contact our support team via an email support@creatio.com and provide us with more details on what actions were made on the website prior to that so we could check it. 



Kind regards,

Roman

Show all comments

Devlabs refer us to the Community for support for their Excel reports builder for Creatio app, hence my post.

 

Is it possible to retrieve an excel spreadsheet in a business process (to be emailed as an attachment)?  I have tried a web service approach (see here and here), I am able to authenticate with the `AuthService.svc` service, but get an authentication error when trying to access the `GetExportFiltersKey` endpoint.

 

Creatio trial, 7.18 configuration.

 

Thanks,

Like 0

Like

4 comments

The code I'm using to access the web service (based on this) is as follows, the cookie is definitely retrieved (though I'm not 100% sure what the `_appUrl` should be):

string _output = "";
string _userName = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
string _userPassword = "XXXXXXXXXXXX";
string _authServiceUrl = "https://XXXXXX-crm-bundle.creatio.com/ServiceModel/AuthService.svc/Login";
string _authServiceUrl2 = "https://XXXXXX-crm-bundle.creatio.com/0/rest/IntExcelReportService/GetExportFiltersKey";
string _appUrl = "https://XXXXXX-crm-bundle.creatio.com/";
var _authCookie = new CookieContainer();
 
TryLogin();
TryForKey();
Set<string>("ProcessSchemarequestResult", _output);
 
// Sends a request to the authentication service and processes the response.
void TryLogin() {
    var authData = @"{
        ""UserName"":""" + _userName + @""",
        ""UserPassword"":""" + _userPassword + @"""
    }";
    var request = CreateRequest(_authServiceUrl, authData);
    //_authCookie = new CookieContainer();
    request.CookieContainer = _authCookie;
    // Upon successful authentication, we save authentication cookies for
    // further use in requests to Creatio. In case of failure
    // authentication application console displays a message about the reason
    // of the mistake.
    using (var response = (HttpWebResponse)request.GetResponse())
    {
        if (response.StatusCode == HttpStatusCode.OK)
        {
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                var responseMessage = reader.ReadToEnd();
                //Console.WriteLine(responseMessage);
                _output = _output + responseMessage + "\n\n";
                if (responseMessage.Contains("\"Code\":1"))
                {
                    throw new UnauthorizedAccessException($"Unauthorized {_userName} for {_appUrl}");
                }
            }
            string authName = ".ASPXAUTH";
            string authCookeValue = response.Cookies[authName].Value;
            _authCookie.Add(new Uri(_appUrl), new Cookie(authName, authCookeValue));
        }
        else
        {
        	_output = _output + response.StatusDescription + "\n\n";
        }
    }
}
 
void TryForKey() {
	string esqStr = "{\"rootSchemaName\":\"Contact\",\"operationType\":0,\"includeProcessExecutionData\":true,\"filters\":{\"items\":{\"a99615bf-66bc-4ad4-b6da-e2d8949e090b\":{\"filterType\":1,\"comparisonType\":3,\"isEnabled\":true,\"trimDateTimeParameterToDate\":false,\"leftExpression\":{\"expressionType\":0,\"columnPath\":\"Id\"},\"rightExpression\":{\"expressionType\":2,\"parameter\":{\"dataValueType\":1,\"value\":\"98dae6f4-70ae-4f4b-9db5-e4fcb659ef19\"}}}},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6},\"columns\":{\"items\":{\"Full name\":{\"caption\":\"Full name\",\"orderDirection\":0,\"orderPosition\":-1,\"isVisible\":true,\"expression\":{\"expressionType\":0,\"columnPath\":\"Name\"}}}},\"isDistinct\":false,\"rowCount\":-1,\"rowsOffset\":-1,\"isPageable\":false,\"allColumns\":false,\"useLocalization\":true,\"useRecordDeactivation\":false,\"serverESQCacheParameters\":{\"cacheLevel\":0,\"cacheGroup\":\"\",\"cacheItemName\":\"\"},\"queryOptimize\":false,\"useMetrics\":false,\"adminUnitRoleSources\":0,\"querySource\":0,\"ignoreDisplayValues\":false,\"isHierarchical\":false}";
	string callData = "EsqString : " + esqStr + ", RecordCollection : [\"98dae6f4-70ae-4f4b-9db5-e4fcb659ef19\"], ReportId : \"ebf37bad-134c-423e-af16-aa0897522de6\"";
    var request = CreateRequest(_authServiceUrl2, callData);
    request.CookieContainer = _authCookie;
    using (var response = (HttpWebResponse)request.GetResponse())
    {
        if (response.StatusCode == HttpStatusCode.OK)
        {
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                var responseMessage = reader.ReadToEnd();
                //Console.WriteLine(responseMessage);
                _output = _output + responseMessage + "\n\n";
                if (responseMessage.Contains("\"Code\":1"))
                {
                    throw new UnauthorizedAccessException($"Unauthorized {_userName} for {_appUrl}");
                }
            }
        }
        else
        {
        	_output = _output + response.StatusDescription + "\n\n";
        }
    }
}
 
// Create request to the authentication service.
HttpWebRequest CreateRequest(string url, string requestData = null)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.ContentType = "application/json";
            request.Method = "POST";
            request.KeepAlive = true;
            if (!string.IsNullOrEmpty(requestData))
            {
                using (var requestStream = request.GetRequestStream())
                {
                    using (var writer = new StreamWriter(requestStream))
                    {
                        writer.Write(requestData);
                    }
                }
            }
            return request;
        }
 
return true;

 

The error that results:

System.Net.WebException: The remote server returned an error: (401) Unauthorized.
   at System.Net.HttpWebRequest.GetResponse()
   at Terrasoft.Core.Process.UsrProcess_3608a7dMethodsWrapper.<ScriptTask1Execute>g__TryForKey|1_1(<>c__DisplayClass1_0& )
   at Terrasoft.Core.Process.UsrProcess_3608a7dMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessScriptTask.InternalExecute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.ExecuteItem(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

 

Gareth Osler,

I was able to implement this in the end, if anyone happens this way and would like to know the solution by all means DM me.

Gareth Osler,

hello Gareth i want to do the same to export a forecast in business process can you please share with me the solution 

Show all comments

Like 0

Like

1 comments

Hello,

 

Could you please elaborate a bit on your business task as it's not quite clear what should be done?

 

Thank you in advance!

Best regards,

Anastasiia

Show all comments

Hi,

 

Is there a way to add Date Macros in Bulk Email Template? Suppose a bulk email was sent on Monday and the second email is sent two days later(Wednesday), I need to add the day on which previous email was sent(Monday) to the email body of the one sent on Wednesday. The second email should read, "I left you a voicemail on Monday...." and the day should be populated dynamically by going back 2 days from today. Any way to add javascript inside the HTML code for the block?

Any help is appreciated!

Like 0

Like

1 comments

Hello!



We have Product field in 'Product in order' detail and we can add Product.Type, Product.Category and other columns in the detail for employee users.

But is no option to add them in the detail for Portal users. It is incorrect way to add such fields and synchronise them (cause there can be a lot of them) to the detail.



How can we display such linked fields in details for Portal users?

Thank you!

Like 0

Like

4 comments

Hello Vladimir,

 

Thank you for your question. There is an intentional limitation for portal users not to be able to display linked objects. That is one of the core differences between the system and portal user.

 

Best Regards,

Dan

So, all characteristics of object (e.g. Product type, Product category, Product code, Product link and so on) should be added additionaly as physical fields to all objects like Product in Order, Product in Invoice, Opportunity product, Product in Contract and so on?

I believe that might be one of the ways to display the needed value. You just need to avoid using linked objects for the portal. 

Can anyone suggest other ways as well to choose the best one?

Show all comments

Hi Community,

 

I want to hide the "System Designer" option from the hamburger menu on the left panel (highlighted in yellow). Any lead will be appreciated. 

 

 

Regards,

Sourav

Like 0

Like

6 comments

Hello,

 

It's not possible to hide the System Designer option with basic system tools.

 

Still, you may simply limit the access rights for this role or not grant any administrative rights or access for this role, this way even though the user sees the System Designer they won't able to apply any changes to it or open the corresponding System Designer sections.



More detailed information about access rights and system operation permissions can be found in corresponding articles on our Academy. 

 

Bogdan,

 

Is there any schema I can refer if I want to hide it using development tools?

 

Regards,

Sourav

Sourav Kumar Samal,

An easy cheat way to get rid of it is to hide it with CSS

.menu li#system-designer-menu-item {
    display: none;
}

Ryan

Sourav Kumar Samal,

 

there is also another approach:

 

1) Create a module in configurations called UsrLeftPanelTopMenuModule with the following code:

define("UsrLeftPanelTopMenuModule", ["UsrLeftPanelTopMenuModuleResources","LeftPanelTopMenuModule"],
    function(resources) {
        Ext.define("Terrasoft.configuration.UsrLeftPanelTopMenuModuleViewModel", {
            alternateClassName: "Terrasoft.UsrLeftPanelTopMenuModuleViewModel",
            override: "Terrasoft.LeftPanelTopMenuModuleViewModel",
 
			loadItemsMainMenu: function() {
				var mainMenuItems = this.get("MainMenuItems");
				mainMenuItems.removeByKey("system-designer-menu-item");
				this.set("MainMenuItems", mainMenuItems);
				this.callParent(arguments);
			}
        });
    }
);

2) Add the UsrLeftPanelTopMenuModule module as a dependency for BootstrapModulesV2 module:

define("BootstrapModulesV2", ["UsrLeftPanelTopMenuModule"], function() {
	return {};
});

3) Refresh the page and check the result:

Best regards,

Oleg

Ryan Farley,

Where to add this CSS ?

Bhoobalan Palanivelu,

For CSS that I want globally available in the application I use MainHeaderSchema.

Oleg's solution is great too, however does require overriding the BootstrapModulesV2 which can cause issues if there are other things that are needed to be loaded there from ootb modules. The CSS approach is a bit "hacky" but gets the job done easily.

Ryan

Show all comments

Hello team,

 

I have a multiselect lookup and a requirement where already selected records must be checked. I have used config.selectedValues to mark already selected records. 

 

Unfortunately, the application takes a lot of time (from 6 to 15 seconds) before the already selected records are marked on the UI. Hence the users are selecting records again and creating duplicates. There are other validation issues around this as well.

 

Is there a way to stop user from selecting further records till all existing records are marked checked? Please have a look at the video.

 

The use case in short, is to ensure that the checked records are marked and only then the user is allowed to choose further records.

Like 1

Like

1 comments

Hello,

Unfortunately, I didn't know a way to disable the checkbox on the lookup window and don't even know if that option is possible, however, in your case you can try a different approach. 

You can add a filter to an openLookup config that won't shop any records and disable it when you are using your config.selectedValues option.

Show all comments