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

Hi,

Is there a way to add advanced filter mode to lookup record in lookup section?

Right now there is only "Add filter" option on Filters/folders. I need to add "Switch to advanced mode" to lookup record to add more modes to filter. 

 

Like 1

Like

1 comments

At the moment, it is not possible to configure advanced filters in Lookups records.

We have recorded your request and this issue will be considered in as much detail as possible with the prospect of implementation in future versions of the application.

As a workaround, the advanced filter can be configured by the "list" dashboard by selecting the directory object, and in the display parameters select the advanced filter.

Thank you for your appeal and for helping to make our product better!

Show all comments

7.18.5 in-site

Set up integration with ZAPIER - 1.03.

Periodically, ZAPIER gives an error when transferring data:

Could not parse JSON from /0/DataService/json/SyncReply/RuntimeEntitySchemaRequest

hide details

http://joxi.ru/Vm6B4jWt04GMkm

This is all the information that displays by mistake ZAPIER

the error occurs when transferring not all but only some records

 

Can someone explain what this error is?

Like 0

Like

4 comments

Hi Alexey!



Please tell us more about the issue.

Which steps did you take to transfer data?

Did any common errors occur?

Did the issue occur on a particular step?

Hi Oleksander,

Here is all the information by mistake http://joxi.ru/L21EGgYFV0GbK2

Here is the action itself - create a contact and fill in three fields "Email", "Name", "Account"

http://joxi.ru/DmBBZKktP4d3Bm

http://joxi.ru/8Ankb1yT0y16pr

http://joxi.ru/12M95y0cXkqRv2

http://joxi.ru/n2Y9Xp4cVeGE42

the error is not permanent. When that day or two appears, contacts are not created, and then they are created again, and even when you restart those that have not been completed, they are successfully completed

 

Вот вся информация по ошибке http://joxi.ru/L21EGgYFV0GbK2

Вот само действие - создать контакт и заполнить три поля "Емейл", "ФИО", "Аккаунт" 

http://joxi.ru/DmBBZKktP4d3Bm

http://joxi.ru/8Ankb1yT0y16pr

http://joxi.ru/12M95y0cXkqRv2

http://joxi.ru/n2Y9Xp4cVeGE42

ошибка не постоянная. Когда появляется то день или два не создаеются контакти, а потом снова создаются и даже когда повторно запускаеш те что не віполнились они успешно выполняются

?

Hi Alexey,

I have forwarded your feedback to the developers in charge. They're working on the further steps now.

We recommend using the "Run business process" event. In that case, Creatio's internal logic will handle creating a record rather than DataService.

Show all comments

Hi,

 

I would like to add a hyperlink (titled "Details" below) in edit page of a record. When clicking the hyperlink it should redirect to another page in a new tab.

Right now clicking "Details" the page opens in new tab. My issue is that along with the required page, a new tab opens at https://{sitename}/0/Nui/ViewModule.aspx as well. Thus 2 new tabs are opened when I click on the link now.

Below is what I have (Today's agenda is not a detail; it's a control group):

Below is my code:

methods:{

onDashboardDetailsButtonClick:function(){

                let url = ;

                window.open(url, '_blank');

            }

},

diff: /**SCHEMA_DIFF*/[

            {

                "operation": "insert",

                "name": "DashboardDetails",

                "values": {

                    "layout": {

                        "colSpan": 7,

                        "rowSpan": 1,

                        "column": 7,

                        "row": 2,

                    },

                    "itemType":Terrasoft.ViewItemType.HYPERLINK,

                    "enabled": true,

                    "caption":"Details",

                    "click": {"bindTo": "onDashboardDetailsButtonClick"},

                },

                "propertyName": "items",

                "index": 2

            }

]

Can you please tell me what I'm doing wrong and how to resolve this?

Like 0

Like

4 comments
Best reply

Hello Nirupama,

 

Terrasoft.ViewItemType.HYPERLINK item type also has an addtional property "href" and if it's not filled in by default it's automatically filled in with the base application url (https://somesite.creatio.com). You can also see it when hovering the mouse to the link or copy the link adddress from this element. As a result when you click on the item your custom URL is opened and additionally the default URL of the website.

 

If it's possible you should try setting your custom URL to the "href" property like:

getCustomURL: function() {
				return "https://www.wikipedia.org/";
			}
...
{
                "operation": "insert",
                "name": "DashboardDetails",
                "values": {
                    "layout": {
                        "colSpan": 7,
                        "rowSpan": 1,
                        "column": 7,
                        "row": 2,
                    },
                    "itemType":Terrasoft.ViewItemType.HYPERLINK,
                    "enabled": true,
                    "caption":"Details",
					"href": {"bindTo": "getCustomURL"}
                },
                "propertyName": "items",
 
                "index": 2
            },

 

Hello Nirupama,

 

Terrasoft.ViewItemType.HYPERLINK item type also has an addtional property "href" and if it's not filled in by default it's automatically filled in with the base application url (https://somesite.creatio.com). You can also see it when hovering the mouse to the link or copy the link adddress from this element. As a result when you click on the item your custom URL is opened and additionally the default URL of the website.

 

If it's possible you should try setting your custom URL to the "href" property like:

getCustomURL: function() {
				return "https://www.wikipedia.org/";
			}
...
{
                "operation": "insert",
                "name": "DashboardDetails",
                "values": {
                    "layout": {
                        "colSpan": 7,
                        "rowSpan": 1,
                        "column": 7,
                        "row": 2,
                    },
                    "itemType":Terrasoft.ViewItemType.HYPERLINK,
                    "enabled": true,
                    "caption":"Details",
					"href": {"bindTo": "getCustomURL"}
                },
                "propertyName": "items",
 
                "index": 2
            },

 

Thanks, Oscar! That works!

 

As a follow up, is there a way to make the integer value in the above screenshot a hyperlink, so that instead of providing a separate link like "Details", they can on the value and that redirects them to the details page?

Nirupama Mohan Latha,

 

As for the integer field - I am not sure, but you can try converting it into a string column and add the logic as was described here.

Thank you!

Show all comments