Specific filtering of lookup field (Specific filtering of lookup field (Existings))
Congratulations.
I have a task of filtering the reference field (Platform) by specific parameters in the page code.
Contact-Account-Licenses-Product-Platform.
In the SQL query, it looks like this:
select "Id", "Name" from "UsrPlatformList" as "platforms" where exists (select * from "Product" as "product" where ("platforms"."Id") = ("product"."UsrPlatformId") and exists (select * from "UsrLicenceClient" as "license" where ("product"."Id") = ("license"."UsrProductLicId") and "license"."UsrAccountId" = '601cef3f-aa30-4fc0-b681-18d3e748ec65' ) )
I'm trying to follow this instruction, but I can't.
I will be grateful for your help.
Like
Ryan Farley,
I am sincerely grateful to you. With your help, other answers in the community and articles from the Academy, I learned and managed to write this complex filter. Thank you. The code currently looks like this:
attributes: { "UsrPlatform": { "dataValueType": Terrasoft.DataValueType.LOOKUP, "lookupListConfig": { "filter": function() { var platformFilter = this.Ext.create("Terrasoft.FilterGroup"); var accountId = this.get("Account").value; var licenceFilter = Terrasoft.createExistsFilter( "[UsrLicenceClient:UsrProductLic].Id"); licenceFilter.subFilters.addItem( Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "UsrAccount", accountId)); var productFilter = Terrasoft.createExistsFilter( "[Product:UsrPlatform].Id", licenceFilter); platformFilter.addItem(productFilter); return platformFilter; } } } }
I hope it helps someone and saves a lot of time.
You can create an exists filter by using something like the following. This example would get accounts where an activity exists with a particular owner.
// create the sub filter for the condition inside the exists var subFilters = Terrasoft.createFilterGroup(); subFilters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Owner", "a6b4ea0c-420c-45ab-81e7-6e76c8cc15f7")); // now create the exists filter and pass the sub filter conditions to it // note, this second param of subFilters is optional if all you want is the exists without sub conditions var existsFilter = Terrasoft.createExistsFilter("[Activity:Account].Id", subFilters); esq.filters.addItem(existsFilter);
That is the equivalent to the following:
Ryan
Ryan Farley,
I am sincerely grateful to you. With your help, other answers in the community and articles from the Academy, I learned and managed to write this complex filter. Thank you. The code currently looks like this:
attributes: { "UsrPlatform": { "dataValueType": Terrasoft.DataValueType.LOOKUP, "lookupListConfig": { "filter": function() { var platformFilter = this.Ext.create("Terrasoft.FilterGroup"); var accountId = this.get("Account").value; var licenceFilter = Terrasoft.createExistsFilter( "[UsrLicenceClient:UsrProductLic].Id"); licenceFilter.subFilters.addItem( Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "UsrAccount", accountId)); var productFilter = Terrasoft.createExistsFilter( "[Product:UsrPlatform].Id", licenceFilter); platformFilter.addItem(productFilter); return platformFilter; } } } }
I hope it helps someone and saves a lot of time.