Hello,

 

Can you advise how I would go about binding my custom excel reports to a package? There is no 'bind data' option on the excel reports section.

 

Thanks

Like 0

Like

1 comments

 

Hi Lewis,

 

I understand that you would like to bind custom reports from Excel reports builder to Creatio.

In that case, you have to bind data from three main objects (see the attached screenshot) using out-of-the-box data binding tools.

To bind columns and filters setup to Excel report, you have to bind data from SysProfileData table where key like 'IntExcelReportFilterDetail' or key like 'IntExcelReportPageIntRelatedSchemasDetail'.

 

 

Show all comments

Hey all, 

 

Does anyone know how long a cookie auth token is valid for, and is it best practice to call and create another one for each call to the API? 

 

Also, is there anyway to request an Auth Token without having to use an email and password? It doesn't seem so safe to share this information with 3rd party systems (in my case, Make.com). 

 

Thanks!

Like 0

Like

1 comments

Hello,

 

The validity of Cookie Auth depends on the user session.

This information can be found in the "User session timeout" system setting.

Show all comments

We have an implementation of saving data in the "History" of Contacts, and we use the HttpWebRequest method like this POST. However, now every time we try to upload a file into the History email it returns this  Error: 'The remote server returned an error: (400) Incorrect Request.'.

private static bool TransferFile(Guid fileRecordId, string columnName, byte[] file) {
            log.Debug("[START] Transfer file");
            try {
                string requestUri = ServerUriUsr + "ActivityFileCollection(guid'" + fileRecordId.ToString() + "')/" + columnName;
                HttpWebRequest request = RequestHelper.BuildRequest(requestUri, HttpMethod.Put);
                request.Accept = "application/octet-stream,application/json;odata=verbose";
                request.ContentType = "multipart/form-data;boundary=+++++";
                // Recording the xml message to the request stream.
                using (Stream requestStream = request.GetRequestStream())
                {
                    requestStream.Write(file, 0, file.Length);
                }
                // Receiving a response from the service regarding the operation implementation result.
                using (WebResponse response = request.GetResponse())
                {
                    if (((HttpWebResponse)response).StatusCode == HttpStatusCode.Created)
                    {
                        // Processing the operation implementation result.
                        response.Close();
                        log.Debug("[END] Transfer file (Successful)");
                        return true;
                    }
                }
            }
            catch (WebException ex) {
                if (ex.Response is null)
                    log.Error($"TransferFile function error: {ex.Message}");
                else
                    log.Error($"TransferFile function error: {new StreamReader(ex.Response.GetResponseStream()).ReadToEnd()}");
                throw;
            }
            catch (Exception ex) {
                log.Error($"TransferFile function error: {ex.Message}");
                throw;
            }
 
            return false;
        }

The problem only occurs when I try to upload a .docx or .xlsx file

Like 0

Like

2 comments

Have you checked failed IIS requests logs and the applicaiton logs for more information on the invalid request? What was the result of the check?

Oleg Drobina,

I ended up doing more tests and the problem only occurs when it is a .docx and .xlsx type file.

When it is PDF or images it works normally without any problems.

Show all comments

Hi All,

 

