Здравствуйте!
Стоит задача открыть справочник с множественным выбором, отфильтрованного следующим образом
- не должен содержать имеющихся на детали записей
- должен содержать записи, относящиеся только к данной карточке
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);
},
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 комментарий
6 февраля 2015 17:13
Выяснил в чем проблема filterGroup.add(ИМЯ,Filter) принимает 2 параметра.
а я использовал
filterGroup.add(requestFilter);
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать