Работа с быстрыми фильтрами из клиентских js модулей

Есть ли какой-нибудь кейс установки фильтров в модуле раздела (файлы с названием Section.js)? Нужен именно быстрый фильтр, а не fixedFilter. fixedFilter написан так, что если поле фильтрации лукапное, то он считает, что это поле - "Owner" и подставляет в выбор текущего пользователя. Мне же нужно фильтровать по кастомному полю.
В клиентских схемах нашел модуль QuickFilterHelper, но не разобрался как с ним работать, а примеров работы с ним не нашел.
Если у кого-то может предоставить готовые примеры фильтрации по кастомному полю - буду премного благодарен!

Нравится

5 комментариев

Богдан, здравствуйте!

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

var module = "SectionModuleV2";
var section = "ActivitySectionV2";
var filterColumnName = "Type";
var filterValue = "Задача";
var filterState = {
                ignoreFixedFilters: true,
                ignoreFolderFilters: true,
                customFilterState: {}
};
filterState.customFilterState[filterColumnName] = {
                displayValue: filterValue
};
var state = this.sandbox.publish("GetHistoryState");
var newState = this.Terrasoft.deepClone(state.state || {});
this.Ext.apply(newState, {
                activeTab: "mainView",
                filterState: filterState,
                searchState: true,
                moduleId: "ViewModule_SectionModule"
});
var storage = this.Terrasoft.configuration.Storage.Filters = this.Terrasoft.configuration.Storage.Filters || {};
var sessionFilters = storage[section] = storage[section] || {};
sessionFilters.CustomFilters = {};
var filter = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.START_WITH, filterColumnName, filterValue);
sessionFilters.CustomFilters[filterColumnName] = {
                value: filterValue,
                displayValue: filterValue,
                filter: filter.serialize({serializeFilterManagerInfo: true})
};
this.sandbox.publish("PushHistoryState", {
                hash: this.Terrasoft.combinePath(module, section),
                stateObj: newState
});

Благодарю! Вроде работает, но в консоли вот такая ошибка.

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

"Вильшанский Дмитрий" написал:

Богдан, здравствуйте!

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

var module = "SectionModuleV2";

var section = "ActivitySectionV2";

var filterColumnName = "Type";

var filterValue = "Задача";

var filterState = {

                ignoreFixedFilters: true,

                ignoreFolderFilters: true,

                customFilterState: {}

};

filterState.customFilterState[filterColumnName] = {

                displayValue: filterValue

};

var state = this.sandbox.publish("GetHistoryState");

var newState = this.Terrasoft.deepClone(state.state || {});

this.Ext.apply(newState, {

                activeTab: "mainView",

                filterState: filterState,

                searchState: true,

                moduleId: "ViewModule_SectionModule"

});

var storage = this.Terrasoft.configuration.Storage.Filters = this.Terrasoft.configuration.Storage.Filters || {};

var sessionFilters = storage[section] = storage[section] || {};

sessionFilters.CustomFilters = {};

var filter = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.START_WITH, filterColumnName, filterValue);

sessionFilters.CustomFilters[filterColumnName] = {

                value: filterValue,

                displayValue: filterValue,

                filter: filter.serialize({serializeFilterManagerInfo: true})

};

this.sandbox.publish("PushHistoryState", {

                hash: this.Terrasoft.combinePath(module, section),

                stateObj: newState

});

Добрый день!
В вашем примере вы говорите о кнопке в разделе - скажите, пожалуйста, как можно добавить свою кнопку в раздел - именно кнопку, а не действие ( в SDK приведен пример с действием)

В вашем примере, filterValue принимает фиксированное значение "Задача", скажите, пожалуйста, можно ли добавить в сам раздел строку для ввода, с которой можно считывать значение?

Дарья, реализацию кнопки в разделе вы можете посмотреть в схеме BaseSectionV2 (например, кнопка "AddRecordButton").

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