Здравствуйте. Интересует способ использования "Group By" в entitySchemaQuery (сервер). При поиске наткнулся на топик - https://community.terrasoft.ru/questions/gruppirovka-v-entityschemaquery , но увы, ссылка с ответом битая.
Нравится
Пример использования на C#, документацию нашел только для клиентских запросов, но по аналогии все понятно
var query = new EntitySchemaQuery(_userConnection.EntitySchemaManager, schemaName); var columnCount = query.AddColumn(query.CreateAggregationFunction(AggregationTypeStrict.Count, query.PrimaryQueryColumn.Name)); var countEntity = query.GetEntityCollection(UserConnection)[0]; var count = countEntity.GetTypedColumnValue<int>(comnCount.Name); return count;
На всякий случай разясню, после добавления агрегатной функции если добавить обычные столбцы по ним будет выполнена группировка те
var esq = new Order(UserConnection); esq.AddColumn(esq.CreateAggregationFunction(AggregationTypeStrict.Count, "Customer.Name").All()); esq.AddColumn("Description"); esq.AddColumn("Name"); esq.AddColumn("Customer");
Добавит в запрос
GROUP BY Order.Description, Document.Name, Order.CustomerId, Customer.Name;
Пример использования на C#, документацию нашел только для клиентских запросов, но по аналогии все понятно
var query = new EntitySchemaQuery(_userConnection.EntitySchemaManager, schemaName); var columnCount = query.AddColumn(query.CreateAggregationFunction(AggregationTypeStrict.Count, query.PrimaryQueryColumn.Name)); var countEntity = query.GetEntityCollection(UserConnection)[0]; var count = countEntity.GetTypedColumnValue<int>(comnCount.Name); return count;
На всякий случай разясню, после добавления агрегатной функции если добавить обычные столбцы по ним будет выполнена группировка те
var esq = new Order(UserConnection); esq.AddColumn(esq.CreateAggregationFunction(AggregationTypeStrict.Count, "Customer.Name").All()); esq.AddColumn("Description"); esq.AddColumn("Name"); esq.AddColumn("Customer");
Добавит в запрос
GROUP BY Order.Description, Document.Name, Order.CustomerId, Customer.Name;
Вот, на всякий случай, и пример серверного кода:
EntitySchema entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName("SysProcessElement"); var query = new EntitySchemaQuery(entitySchema); EntitySchemaQueryColumn elementUIdColumn = query.AddColumn("SchemaElementUId"); EntitySchemaQueryColumn executeCountColumn = query.AddColumn(query.CreateAggregationFunction(AggregationTypeStrict.Count, entitySchema.PrimaryColumn.Name)); EntityCollection entities = query.GetEntityCollection(UserConnection);
Зверев Александр,
Я для серверного кода пример и приводил :) От клиентского только документация :)
Вот документация по серверной. Ещё в этом документе есть информация.