Добавить фильтр в реестр раздела

Добрый день!

Как сделать фильтр в разделе заказы, который будет фильтровать по контрагенту. Фильтр как поле с не всплывающим окном. Типа как если нажали на обычный фильтр и выбрали поле контрагент для фильтрации и в этом поле вводим текст оно в выпадающем списке предлагает варианты

При открытии карточки, чтобы не исчезал фильтр в поле, после закрытия карточки.

П.С. не такой как по ответственному, где надо нажать на него, нажать выбрать из списка  и в новом окне поискать его. Надо просто поле в которое сразу можно печатать текст названия контрагента

Нравится

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

Мы подобным образом делали поиск лидов в LeadSectionV2 по многим полям

 

		attributes: {
			"UseSearchFilter": {
				dataValueType: Terrasoft.DataValueType.BOOLEAN,
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				value: false
			},
			"SearchFilter": {
				dataValueType: Terrasoft.DataValueType.TEXT,
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
			}
		},
			initQueryFilters: function(esq) {
				this.callParent(arguments);
				var useSearchFilter = this.get("UseSearchFilter");
				var searchFilter = this.get("SearchFilter");
				if (!useSearchFilter || !searchFilter) {
					esq.filters.removeByKey("FilterContactCommunication");
				}
				else {
					var filterGroup = new Terrasoft.createFilterGroup();
					filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.OR;
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].Contact", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].Account", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].BusinesPhone", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].MobilePhone", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].Email", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].Website", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].QualifiedAccount.Name", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[Lead:Id:Id].QualifiedContact.Name", searchFilter));
						filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[ContactCommunication:Contact:QualifiedContact].SearchNumber", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[ContactCommunication:Contact:QualifiedContact].Number", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[AccountCommunication:Account:QualifiedAccount].SearchNumber", searchFilter));
					filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.CONTAIN, "[AccountCommunication:Account:QualifiedAccount].Number", searchFilter));
					esq.filters.add("FilterCommunication", filterGroup);
				}
			},
			searchFilter: function() {
				this.reloadGridData();
			},
			enableSearchFilter: function() {
				this.set("UseSearchFilter", true);
			},
			disableSearchFilter: function() {
				this.set("UseSearchFilter", false);
				this.reloadGridData();
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "FilterSearchContainer",
				"parentName": "FiltersContainer",
				"propertyName": "items",
				"index": 0,
				"values": {
					"id": "FilterSearchContainer",
					"selectors": { wrapEl: "#FilterSearchContainer" },
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"wrapClass": ["quick-filter-module-container-wrapClass", "custom-filter-container"],
					"items": []
				}
			},
			{
				"operation": "insert",
				"parentName": "FilterSearchContainer",
				"propertyName": "items",
				"name": "EnableSearchFilter",
				"values": {
					"itemType": Terrasoft.ViewItemType.BUTTON,
					"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
					"click": {"bindTo": "enableSearchFilter"},
					"caption": "Search"
				}
			},
			{
				"operation": "insert",
				"parentName": "FilterSearchContainer",
				"propertyName": "items",
				"name": "SearchFilter",
				"values": {
					"bindTo": "SearchFilter",
					"visible": {"bindTo": "UseSearchFilter"},
					"labelConfig": {
						"visible": false
					},
					"controlConfig": {
						"className": "Terrasoft.TextEdit"
					},
					"textSize": "Small"
				}
			},
			{
				"operation": "insert",
				"parentName": "FilterSearchContainer",
				"propertyName": "items",
				"name": "UseSearchFilter",
				"values": {
					"itemType": Terrasoft.ViewItemType.BUTTON,
					"style": Terrasoft.controls.ButtonEnums.style.BLUE,
					"click": {"bindTo": "searchFilter"},
					"visible": {"bindTo": "UseSearchFilter"},
					"markerValue": "applyButton",
					"imageConfig": {"bindTo": "Resources.Images.ApplyButtonImageNew"}
				}
			},
			{
				"operation": "insert",
				"parentName": "FilterSearchContainer",
				"propertyName": "items",
				"name": "DisableSearchFilter",
				"values": {
					"itemType": Terrasoft.ViewItemType.BUTTON,
					"click": {"bindTo": "disableSearchFilter"},
					"visible": {"bindTo": "UseSearchFilter"},
					"markerValue": "cancelButton",
					"imageConfig": {"bindTo": "Resources.Images.CancelButtonImageNew"}
				}
			}
   }

 

Владимир Соколов,

Спасибо, попробуем

Владимир Соколов,

При открытии карточки фильтр очищается :(( а нам нужно, чтобы  хранился, пока не отменим

 

Тогда надо сохранять значение фильтра в профиле. Что-то похожее здесь обсуждалось - 

https://community.terrasoft.ru/questions/polzovatelskiy-fiksirovannyy-f…

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