Hello,

I have a requirement to add Aspose.pdf Connector in Creatio. I have installed it and is visible in Application Hub, can anyone provide a document/ step of how to use the Aspose.pdf Connector in the Creatio for my Custom Package.

I have a requirement to show some fields with data in PDF form using a Preview button.

 

 

Like 0

Like

4 comments
Best reply

Hello Smit, 

 

We would appreciate it if you can provide more details on your business requirements. Your described behavior can also be implemented via the business process, which will be triggered by a button click and will return an autogenerated page with values of the fields that you can forward to your printable

 

Best Regards, 

Hello Smit, 

 

We would appreciate it if you can provide more details on your business requirements. Your described behavior can also be implemented via the business process, which will be triggered by a button click and will return an autogenerated page with values of the fields that you can forward to your printable

 

Best Regards, 

Hello Ihor,

 

Thanks for the idea of using Printable Report.

After creating printable report, after clicking on print button in the section it displays a Dialog box which is saying "Please fill in the system setting for converting to PDF" can you please help us on which system settings need to be filled?

 

Regards,

Smit Suthar

 

Hello Smit, 

 

Can you please clarify if the settings mentioned in the Installation tab under "Guides and manuals" were filled in? - https://marketplace.creatio.com/app/asposepdf-connector-creatio

 

Best Regards, 

Ihor

 Hey Ihor,

Thanks now everything is working fine. 

Show all 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

Hello community,

 

    How can i change the color of a "Finish deadline" (Code:"UsrDueDate") column on some condition in section list page. As mentioned in the below picture.

 

 

I am able to change the color of entired row.

I reffered to this link "https://academy.creatio.com/documents/technic-sdk/7-13/how-highlight-re…" to change the color of entire row but i need only a particular column.

 

Thanks in advance.

Regards,

Manideep



 

Like 0

Like

1 comments
Best reply

Hello Manideep,

 

item.columns.ColumnName (ColumnName should be replaced with the needed column) object has no "customStyle" property so it won't be possible using the approach from the article you've shared.t

 

Additionally the issue is that we could theoretically try using custom CSS, but the issue here is that the grid columns have autogenerated IDs so it will be a complex task to get the element needed in the document to set a custom style. Please use the the approach with marking the whole grid record with some color instead.

Hello Manideep,

 

item.columns.ColumnName (ColumnName should be replaced with the needed column) object has no "customStyle" property so it won't be possible using the approach from the article you've shared.t

 

Additionally the issue is that we could theoretically try using custom CSS, but the issue here is that the grid columns have autogenerated IDs so it will be a complex task to get the element needed in the document to set a custom style. Please use the the approach with marking the whole grid record with some color instead.

Show all comments

Hello community,

 

We tried to update an existing package and we are facing the error System.ArgumentException: Application with name "" already exists.



How do we overcome this error?

Like 0

Like

1 comments

Hello,

 

The reason could be that the 'IsChanged' attribute of the scheme in the needed package is set to 'true' when it should be 'false'.

Show all comments

I'm using DataService's web service to create new records in a simple custom object (via {{BaseUri}}/0/DataService/json/SyncReply/InsertQuery). 

This object/section has a lookup to Contact, and so far in the body of the request I have been sending each Contact Id like this:

"ContactLkp": {
  "expressionType": 2,
  "parameter": {
    "dataValueType": 10,
    "value": "6530f9b7-2ca2-48a6-b529-fbfd456aa704"
  }
}

However, for this to work, it is a prerequisite to previously having searched each contact's Id vía SelectQuery.

 

My question is, could it be possible to insert the contact by using a subQuery? It seems like it should according to this documentation (by using an expressionType of value 3), but I have been unable to create a successful subQuery/subFilter. 

What I would like to do is something like this:

"ContactLkp": {
  "expressionType": 3,
  "subQuery": {
     // Use a select query by using a parameter like the name 
     // or the email of the contact
 
  }
}

With this I would be able to insert the record with only 1 request (insert) instead of 2 (select/search and then insert).

 

TL;DR, is it possible to include subqueries as parameters in DataService's InsertQuery?

Like 0

Like

2 comments
Best reply

Hello,

If I understand you correctly, you are trying to do something like this "INSERT INTO Contact (OwnerId) VALUES ((SELECT Id FROM Contact WHERE Name = 'Test1'))", select inside of the insert.

Unfortunately, currently, it is impossible to do so and you need to use two requests, first Select and second Insert as you did before.

Parameter SubQuety isn't designed for this situation and you write select requests inside of it.

