Получение значения стандартных фильтров и обработка события изменения фильтров

Здравствуйте.

Используется BPMonline sales comerce версии 7.6.
В разделе продажи есть стандартные фильтры, при изменении которых фильтруются вывод продаж в гриде, что и сразу отображается. Так же есть в этом разделе кнопка аналитика, где строятся графики и можно писать свои виджеты. Я написал виджет который рисует таблицу с нужными полями. Хочется также применять стандартные фильтры для отображения данных в моей таблице. Собственно вопрос, как получить значения этих фильтров и как правильно обрабатывать событие изменения фильтров для перерисовки моей таблици???

Пример клиентсткого модуля для виджета, который рисует таблицу:

define('SxClientUnitTable', ['ext-base', 'terrasoft', 'sandbox', 'SxClientUnitTableResources', "ChartModuleHelper", "css!SxClientUnitTableCss", "ServiceHelper"],
        function(Ext, Terrasoft, sandbox, resources, ChartModuleHelper, css, ServiceHelper, ConfigurationConstants) {
                function getViewModel() {
                                        return Ext.create('Terrasoft.BaseViewModel', {
                                //todo SysModuleAnalyticsChart deleted
                                                entitySchema: 'Order',
                                                methods: {
                                                        getChart: function(key) {
                                                                sandbox.publish('GenerateChart', key);
                                                        },
                                                        load: function() {

                                                        }
                                                }
                                        });
                                };
                var result = "";
                function generateMainView(renderTo) {
                       
                        var resultConfig = Ext.create('Terrasoft.Container', {
                                id: 'tableOtchetMetkiParamContainer',
                                selectors: {
                                        wrapEl: '#tableOtchetMetkiParamContainer'
                                },
                                renderTo: renderTo
                        });
                        return resultConfig;
                }
                function getInfoMetki(parameters) {

                        var serviceData = {
                                site: parameters[0].toString(),
                                ownerId: parameters[1].toString(),
                                startDate: parameters[2].toString(),
                                dueDate: parameters[3].toString(),
                                countryId: parameters[4].toString()
                        };
                       
                        ServiceHelper.callService("UsrOtchetMetkiGetCollectionConfigurationService", "GetCollectionOtchetMetki",
                                function (response) {
                                debugger
                                        if (response.status == 404) {
                                                this.showInformationDialog("\t Error: \n" + response.message);
                                        }
                                        else if(response.GetCollectionOtchetMetkiResult.length > 0){
                                                result = response.GetCollectionOtchetMetkiResult;
                                                var arrR = result.split(":");
                                                var htmlAdded = ""
МеткаКоличество заказовНа уточнении% уточн.Подтвержденные% Подтв.Завершенные% Заверш.Отмены% Отм.
;
                                                for(var i = 0; i arrR.length - 1; i++){
                                                        //get items
                                                        var strArr = arrR[i].split(" ");
                                                        var metkaOne = strArr[0].replace("{","");
                                                        var metka = metkaOne.replace("}","");
                                                       
                                                        htmlAdded += "" + metka + "" + strArr[1].toString() + ""  + strArr[2].toString() + "" + strArr[3].toString() + "" + strArr[4].toString() + "" + strArr[5].toString() + "" + strArr[6].toString() + "" + strArr[7].toString() + ""  + strArr[8].toString() + "" + strArr[9].toString() + "";
                                                }
                                                //end table
                                                htmlAdded += "";
                                                var el = Ext.get('tableOtchetMetkiParamContainer').setHTML(htmlAdded);
                                                var elemV = Ext.get('Module1');
                                                elemV.toggleCls('my-table');
                                        }
                                        else
                                                result = null;
                                }, serviceData, this);
                }

                var render = function(renderTo) {
                        var viewConfig = generateMainView(renderTo);
                        var viewModel = getViewModel();
                        var filters = getFilteres();
                        var ar = [];
                        ar.push("all");
                        ar.push("all");
                        ar.push("2016-05-01");
                        ar.push("2016-07-04");
                        ar.push("a570b005-e8bb-df11-b00f-001d60e938c6");
                        getInfoMetki(ar);
                       
                       
                        viewConfig.bind(viewModel);
                };
                return {
                        schema: 'Order',
                        methods: {
                               
                                getOrdersForFilter: function(){
                                        var items = [];
                                        var selOrders = Ext.create("Terrasoft.EntitySchemaQuery", {
                                                rootSchemaName: "Order"
                                        });
                                        selOrders.addColumn("SxMark.Name");
                                        selOrders.addColumn("SxCountry.Name");
                                        var filterByUser = Terrasoft.createColumnFilterWithParameter(
                                        Terrasoft.ComparisonType.EQUAL, "SxCountry.Name", "Россия");
                                        selOrders.filters.addItem(filterByUser);
                                        selOrders.getEntityCollection(function (response) {
                                        debugger
                                                if (response.collection.collection.length > 0)
                                                        items = result.collection.getItems();
                                                else
                                                        items = null;
                                        }, this);
                                        return items;
                                },
                                filterChanged: function( filter, eOpts ){
                                        debugger
                                        var c = [];
                                }
                        },
                        userCode: function() {
                               
                        },
                        init: function() {
                                debugger

                        },
                        render: render
                };
        }
)
;

Нравится

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

Скорее всего вам поможет SDK
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/rabota-s-filtr…
Есть несколько примеров

К сожалению, ширина сайта не позволяет увидеть страницу целиком :(, поэтому скопируйте все содержимое, например в MSWord

Я решил данную задачу при помощи sandbox. Стандартные (Fixed и Custom) фильтры прикреплены к OrderSectionV2 и работать с ними (afterFiltersUpdated - переопределить метод изменение фильтров) только в этой схеме.

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