Коллеги, добрый день.
Версия 7.17.2.1728.
Возможно ли использование фильтров по колонке и подзапросу на клиенте, аналогично данному примеру:
public IEntitySchemaQueryFilterItem CreateFilter(FilterComparisonType comparisonType, string leftExpressionColumnPath, EntitySchemaQuery rightExpressionValue)
Где: comparisonType – тип сравнения leftExpressionColumnPath – путь к колонке в левой части фильтра rightExpressionValue – подзапрос в правой части фильтра
Пример:
var esq = new EntitySchemaQuery(EntitySchemaManager, "ESQCityNA"); esq.AddColumn("Id"); var subEsq = new EntitySchemaQuery(EntitySchemaManager, "ESQCityNA"); subEsq.AddColumn(subEsq.CreateAggregationFunction(AggregationTypeStrict.Max, "ModifiedOn")); var filter = esq.CreateFilter(FilterComparisonType.Equal, "ModifiedOn", subEsq); esq.Filters.Add(filter); string sqlText = esq.GetSelectQuery(CurrentConnection).GetSqlText();
SqlText запроса:
SELECT "ESQCityNA"."Id" "Id" FROM "ESQCityNA" "ESQCityNA" WHERE "ESQCityNA"."ModifiedOn" = (SELECT MAX("ESQCityNA"."ModifiedOn") "Max" FROM "ESQCityNA" "ESQCityNA")
Взято отсюда: https://community.terrasoft.ru/articles/opisanie-osnovnykh-metodov-entityschemaquery-chast-1
Попытка аналогичной подстановки:
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Object"
});
esq.addAggregationSchemaColumn("ObjectColumn.InnerColumn", Terrasoft.AggregationType.MAX, "ActivityRoute", Terrasoft.AggregationEvalType.ALL);
filters.addItem(Terrasoft.createFilter(Terrasoft.ComparisonType.EQUAL, "ObjectColumn.InnerColumn", esq));
Приводит к ошибке в консоли с сообщением "Ошибка кодирования значения в JSON-строку".