Добрый день, нужно что бы фильтр работал только по определенным колонкам, нашел это обсуждение у меня аналогичная задача https://community.terrasoft.ua/questions/filtraciya-standartnogo-filtra
но как я понял метод отсюда больше не актуален, в какую сторону копать , что бы сделать данную доработку?
Нравится
Добрый день,
Проставьте колонкам, что не должны появляться в фильтрации 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 работает(лучше способа как переопределить метод из вьюмодели я не смог придумать)