I Installed the toolkit for map view(https://marketplace.creatio.com/app/toolkit-setup-map-view-creatio ) but when I tried to follow the guide I stuck in second step, I didn't find "BaseModulePageWithMap" in the card schema.

 

I created my section within a new package, also I added the dependencies to my package but I didn't find "BaseModulePageWithMap".

 

Like 0

Like

2 comments
Best reply

Hi!

I have checked this add-on and was unable to reproduce the issue. The steps I took are as follows:

 

1. Install the add-on.

2. Create a package and set dependencies.

3. Create a custom section that includes a page.

4. Open the page source code in the configuration and change the parent object to "BaseModulePageWithMap."





Could you please tell us the steps you took?

Hi!

I have checked this add-on and was unable to reproduce the issue. The steps I took are as follows:

 

1. Install the add-on.

2. Create a package and set dependencies.

3. Create a custom section that includes a page.

4. Open the page source code in the configuration and change the parent object to "BaseModulePageWithMap."





Could you please tell us the steps you took?

Yevhen Vorobiov,

Thanks a lot, it works now

Show all comments

Hello community!

 

I am using the "user dialog" element in some of my processes, and the settings are done as following: "Who performs the task" = Role & "Role" = I am using a formula to get from a "read data" element used previously the owner's branch (opportunity section). My wish is for this user dialog to appear ONLY for the users that are part of the same branch as the owner of the opportunity; but it seems that the element appears for any user, independent of the branch. I am attaching my element's settings below. Another issue is that even after the process is completed, the activity from the upper tab does not disappear, even if it was completed. Why is that? How can I make it work properly?

Thank you!

Like 0

Like

1 comments

Hello,

 

Thank you for your question.

Currently, judging by the provided screenshot, you are referring to an activity that gets created and not the dialog page itself.

 

The created activity follows its section access rights, hence why if you have not set up the Object permissions for Activities, all users of your system will be able to see it.

 

What you could do is set up the said permissions, and then grant the rights for the certain role meanwhile restricting everyone else by using the [Change access rights] process element.

That way  you will be able to restrict other users to see the activity you created with this business process.

 

Hope it helps!

Show all comments



hello!

Is there a document (PDF, URL) that describes the detailed specifications of SaaS?

For example, I'm looking for a document with the following description!



・ Basic configuration of SaaS license purchase (number of virtual cores, memory capacity, database storage capacity, outbound traffic limit, inbound traffic limit, etc., development, verification, existence of DB for each production environment, etc.)

・Is it possible to change the configuration of the SaaS server (addition of servers, DB integration, etc.)

・Addition of front-end server

・Addition of development environment

・Addition of verification server

・Add production environment

・Increase the CPU and memory of the front-end server

・Additional CPU and memory for development environment

・Additional CPU and memory for verification server

・Additional CPU and memory for the production environment

- Third-party products cannot be installed in the CreatioSaaS environment.

・Is it possible to directly connect to the Database Server?

・Is it possible to create Tables and Views on the Database Server?

・The timezone of all servers on PaaS is fixed to "UTC" and cannot be changed.

・Can you use the “Multiple Database Catalogs and Schemas” function?

Is it possible to use the Zones function that can specify the front-end server that operates for each application?

・You cannot use the authentication function by client certificate.

・Is it possible to consider Japan time for backup cycle and recovery operation?

・At the time of a major version upgrade of the product, will the customer environment be forced to undergo a major version upgrade by a certain period of time?

・The version upgrade schedule will be handled after adjusting the schedule in advance with the customer, but can you specify the postponement of the version upgrade beyond a certain period?

・Is it possible to access the DC and FE server by remote desktop?

・How to connect to CreatioSaaS if the customer has a separate contract with AWS

・Whether it is possible to take a backup of the DB in a DB that exists in a physically different location (for natural disaster countermeasure purposes)

 

Like 1

Like

1 comments

Hello,

 

Please note that having questions of this kind it is better to contact us at info@creatio.com to receive the needed information.

Show all comments

Why is this not working? I am genuinely confuse.



Setting visibility using ESQ is not working. Am I missing something?

 

define("OpportunitySectionV2", ["ConfigurationConstants"], function(ConfigurationConstants) {
	return {
		entitySchemaName: "Opportunity",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: {
			"isSysAdmin": {
				dataValueType: Terrasoft.DataValueType.BOOLEAN,
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				value: false
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "DataGridActiveRowDeleteAction",
				"values": {
					"visible": {
						"bindTo": "isSysAdmin"
					}
				}
			}
		]/**SCHEMA_DIFF*/,
		methods: {
			onGridDataLoaded: function() {
				this.callParent(arguments);
				this.getUserRights();
			},
			getUserRights: function() {
				var scope = this;
				var currentUser = Terrasoft.SysValue.CURRENT_USER.value;
				var sysAdmins = ConfigurationConstants.SysAdminUnit.Id.SysAdministrators;
				var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "SysUserInRole" });
				esq.addColumn("SysRole");
				esq.addColumn("SysUser");
				esq.filters.add("SysUser", Terrasoft.createColumnFilterWithParameter(
					Terrasoft.ComparisonType.EQUAL, "SysUser", currentUser));
				esq.filters.add("SysRole", Terrasoft.createColumnFilterWithParameter(
					Terrasoft.ComparisonType.EQUAL, "SysRole", sysAdmins));
				esq.getEntityCollection(function(response) {
					if (response && response.success) {
						var result = response.collection;
						var isSysAdmin = (result.collection.length !== 0);
						debugger;
						scope.set("isSysAdmin", isSysAdmin);
					}
				}, this);
			},
		}
	};
});

Thank you.

Solem A.

Like 1

Like

5 comments
Best reply

Solem Khan Abdusalam,

It's been a bit since I last tried this, but I've tried binding visible (and caption) of buttons in ActiveRowActions and they never seem to work. 

I do this instead: Check and store in the attribute if the user has the needed role. Then, in the method that adds the delete action, do something like this: 

getDeleteRecordMenuItem: function() {
    if (this.get("isSysAdmin")) {
        return this.callParent(arguments);
    }
}

This way, the delete button is never added since when the method is called, it only calls the parent if the user has the role. 

Note, you have to pre-fetch the user's role earlier, before the getDeleteRecordMenuItem is called. Since the ESQ is asynchronous you can't call it in within that method.

Ryan

hi Solem Khan Abdusalam,

 

Please call the getUserRights() method inside init : function() as below

init: function() {
    this.callParent(arguments);
    this.getUserRights();
},

