Hi community,

 

As an OOTB feature of Creatio, when using the "simple" filter on a lookup, a maximum number of 15 entries are displayed.

How is it possible, via some coding (or at least I doubt it will be with code), to unlock this maximum number of entries when filtering ?

 

Is there a way to dynamically display all the entries of a lookup or is it only possible to display it with a constant value ?

 

Many thanks for the help provided.

 

Best regards,

Jonathan

 

Like 0

Like

2 comments

Hello Jonathan,

 

There is a restriction in the system on the number of fields displayed in the quick filter for this field (15 records). 



If you want to choose all possible variants of the lookup you can use an advanced filter that doesn't have restrictions on the number of records (you will see a pop-up window with all options to choose from). The number of records displayed by the quick filter can be changed only via development and there is no possibility to change this amount with the help of out-of-the-box tools of the instance (there is no appropriate system setting or lookup value to change).



We already have a query registered for our responsible R&D team to consider implementing this functionality in future versions of the Creatio application. I will assign your case to this project in order to increase its priority.

 

Best regards,

Anastasiia

Hi Jonathan

 

I haven't testing this but this should work:

 

This setting should be added to the section page schema in the init method. Here is an example for the ContactSectionV2 replacing schema:

 

define("ContactSectionV2", [], function() {

    return {

        entitySchemaName: "Contact",

        methods: {

            init: function () {

Terrasoft.SysSettings.lookupRowCount = 60;

this.callParent(arguments);

            }

        }

    };

});

 

Refreshing / reloading the page will set this setting back to the default value, so that's why we need to put this in the init method. When the page will load again, lookupRowCount will be set to the desired value again.

 

Jeremy

Show all comments

Hello,

 

I have set up default filters on a section by following these links:



https://customerfx.com/article/programmatically-overriding-or-adding-fi…

https://community.creatio.com/questions/default-filter-section

 

Is there a way to filter records with folders in addition to the default filter made in getFilters?

 

Here is my getFilters method:

			getFilters: function() {
                var filters = this.callParent(arguments);
				filters.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;
				filters.add("FilterByAM", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.EQUAL,
					"MQAccountManager.Id",
					Terrasoft.SysValue.CURRENT_USER_CONTACT.value
				));
				if (this.get("CanAssignAccountManager")) {
					filters.add("FilterByManager", this.Terrasoft.createColumnFilterWithParameter(
						this.Terrasoft.ComparisonType.EQUAL,
						"MQManager.Id",
						Terrasoft.SysValue.CURRENT_USER_CONTACT.value
					));
				}
            	return filters;
            }

Kind regards,

 

Julien

Like 0

Like

2 comments
Best reply

Hi Julien,

Yes, the filter from folders will get appended to the filters you set for the section. You just need to add your filters in a filter group so they are properly applied as a whole, in addition to the folder filters - rather than just add the filters individually to the filters returned from callParent. For example:

getFilters: function() {
    var filters = this.callParent(arguments);
 
    // now create a filter group for your filters
    var customFilters = Ext.create("Terrasoft.FilterGroup");
    customFilters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
    customFilters.add("ActiveFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.EQUAL, "Active", true
        )
    );
    customFilters.add("NoWidgetFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.NOT_EQUAL, "Type.Name", "Widget"
        )
    );
 
    // now add your filter group to the filters that get returned
    filters.add(customFilters);
    return filters;
}

It does work without a filter group if you're just adding a single condition, however, in your code you're "OR"ing all your new conditions together with the folder conditions. Using a separate group keeps it all grouped with the same conditions and will work as expected.

Ryan

Hi Julien,

Yes, the filter from folders will get appended to the filters you set for the section. You just need to add your filters in a filter group so they are properly applied as a whole, in addition to the folder filters - rather than just add the filters individually to the filters returned from callParent. For example:

getFilters: function() {
    var filters = this.callParent(arguments);
 
    // now create a filter group for your filters
    var customFilters = Ext.create("Terrasoft.FilterGroup");
    customFilters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
    customFilters.add("ActiveFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.EQUAL, "Active", true
        )
    );
    customFilters.add("NoWidgetFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.NOT_EQUAL, "Type.Name", "Widget"
        )
    );
 
    // now add your filter group to the filters that get returned
    filters.add(customFilters);
    return filters;
}

It does work without a filter group if you're just adding a single condition, however, in your code you're "OR"ing all your new conditions together with the folder conditions. Using a separate group keeps it all grouped with the same conditions and will work as expected.

Ryan

Thank you Ryan !

Show all comments

Hello Community,

I need the filter options of a customer portal page within regular sections. I need to hide the advanced filter menu from the section filtering menu.

Do you have any idea of how to do so?

 

Thank you in advance, have a nice day! 

Like 0

Like

2 comments
Best reply

Hello,

 

In the replaced BaseSectionV2 module you need to:

 

1) define the GetExtendedFilterConfig PTP message with the subscribe direction:

"GetExtendedFilterConfig": {
					mode: this.Terrasoft.MessageMode.PTP,
					direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
				}

2)  subscribe to the message:

subscribeSandboxEvents: function () {
					this.callParent(arguments);
					const quickFilterModuleId = this.getQuickFilterModuleId();
					this.sandbox.subscribe("GetExtendedFilterConfig", this.onGetCustomFilterConfig,
						this, [quickFilterModuleId]);
				},

3) in the onGetCustomFilterConfig method handler disable the advanced filtering:

onGetCustomFilterConfig: function() {
				return {
						hasExtendedMode: false
					};
			}

An example of the code used in the portal can be found in the BaseDataView module.

 

Best regards,

Oscar

Hello,

 

In the replaced BaseSectionV2 module you need to:

 

1) define the GetExtendedFilterConfig PTP message with the subscribe direction:

"GetExtendedFilterConfig": {
					mode: this.Terrasoft.MessageMode.PTP,
					direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
				}

2)  subscribe to the message:

subscribeSandboxEvents: function () {
					this.callParent(arguments);
					const quickFilterModuleId = this.getQuickFilterModuleId();
					this.sandbox.subscribe("GetExtendedFilterConfig", this.onGetCustomFilterConfig,
						this, [quickFilterModuleId]);
				},

3) in the onGetCustomFilterConfig method handler disable the advanced filtering:

onGetCustomFilterConfig: function() {
				return {
						hasExtendedMode: false
					};
			}

An example of the code used in the portal can be found in the BaseDataView module.

 

Best regards,

Oscar

Thank you Oleg Drobina!

Show all comments

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

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

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

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

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



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

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