Filtering
Filters
detail
display
7.18

Hello community,

I am trying to apply a default filter to a detail from the client side. The filter works fine using a function declared in the filterMethod property of the detail. The problem with this approach is that the filter that I applied is not visible.

The task implementation must have the following display.

Is there a way to show the filter that I applied from the client side (js) like the example above.

Thank you!

Like 0

Like

1 comments

Hello,

 

Thanks for reaching out.

 

We double-checked your request and found that such functionality cannot be implemented neither by basic nor by development tools.

 

Best regards,

Anastasiia 

Show all comments
fixedfilter
Filtering
detail
7.18

Hello community,

 

I have a detail DocListInFinApp in Application Page and I want to add a fixed filter to the detail based on application current stage. Is there a way to add a fixed filter to the detail to only show specific documents.

 

I have implemented the following code to test the functionality

methods: {
			onEntityInitialized: function() {
 
				this.callParent(arguments);
                this.initFixedFiltersConfig();
			},
			// Initializes the fixed filters.
            initFixedFiltersConfig: function() {
                // Creating a Configuration Object.
                var fixedFilterConfig = {
                    // The schema of the section object is specified as an object schema for fixed filters. 
                    entitySchema: "DocListInFinApp",
                    // Array of filters.
                    filters: [
                        // Owner filter.
                        {
                            // The name of the filter.
                            name: "StageFilter",
                            // Filter header.
                            caption: "StageFilter",
                            // Filter the data from the [Owner] column.
                            columnName: "DocumentListStage",
                            // Current user contact is specified as default value.
                            // Value is received from the system setting.
                            defValue:"69CF135A-9D15-4500-A0D1-E553A7BD5620",
                            // The data type – lookup.
                            dataValueType: this.Terrasoft.DataValueType.LOOKUP,
                            // Filter.
                            filter: BaseFiltersGenerateModule.StageFilter
                        }
                    ]
                };
                // A link to the configurational object is assigned to the [FixedFilterConfig] column.
                this.set("FixedFilterConfig", fixedFilterConfig);
            }
		}

 

Like 0

Like

2 comments

Hello User1997,

 

There is no way to add the fixed filter in the detail using FixedFilterConfig, but you can add additional filtration to the detail records using the following example:

//details object
"Schema386de87bDetailfb4e174c": {
				"schemaName": "Schema386de87bDetail",
				"entitySchemaName": "Document",
				"filter": {
					"detailColumn": "UsrCase",
					"masterColumn": "Id"
				},
				"filterMethod": "CaseStatusFilter"
			}
...
//methods object
CaseStatusFilter: function() {
						var filterGroup = new this.Terrasoft.createFilterGroup();
						filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
						filterGroup.add("ByCaseStatusFilter", this.Terrasoft.createColumnFilterWithParameter(
							this.Terrasoft.ComparisonType.EQUAL, "UsrAvailableCaseStatus", this.get("Status"))
						);
						return filterGroup;
					},

Such a filtration is used for example to list only email activities in the "Email" detail in the contact or account page. The logic is simple: add additional filtration to the already present detail filter. In the case above:

 

1) There was a lookup column added to the Documents object. The lookup column relates to Cases object.

2) There was another lookup column added to the Documents object. The lookup column relates to CaseStatus object.

3) The detail is created on the CasePage to list those documents that are connected to the case (Case column of the Document object is the same as the current case record opened. The detail object is also Document)

 4) Add additional filtration in the "filterMethod": "CaseStatusFilter" part to return only those documents that have the same value in the "UsrAvailableCaseStatus" lookup column (from step 2) as the current case status.

 

Hope this will fit your business logic.

 

Best regards,

Oscar

Oscar Dylan,

Thanks Oscar, 

The problem with this solution is that the filter must be visible to the user. Is there any way we can make the applied filter visible?

Show all comments
Filtering
Client-side
lookup
7.18

Hello Community,

