Добрый день.
Подскажите как организовать фильтр в клиентской esq по агрегированным данным. Например вот есть такая агрегирующая колонка
putNestingColumn: function(esq) {
var aggregationColumn = this.Ext.create("Terrasoft.AggregationQueryColumn", {
aggregationType: Terrasoft.AggregationType.COUNT,
columnPath: "[OpportunityProductInterest:NrbParent].Id"
});
if (!esq.columns.contains("HasNesting")) {
esq.addColumn(aggregationColumn, "HasNesting");
}
},А требуется, чтобы выводились только те записи, у которых есть подчиненные записи (в этой колонке значение > 0).
Есть метод createFilter, в который необходим передать объект класса Terrasoft.BaseExpression или наследника, но непонятно как в таком случае указать колонку, по которой считать?
var leftExpression = Ext.create("Terrasoft.FunctionExpression", {
functionType: Terrasoft.FunctionType.AGGREGATION,
aggregationType: Terrasoft.AggregationType.COUNT,
aggregationEvalType: Terrasoft.AggregationEvalType.ALL
});
Нравится
Мне кажется, в этом случае надо надо не createFilter, а createExistsFilter. Как тут.
createExistsFilter(columnPath)
Создает экземпляр Exists-фильтра для сравнения типа [Существует по заданному условию] и устанавливает в качестве проверяемого значения выражение колонки, расположенной по заданному пути.
Да я, к сожалению, привел нерелевантный пример задачи. Если мне нужно, чтобы значения было не более 0 (в этом случае Exists поможет), а более, скажем, 5.
PS В приведенной статье речь все же идет о серверной esq
В примере по ссылке (не комментариях) используется клиентская. Если же нужно сравнивать с числом, можно попробовать подставлять выражение колонки в createColumnFilterWithParameter.
createColumnFilterWithParameter(comparisonType, columnPath, paramValue)
Создает экземпляр Compare-фильтра для сравнения колонки с заданным значением.
comparisonType Terrasoft.ComparisonType Тип операции сравнения.
columnPath String Путь к проверяемой колонке относительно корневой схемы rootSchema.
paramValue Mixed Значение параметра.