Фильтрация и открытие справочника.

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

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

prepareOpenLookup:function () {

                    var addParams = this.get('addParams');
                    //Строим ExistsFilter
                     var filterValue = this.get("MasterRecordId");
                     var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
                     rootSchemaName: this.entitySchemaName
                     });
                     esq.addColumn("Id");
                     esq.addColumn(addParams.item1 + '.Id');
                     esq.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
                     esq.filters.add("filterChild", Terrasoft.createColumnFilterWithParameter(
                     this.Terrasoft.ComparisonType.EQUAL, addParams.item2, filterValue));

                     esq.getEntityCollection(function(result) {
                        var existsContactsCollection = [];
                         if (result.success) {
                            result.collection.each(function(item) {
                                existsContactsCollection.push(item.get(addParams.item1 + '.Id'));
                            });
                        }
                        //config открытия справочника
                         var config = {
                            entitySchemaName: addParams.parentTable,
                            multiSelect: true,
                            columns: addParams.columns,
                            filters:(Terrasoft.createColumnFilterWithParameter(
                                Terrasoft.ComparisonType.EQUAL, "SxRequest", addParams.ParentId))
                         };
                     if (existsContactsCollection.length > 0) {
                         var existsFilter = Terrasoft.createColumnInFilterWithParameters("Id", existsContactsCollection);
                         existsFilter.comparisonType = Terrasoft.ComparisonType.NOT_EQUAL;
                         existsFilter.Name = "existsFilter";
                         var filterGroup = Terrasoft.createFilterGroup();
                         filterGroup.logicalComparisonTypes = Terrasoft.LogicalOperatorType.AND;


                        var requestFilter=Terrasoft.createColumnFilterWithParameter(
                             Terrasoft.ComparisonType.EQUAL, "SxRequest", addParams.ParentId)
                         requestFilter.Name = "requestFilter";
                         requestFilter.comparisonType = Terrasoft.ComparisonType.EQUAL;
                         //Добавляем фильтр по заявке
                         filterGroup.add(requestFilter);

                         //Добавляем existsFilter
                         filterGroup.add(existsFilter);
                         //Устанавливаем фильтрацию для справочника
                         config.filters = filterGroup;
                     }
                     this.openLookup(config, this.addCallBack, this);
                     }, this);
                },

Проблема в том, что из filterGroup отрабатывает только последний добавленный фильтр. (порядок значения не имеет, отрабатывает все-равно последний)
Как можно решить данную проблему?

Нравится

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

Выяснил в чем проблема filterGroup.add(ИМЯ,Filter) принимает 2 параметра.
а я использовал
filterGroup.add(requestFilter);

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