Вопрос

Как можно отфильтровать колонки быстрого фильтра?

Добрый день, нужно что бы фильтр работал только по определенным колонкам, нашел это обсуждение у меня аналогичная задача https://community.terrasoft.ua/questions/filtraciya-standartnogo-filtra

но как я понял метод отсюда больше не актуален, в какую сторону копать , что бы сделать данную доработку?

Нравится

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

Добрый день,

 

Проставьте колонкам, что не должны появляться в фильтрации Usage mode = None (в дизайнере объекта) и опубликуйте объект. После этого колонки в фильтре появляться не будут.

Oscar Dylan,

Но тогда эти колонки не будут появляться и настройке колонок, аналитике, бизнес-процессах и т.п.?

Oscar Dylan,

 

добрый день, мне только убрать из простого фильтра,а не отключить ее вовсе нужно

Можете воспользоваться наследованием  от QuickFilterModule, но в таком случае нужно будет подправить имена в Load в базовой схеме

define("ContactSectionV2", ["ConfigurationEnums"], function(ConfigurationEnums) {
	Ext.define("Terrasoft.ContactSectionV2", {
		alternateClassName: "Terrasoft.ContactSectionV2",
		override: "Terrasoft.configuration.QuickFilterModule",//Название замещенного модуля
 
		/* Замещенная фуния */
		init: function(callback, scope) {
			window.alert("QuickFilterModuleV2: init");
			performanceManager.stop("QuickFilterModuleV2_BeforeLoad");
			performanceManager.start("QuickFilterModuleV2_Init");
			if (this.isInitialized) {
				Ext.callback(callback, scope);
				return;
			}
			this.initConfig();
			this.registerMessages();
			this.subscribeSandboxEvents();
			this.initFiltersViewItemsNames();
			var afterParentInitFn = this._afterParentInit.bind(this, callback, scope);
			var parentInitFn = this.getParentMethod(this, [afterParentInitFn, this]);
			Terrasoft.chain(
				this.initSysSettingsValues,
				this.initFiltersEntitySchemas,
				this.initFiltersModules,
				this._initConfigs,
				parentInitFn,
				this,
 
			);
 
		},
 
 
        render: function(renderTo) {
            this.callParent([renderTo]);
            var customFilterViewModel = this.viewModel.getFilterViewModel("CustomFilters");
            if (customFilterViewModel) {
               // Переопределяем метод getSimpleFilterColumnList для этого объекта
               customFilterViewModel.getSimpleFilterColumnList = function(filters, list) {
                    function filterColumns(schemaInstanceUId, columnNames) {
                        switch(schemaInstanceUId) {
                            case 'c449d832-a4cc-4b01-b9d5-8a12c42a9f89': // Activity
                                return columnNames.filter(function(x) {
                                    return x.name !== 'Color'; 
                                });
                            default:
                                return columnNames;
                        }
                    }
                    list.clear();
                    var columnList = {};
                    var columnNames = [];
                    var columns = this.entitySchema.columns;
                    var excludeColumnsName = ["ФИО", "Адрес"]
                    Terrasoft.each(columns, function(column) {
                        if (column.dataValueType !== Terrasoft.DataValueType.GUID &&
                            column.dataValueType !== Terrasoft.DataValueType.TIME &&
                            column.dataValueType !== Terrasoft.DataValueType.BLOB &&
                            column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &&
                            column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
                            this.console.log(column.caption)
 
                            if (this.isColumnDeprecated(column) || excludeColumnsName.includes(column.caption)) {
                                return;
                            }
                            columnNames.push({
                                name: column.name,
                                caption: column.caption
                            });
                        }
                    }, this);
                    var filteredColumnNames = filterColumns(this.entitySchema.uId, columnNames);
                    var sortedColumnNames = filteredColumnNames.sort((a, b) => a.caption.localeCompare(b.caption));
                    Terrasoft.each(sortedColumnNames, function(item) {
                        var column = columns[item.name];
                        columnList[column.name] = {
                            value: column.name,
                            displayValue: column.caption,
                            dataValueType: column.dataValueType,
                            referenceSchemaName: column.referenceSchemaName
                        };
                    });
                    list.loadAll(columnList);
               };
            }
 
 
        },
 
	});
	//<---------------------------
	return {
		entitySchemaName: "Contact",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
	};
});
//на 7.18 работает(лучше способа как переопределить метод из вьюмодели я не смог придумать) 

 

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