{
                "ActivitiesCount",
                new SelectQueryColumn ()
                {
                    Expression = new ColumnExpression ()
                    {
                        // Expression - subquery.
                        ExpressionType = EntitySchemaQueryExpressionType.SubQuery,
                        // Path to the column relative to the root schema.
                        ColumnPath = "[Activity: Contact] .Id",
                        // Function type - aggregating.
                        FunctionType = FunctionType.Aggregation,
                        // Aggregation type - number.
                        AggregationType = AggregationType.Count
                    }
                }
            }

 

We already created a problem for our developers so that you can achieve your task using only one request, thank you for helping us improve the system.

 

Hello,

If I understand you correctly, you are trying to do something like this "INSERT INTO Contact (OwnerId) VALUES ((SELECT Id FROM Contact WHERE Name = 'Test1'))", select inside of the insert.

Unfortunately, currently, it is impossible to do so and you need to use two requests, first Select and second Insert as you did before.

Parameter SubQuety isn't designed for this situation and you write select requests inside of it.

{
                "ActivitiesCount",
                new SelectQueryColumn ()
                {
                    Expression = new ColumnExpression ()
                    {
                        // Expression - subquery.
                        ExpressionType = EntitySchemaQueryExpressionType.SubQuery,
                        // Path to the column relative to the root schema.
                        ColumnPath = "[Activity: Contact] .Id",
                        // Function type - aggregating.
                        FunctionType = FunctionType.Aggregation,
                        // Aggregation type - number.
                        AggregationType = AggregationType.Count
                    }
                }
            }

 

We already created a problem for our developers so that you can achieve your task using only one request, thank you for helping us improve the system.

 

Thank you for your kind reply. I will continue to do as suggested. 

Show all comments

Hello community,

 

I have been reading a lot of threads to understand if we can stream files into file detail using postman.

 

According to 

https://community.creatio.com/questions/attachments-and-notes-using-dat…

Odata will not be a viable option



According to 

https://community.creatio.com/questions/fileapiservice-error

FileAPIService cannot be used to pass binary content via postman.



Are we right in understanding that to stream files via API, we need to create a custom service?



Thanks in advance!

Like 0

Like

5 comments

Hi,

You can use FileApiService/UploadFile.

You can find examples in this discussion.

Dmytro Vovchenko,

what is the 

FileApiService?

noyzada,

 

You can find information here.

Bogdan,

Hi,

I'm using the 8.06 version / application section and now all the files save to the SysFile table,

I manage to post a file with postman but I can't connect it to the right record where the details of the files are 

you know how can i do it with the new version? with sysfile table

Show all comments

Hello, please help.

There are 2 objects, in both access rights on records are configured. In the 1st object there is a field "lookup of the 2nd object", it is necessary that - if a record from the 2nd object is selected in the record of the 1st object, then users from the second object are added to the record of the 1st object?

Like 0

Like

3 comments

Hello colleagues,

Yes, it's necessary to provide the user with access rights to both objects.

Otherwise, this column may be empty for the user.

Best regards, Alex. 

Aleksei Efimenko,

THank you for your answer, but I think we didn't get each other.

For instance , we have object 1- opportunity, and object 2 - product,  the product has relationship with opportunuty - 1:N, so there is a lookup field in opportunity for product.

The question is:

Can I configure user rights as when User 1 has access righs to particular product, it will has acess rights to opportunity also.

So if I have Opp_1 and related with him product_1 in that opportunity. If User 1 has access rights to product 1, I need him to have acess rights to its opporunity.

Gevorgyan Tigran,

Unfortunately, no, the user won't have rights to opportunities where certain products are assigned.

Best regards, Alex. 

Show all comments

Hello, I am currently trying to create a combobox of the contacts associated with a certain account. When a contact is selected, then that contact will be made the primary contact.

 

Everything works fine, but when the edit page first launches the combobox does not display the primary contact and appears as it does below.

How would I get the combobox to display the primary contact on initialization like below.

Here is my replacing client schema:

