Фильтр детали по полю с булево типом

Добрый день!

 

Нужно отифильтровать деталь по колонке Купили (UsrPayed). Как это можно сделать. Быстрые фильтры не подойдут, т.к сбрасываются после обновления страницы

 

Изображение удалено.

Нравится

4 комментария

отфильтровать во время загрузки (т.е. всегда отобрать только "да"?) или нужен какой-то переключатель?

 

В любом случае нужно смотреть в сторону 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 в которую зашли

Показать все комментарии