Also, Object permission can be used to achieve the functionality (though the button is visible the operation to add, delete can't be performed).

 

 

BR,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,



Yes I disabled the role to delete but I need the button to disappear.

Will it work in init? It's ESQ. I tried doing this.set() in without the ESQ and it is not working. Is attribute binding not working anymore?



I am trying to remove the delete button in ListView at Section.

 

//

 

I tried removing methods just to test if attributes works, and it didn't

		attributes: {
			"isSysAdmin": {
				dataValueType: Terrasoft.DataValueType.BOOLEAN,
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				value: true
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "DataGridActiveRowDeleteAction",
				"values": {
					"visible": {
						"bindTo": "isSysAdmin"
					}
				}
			}
		]/**SCHEMA_DIFF*/,

 

Solem Khan Abdusalam,

It's been a bit since I last tried this, but I've tried binding visible (and caption) of buttons in ActiveRowActions and they never seem to work. 

I do this instead: Check and store in the attribute if the user has the needed role. Then, in the method that adds the delete action, do something like this: 

getDeleteRecordMenuItem: function() {
    if (this.get("isSysAdmin")) {
        return this.callParent(arguments);
    }
}

This way, the delete button is never added since when the method is called, it only calls the parent if the user has the role. 

Note, you have to pre-fetch the user's role earlier, before the getDeleteRecordMenuItem is called. Since the ESQ is asynchronous you can't call it in within that method.

Ryan

Ryan Farley,



Would this work on Section?

For a section you can override checkCanDelete to return a boolean indicating if the user can delete or not.  Sadly it won't remove the delete button, will instead just give them a message that they can't delete (which is how it works out of the box).

Ryan

Show all comments

Hi All, 

 

I've created a lookup, when I Click "New" I can Add a value to it.

 

My question is: How to add only unique values to the lookup and prevent user from entering repeated value. 

 

Thank You.

Like 0

Like

2 comments

Hi Anas Iyad Ahmad Ibrahim,



For all the records that get inserted into the Creatio table (Objects: section, details, or Lookup) the inserted record is distinguished by the "Id" (GUID Type) column which is a unique identifier for the record.



If an additional column has to be considered into account before inserting a record, then a custom implementation has to be made to validate the additional field value.



Please click, view and select display columns and add Id, and Name. Then Id field will be displayed with a unique value for each record.





BR,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,

Thanks a lot

Show all comments

Hi All,

 

I want to add a record to my lookup but not from lookup page, I want to add it from my section Page, How Can I Do That?

Like 1

Like

1 comments

Hello community,

 

We have an advanced dynamic folder created in a custom section. 

If a user wants to see this folder, he needs to click "Filters/Folders" >"View Folders"> and choose the dynamic folder.



Is it possible to add a custom button that will apply the dynamic folder filter when it is clicked? Basically, we want to apply the dynamic folder filter in 1 click instead of 3

Like 0

Like

4 comments
Best reply

Hello,

 

You need to call the showFolderTree method in the click event of your button:

...
{
                "operation": "insert",
                "parentName": "ActionButtonsContainer",
                "propertyName": "items",
                "name": "ShowFoldersButton",
                "values": {
                    "itemType": Terrasoft.ViewItemType.BUTTON,
                    "caption": { bindTo: "Resources.Strings.ShowFoldersButtonCaption" },
                    "click": { bindTo: "showFolderTree" },
                    "layout": {

As a result clicking on the button will simulate the same click event on the "Show folder" button.

hi Shivani Lakshman,



Yes, it is possible.



This is the table that stores the filter conditions "CustomSectionName" + "Folder". On the button click event, the dynamically created folder name has to be sent to this table and the section grid has to be loaded accordingly.



Instead of re-doing the task that has been implemented via OOTB "FilterModule", it is suggested to utilize the No-Code tools in this case, considering X number of dynamic folders. If it is for one folder, then please utilize the ESQ (for the customsectionFolder table).



In another way, a default filter can be set to a section. So when a section is loaded, it applies the filter and loads the records.





BR,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,

 

Thank you for the response. I do not want a default filter applied or add additional filters by using getFilters methos. I want the following on the UI when a button is clicked.



Is there a reference to get the below on the UI?

Hello,

 

You need to call the showFolderTree method in the click event of your button:

...
{
                "operation": "insert",
                "parentName": "ActionButtonsContainer",
                "propertyName": "items",
                "name": "ShowFoldersButton",
                "values": {
                    "itemType": Terrasoft.ViewItemType.BUTTON,
                    "caption": { bindTo: "Resources.Strings.ShowFoldersButtonCaption" },
                    "click": { bindTo: "showFolderTree" },
                    "layout": {

As a result clicking on the button will simulate the same click event on the "Show folder" button.

Oleg Drobina,

 

Thanks Oleg, You are a life saver!

Show all comments