define("AccountPageV2", [],function() {
    return {
        entitySchemaName: "Account",
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        attributes: {
            "myEnum": {
                "dataValueType": Terrasoft.DataValueType.ENUM,
                "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                "caption": "Primary Contact:"
            },
            "myList": {
                "dataValueType": Terrasoft.DataValueType.ENUM,
                "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                "isCollection": true
            }
        },
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "name": "myEnum",
                "values": {
                    "caption": "myEnum",
                    "dataValueType": this.Terrasoft.DataValueType.ENUM,
                    "bindTo": "myEnum",
                    "layout": { "colSpan": 24, "rowSpan": 1, "column": 0, "row": 4 },
                    "controlConfig": {
                        "className": "Terrasoft.ComboBoxEdit",
                        "list": {
                            "bindTo": "myList"
                        },
                        "change": {
                            "bindTo": "onMyValueChange"
                        },
                        "prepareList": {
                            "bindTo": "prepareMyList"
                        }
                    }
                },
                "parentName": "SolutionTab_gridLayout",
                "propertyName": "items",
                "index": 1
            }
        ]/**SCHEMA_DIFF*/,
        methods: {
            onPageInitialized: function(callback, scope) {
                if (!this.get("myList")) {
                    this.set("myList", this.Ext.create("Terrasoft.Collection"));
                }
 
                if (callback) {
                    callback.call(scope || this);
                }
            },
            onEntityInitialized: function() {
                this.callParent(arguments);
            },
            prepareMyList: function(filter, list) {
				if (list === null) {
                    return;
                }
                list.clear();
				// create query for server side
				var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
					rootSchemaName: "Contact"
				});
				esq.addColumn("Name", "Name");
				esq.addColumn("Id", "Id");
				esq.addColumn("Account.Id","Account");
				esq.addColumn("Job.Name","Job");
				// run query
				var filterAccountType = esq.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL, "Account", this.get("Id"));
				esq.filters.addItem(filterAccountType);
				esq.getEntityCollection(function(result) {
					//perform
					if (!result.success) {
						/* For example, error processing/logging. */
						this.showInformationDialog("Data query error");
						return;
					}
					var count = 0;
					var items = {};
					result.collection.each(function (item) {
						items[item.get("Id")] = {
							"value": item.get("Id"),
							"displayValue": item.get("Name")+ "  :  " + item.get("Job")
						};
					});
					var list = this.get("myList");
					list.loadAll(items);
				}, this);
            },
            onMyValueChange: function(val) {
                if (val) {
                    console.log("New Primary Contact Added");
					this.set('PrimaryContact',val);
                }
            }
        },
        rules: {}
    };
});

 

Like 0

Like

4 comments
Best reply

Dominic Ricci,

Since the Comboxbox is bound to the myEnum attribute, you should be able to set the default as something like this: 

this.set("myEnum", { 
    value: "DefaultIdValue", 
    displayValue: "DefaultTextValue" 
});

Ryan

Hi,

Hard to tell the problem based on the code alone. In this case, you need to do a debug to find the cause.

Maybe this example may help you, the task of setting a default value is quite similar to your case.

Dmytro Vovchenko,

In the example you link there is the line of code



this.set("Deadline", newDate);

 

How would I do this for the combobox? Maybe something like this...

 

value = this.get("Primary Contact");

this.set("myEnum", value);



The issue is that I do not know how to access the initialized value in the combobox. Is the assumption of setting myEnum correct? 

Dominic Ricci,

Since the Comboxbox is bound to the myEnum attribute, you should be able to set the default as something like this: 

this.set("myEnum", { 
    value: "DefaultIdValue", 
    displayValue: "DefaultTextValue" 
});

Ryan

Ryan Farley,

This is what I was looking for. Thank you!

Show all comments

Hi,

I want to set up access right to a folder on the project section but it is not showing me this option. When I click the setting Icon I only have Set up filter, Rename, Move Copy, Delete.

When I try in other sections like order and account I do have the Set up access right.

Like 0

Like

4 comments

You have to turn on Access rights by records in ProjectFolder object



Permissions on entries in the ProjectFolder object are enabled, but permissions settings are not. I guess I didn’t formulate the question very correctly, the permission settings for dynamic groups (folders) are not displayed

Gevorgyan Tigran,

Hi Gevorgyan,

the same thing happens with Event section

If you re-login to creation everything works finr

Show all comments

Hi all, 



I'm just starting to get to grips with making API calls to Creatio and stuck trying to POST a new record, where a column is a lookup. 



I understand that I can post using the Guid to the lookup using column name "UsrLookupNameId". However, if I don't have the Id but only a value in one of the Lookups column, is that possible? 

 

For example, I have the lookup UsrNationality, but I only have the value "Germany" and not the ID. Or, must I first make a GET request to get the ID? 

 

Here is current code: 

 

{

"UsrName": "Test Name",

"UsrNationality": "Germany"

}

 

Any help much appreciated :)

Like 0

Like

2 comments

Hi Harry,

You would have to first do a GET to the lookup object to get the record where the Name = "The name", then do the POST separately using the Id value for the lookup column. So two separate calls, one to GET the lookup and a second to POST the new record.

Typically when I have code working with Creatio's API's I retrieve the needed lookups into a local cache to avoid repeatedly doing GETs to the lookups.

Ryan

Thanks Ryan, that's what I thought. I used the "GET

$filter parameter (eq operator)" option in the end. 



I'm integrating using Make.com, so little harder to leave everything in local cache. Have got it working well now though. 

 

Thanks again for the reply.

Show all comments