Как вызвать обновление фильтра на детали?

attributes: {
            //коллекция записей объектов, используется для фильтров на детали объекты
            "collection": {
                "dataValueType": this.Terrasoft.DataValueType.COLLECTION,
                "type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                "value": []
            },
"qrtSchema20721e4bDetail473909b0": {
				"schemaName": "qrtSchema20721e4bDetail",
				"entitySchemaName": "qrtObject",
				"filterMethod": "setObjectFilers"
			}
onEntityInitialized: function(){
				this.callParent(arguments);
                this.console.log("onEntityInitialized");
				this.getProjectCollections();
			},
 setObjectFilers: function(){
                debugger;
                var DEFAULT = "00000000-0000-0000-0000-000000000000";
                this.console.log("setObjectFilers");
                var collection = this.get("collection");
                this.console.log("Массив: "+collection);
                var filterGroup = Ext.create("Terrasoft.FilterGroup");
 
 
                if(collection.length !== 0){
                    filterGroup.add("IdFilter",Terrasoft.createColumnInFilterWithParameters("Id", collection));
                } else {
                    filterGroup.add("IdFilter",
                                    Terrasoft.createColumnFilterWithParameter(
                                        Terrasoft.ComparisonType.EQUAL, "Id", DEFAULT));
                }
 
 
 
                return filterGroup;
 
            },
            /**
             * получает коллекцию объектов по лидам и продажам
             */
            getProjectCollections:function(){
                var mas = [];
                Terrasoft.chain(
                    function(next){
                        var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
                            rootSchemaName: "Opportunity"
                        });
                        this.console.log("obj");
                        esq.addColumn("qrtObject.Id");
                        // Создание экземпляра первого фильтра.
                        var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "qrtProject", this.get("Id"));
                        esq.filters.add("esqFirstFilter", esqFirstFilter);
 
                        esq.getEntityCollection(function (result) {
                            if (result.success) {
                                result.collection.each(function (item) {
                                    this.console.log(item.get("qrtObject.Id"));
                                    mas.push(item.get("qrtObject.Id"));
 
                                });
                            }
                            next();
                        }, this);
                    }, 
                    function(next){
                        this.console.log(mas);
                        self.set("collection", mas);
                        this.updateDetail({detail: "qrtSchema20721e4bDetail473909b0", realoadAll: true});
                        this.setObjectFilers();
 
                    }, this
                )           
            }

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

не совсем пойму что я делаю не так, перепробовал все что знаю и то что нагуглил.

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

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

Нравится

1 комментарий

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

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