I am trying to create a lookup filter in client side based on the values of a detail. The case is as follows: I want to display within the application only the contacts which are in the detail UsrApplicationAssignedTo where the application id must be equal to the id of the current application.

 

After adding the following code to my page I get 0 records.

 

attributes: {
	"UsrAssignedTo": {
		// Attribute data type.
		"dataValueType": Terrasoft.DataValueType.LOOKUP,
		// The configuration object of the LOOKUP type.
		"lookupListConfig": {
			// Array of filters used for the query that forms the lookup field data.
			"filters": [
				function() {
					var filterGroup = Ext.create("Terrasoft.FilterGroup");
					filterGroup.add("Contact",
						Terrasoft.createColumnIsNotNullFilter("[UsrApplicationAssignedTo:UsrContact].UsrContact.Id"));
					debugger;
					filterGroup.add("AppFilters",
						Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL,
						"[UsrApplicationAssignedTo:UsrApplication].Id",
						this.get("Id")));
					return filterGroup;
				}
			]
		}
	}
}

 

Like 0

Like

1 comments
Best reply

Hello User 1997,

 

Similar filter example was already provided here with the only difference in the section name (there it was the Projects section, here it's Applications section).

 

Best regards,

Oscar

Hello User 1997,

 

Similar filter example was already provided here with the only difference in the section name (there it was the Projects section, here it's Applications section).

 

Best regards,

Oscar

Show all comments
email campaigns
Owner
Filtering
Marketing_Creatio
7.18

Is there a way to send a notification email to contact owners when specific contacts are participating in any of the campaign step? For example, I want to send a notification to owner when a mail sent to a contact is opened. I am trying to stick with only campaign section and campaign flow edit, using campaign elements. 

Like 0

Like

1 comments

Dear Ismet, 

 

using the campaing elements this would be not possible, you would need to use a business process for this. You can create a signal that will be triggered by the condition that you desire. After that you can create in the business process an email that will be automatically sent to the contact owner.                                                                                                                                                        Business process designer article: https://academy.creatio.com/docs/user/bpm_tools/business_process_setup/…

Signals article: 

https://academy.creatio.com/docs/user/bpm_tools/process_elements_refere…

Business process event:

https://academy.creatio.com/docs/user/bpm_tools/business_process_setup/…

 

Thank you for contacting us.

Show all comments
Filtering
Filters
lookupListConfig
look up filters

Hi Team,

 I have been using a lookup field and implementing a filter via LookupListConfig.



Here I have an issue in filtering the values.



Step 1: If the logged-in used belongs to the System Administrator role, the filter for the lookup is working fine and it shows the records.

 

Step 2: If the same user is removed from the System Administrator role, the filter is not working and it does not shows any records.

Here is the utilization of lookupListConfig

"UsrApplyName": {
		                "dataValueType": Terrasoft.DataValueType.LOOKUP,
		                "lookupListConfig": {
		                	columns: [ "Id" ],
		                    "filters": [
		                        function() {
		                            var filterGroup = Ext.create("Terrasoft.FilterGroup");
									var CurContactAccount = Terrasoft.SysValue.CURRENT_USER_ACCOUNT.value;
		                          		filterGroup.add("IsActive",
		                                Terrasoft.createColumnFilterWithParameter(
		                                    Terrasoft.ComparisonType.EQUAL,
		                                    "UsrRecepientCompany",
		                                    CurContactAccount));
		                          		return filterGroup;
		                        }
		                    ]
		                }
					},

 

 

Kindly help me with the above hindrance and let me know what causes the difference and how to overcome it.





Regards,

Bhoobalan P.

 

 

 

 

 

 

Like 0

Like

1 comments

Hi Bhoobalan,

 

Please see this community post regarding the same question about ESQ and access rights - https://community.creatio.com/questions/access-issue-esq.

 

Best regards,

Oscar

Show all comments
lookup
Filtering
Filters
look up filters
section
7.17



Dear community,

 

When opening the Owner lookup on the contact page, the list is filtered by employees.

https://prnt.sc/111e40e

when we filter the contact page based on the owner lookup, the list is not filtered. Is this normal? What is the logic behind this, because we are unable to choose any of the non-employees contacts in the owner lookup.

How do we force this to only showing the employees?

https://prnt.sc/111e4qy

 

 

Kind regards,

Yosef

Like 0

Like

1 comments

Dear Yosef,

 

Thank you for your question!

 

It seems that the filter that you have applied is not fully set up.

Please refer to this screenshot as an example on how you can filter all Contacts by the Owner field:

 

In case you would need a separate look-up created for your purposes, we would recommend visiting this Academy Article:

https://academy.creatio.com/docs/user/setup_and_administration/system_s…

 

In addition, you may find some useful information about advanced filtering here:

https://academy.creatio.com/docs/user/platform_basics/business_data/fil…

 

Hope this was useful for you!

 

Thank you!

 

Regards,

Danyil 

Show all comments
Access Rights
Filtering
7.16

Hello community,

 

We are trying to restrict access of some Creatio users to specific IPs. We are doing this using the 'Range of allowed IP addresses' detail inside 'Access rules' in System users. We however cannot get this to work either on an on-premises installation or on a Creatio cloud installation.

 

Pls find below a screenshot showing that a user is able to login into the App outside of the permitted range of IPs. Are there special settings to be enabled/set to get this to work?? Does the server need to be restarted or Redis cache cleared or any additional step? What are we doing wrong? 

 

Thanks in advance

 

Like 0

Like

2 comments
Best reply

Hello!

It is also necessary to update the useIPRestriction parameter to true value in web.config. If you are uisng cloud instance - please approach our support team to update the value.

Apart from that, it is necessary to add the user or the role, that you want to restrict the IP access for, to the operation permission Ignore access check by IP address with NO access level.

 

Regards,

Dean

Hello!

It is also necessary to update the useIPRestriction parameter to true value in web.config. If you are uisng cloud instance - please approach our support team to update the value.

Apart from that, it is necessary to add the user or the role, that you want to restrict the IP access for, to the operation permission Ignore access check by IP address with NO access level.

 

Regards,

Dean

Dean Parrett,

Thank you Dean. It was the Web.Config setting. This was not available anywhere in the Academy/Community

Show all comments
Filtering
contacts
Email
Sales_Creatio_enterprise_edition
7.17

In the Contacts section, I need to filter all the contacts that ever got emails Titled "Thanks" (NOT bulk emails, just simple emails). These emails are displayed here:

I tried any available lookup, yet no success. Which object should be used?

Like 0

Like

6 comments

Maybe like this. But I'm not sure.

https://prnt.sc/z38p5x

That's Participant instead of Owner.

Dear Yuriy, 



The option proposed by Julius above should work for the described purpose. 

Please use Email Participants object to get list of contacts which were in the needed bulk email's audience.



Kind regards,

Roman

Julius,

Thank you! I specified the question: NOT bulk emails, but simple emails

Dear Yuriy, 



In this case you need to build filter like this:



Kind regards,

Roman

Roman Brown,

Roman, that doesn't work for me! That gives only a few contacts. For instance, Darren is not among them. I suspect the contacts don't have activities, just emails. What table stores the emails?

Yuriy Konstantinov,

Activities and emails are stored in the same object, but just in case try to remove type=email filter and check if it helps. 

 

Best regards,

Angela

Show all comments

Hello community,

 

There are numerous use cases where Creatio filters for some data before showing on the UI. Few examples below - 

  1. Writing ESQ from JavaScript where we filter an object for only select records by adding filter groups. 
  2. User applying of a filter in a section list page or a detail. 
  3. When we add a detail to a Section record page, we map a column from the detail to a column in a section record. This is how Creatio filters for only the detail records belonging to that section record and displays the records subsequently. 

Few questions below which will help us explain Creatio better with our customers- 

  1. At which layer does Creatio execute these filters? Is it at the Application layer or at the Database layer? It is unlikely that it is at the App layer. Can you confirm that these happen at the DB layer and only the filtered records are fetched to the App layer and subsequently passed back to the UI?
  2. I am guessing that the Creatio ORM would aggregate all of the filters and frame a query which filters for the required data and then execute this at the DB layer? Excuse the over-simplification. Can you confirm and share a few more details on how this done? This would give us insight into the Product architecture and help us understand the product better.

If these insights are already available in the Documentation, Request you to share the link. Thanks in advance!

Like 1

Like

5 comments

Hello,

Yes, all filter conditions are added as conditions for queries and are performed at the database layer. You can see this if you install Creatio locally and run SQL profiler. You'll notice as an ESQ gets executed that ultimately this is translated to a SQL query with the filter conditions in the where clause.

Additionally, as a related side topic to mention to your original question which might be of interest, you can also create SQL views in the database containing aggregates/joins/unions/ranks/partions/etc and create an entity/object for that view. These objects can then be used normally in section lists, details, dashboards, reports/printables, and even read via OData/DataService APIs etc. This is a fantastic way to create what would be a complex or time consuming query and make the results readily available in the client.

Hope this helps with your question.

Ryan

Hello Shrikanth,

 

We can confirm that filtering conditions are configured as conditions for queries and they are being performed on the DB layer, but not the application layer.

 

We will ask the responsible team to add more information relateable to this kind of topic to the Academy. At the same time, please check the articles included in this section, they should be useful for further development operations:

https://academy.creatio.com/docs/developer/back-end_development

 

Thank you Ryan for your help!

 

Best regards,

Roman

Ryan Farley,

Thank you Ryan. Yes, I was aware of the views and similarly noticed usage of Stored procedures in the community. This prompted my question. 

Roman Rak,

Thank you Roman for the answer.

Ryan Farley,

 

If I can quote:

you can also create SQL views in the database containing aggregates/joins/unions/ranks/partions/etc and create an entity/object for that view

If I were to create a SQL view, how would I create an entity/object of the view?  Thanks,

 

[Edit]

I think I have the answer here Creating View Type Object in Creatio | Community Creatio

Show all comments
Filtering
Filters
filter
detail
Custom Details
products

Dear community,

 

We added a detail to our product page where we can add options.

These options are products as well so whenever we press on the "+" we get a popup with a muliselect where we can choose all the options:

https://prnt.sc/xtcr11

 

The problem here is that we can see all the options with different Categories.

How can we filter so it only shows the category that is the same as the product above it?

 

thank you!

 

 

Kind regards,

Yosef

Like 0

Like

3 comments

Hello Yosef,

You can add additional filters to the lookup for the detail by overriding the getAllLookupFilters method from the LookupMultiAddMixin, I have an article on how to do that here: https://customerfx.com/article/adding-additional-filters-to-a-detail-ad…

Ryan

As far as getting the product category from the parent record, I'm not sure that it would work to pass values to the detail (as outlined here https://customerfx.com/article/passing-values-from-a-page-to-a-new-reco…) for the case where the detail is using the LookupMultiAddMixin. Your best bet is to use the sandbox to request the current category value from the page.

Ryan

Ryan Farley,

Please help me to build filter for a few parametrs

So, it`s something wrong:

 

 

        getAllLookupFilters: function() {

                

                var filter = new this.Terrasoft.createFilterGroup();
                filter.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
                filter.add(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"ResponsibleDepartment" , this.get("Dept")));
                filter.add(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"Stage.End" , false));
                filterGroup.addItem(filter);
                
                return this.mixins.LookupMultiAddMixin.getAllLookupFilters.apply(this, arguments);

                
            
            },
 

 

 

Thank you

 

Show all comments