Добрый день!
Нужно отифильтровать деталь по колонке Купили (UsrPayed). Как это можно сделать. Быстрые фильтры не подойдут, т.к сбрасываются после обновления страницы
Нравится
отфильтровать во время загрузки (т.е. всегда отобрать только "да"?) или нужен какой-то переключатель?
В любом случае нужно смотреть в сторону filterMethod, на странице где инициализируется деталь.
Пример кода
"ContactCareerDetailV20234b804": { "schemaName": "ContactCareerDetailV2", "entitySchemaName": "ContactCareer", "filter": { "detailColumn": "Account", "masterColumn": "Id" }, "filterMethod": "actualContactFilter" } типа того, а в actualContactFilter писать esq actualContactFilter: function() { var AccountId = this.get("Id"); var filterGroup = new this.Terrasoft.createFilterGroup(); filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND; filterGroup.add("AccountFilter", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "Account", AccountId)); filterGroup.add("LogicalFilter", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "UsrLogical", true)); return filterGroup; },
Если переключателем, то там уже кода сильно больше, надо делать messages, возможно еще сохранение этого переключателя в кэше пользователя.
В схеме детали добавляется CheckBox и прописываете на него обработку (у нас пример на актуальность статуса, вы можете сделать по своей логике:
attributes: { "ActualOnly": { dataValueType: Terrasoft.DataValueType.BOOLEAN, type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, value: true } }, diff: /**SCHEMA_DIFF*/[ { "operation": "insert", "name": "ActualOnly", "parentName": "Detail", "propertyName": "tools", "values": { "bindTo": "ActualOnly", "labelConfig": { "caption": { "bindTo": "Resources.Strings.ActualOnlyCheckboxCaption" } }, "visible": { "bindTo": "getActualOnlyFilterVisible" }, "controlConfig": { "className": "Terrasoft.CheckBoxEdit", "checkedchanged": { "bindTo": "changeActualOnlyFilter" }, "checked": { "bindTo": "ActualOnly" } }, "classes": { "labelClass": ["checkbox-caption"] }, } } ]/**SCHEMA_DIFF*/, changeActualOnlyFilter: function(checked) { this.set("ActualOnly", checked); this.reloadGridData(); }, getFilters: function() { var filters = this.callParent(arguments); var filterKey = "ActualOnlyFilter"; var ActualOnly = this.get("ActualOnly"); if (ActualOnly && !filters.contains(filterKey)) { filters.add(filterKey, this.Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "UsrStatus.UsrActual", true)); } else if (filters.contains(filterKey)) { filters.removeByKey(filterKey); } return filters; }, getActualOnlyFilterVisible: function() { return this.getFiltersVisible(); }, getFiltersVisible: function() { return !this.get("IsDetailCollapsed"); }
Здравствуйте!
Вы можете посмотреть как похожий фильтр реализован в базовой версии системы. Примеров реализации будет фильтр на детали "Хронология". Блок фильтров этой детали сделан в TimelineFiltersSchema.
Также в ряде подобных статей есть примеры и подсказки:
https://community.terrasoft.ua/questions/kak-dobavit-filtr-v-detali
https://community.terrasoft.ru/articles/primery-filtrov-v-detali
https://community.terrasoft.ru/questions/bystrye-filtry-po-dannym-detal…
https://community.creatio.com/questions/quick-filters-detail
https://community.creatio.com/questions/prefilter-detail-grid-page-load
https://community.creatio.com/questions/how-add-quick-filters-detail
Трефилов Павел Сергеевич,
Спасибо! Но при добавлении фильтра по id обьекат Account, деталь не отображается на странице.
filterGroup.add("AccountFilter", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "Account", AccountId));
Если убрать строку, деталь отображается и фильтруется. Но не по тому обьекту Account в которую зашли