Не срабатывает getEntity но срабатывает getEntityCollection
Приветствую!
Недавно занялся изучением и работой с платформой Creatio. По тому по коду прошу не ругать ;)
Задача популярная: выбрать из таблицы записи по фильтру, посчитать кол-во совпадений и сравнить с системной настройкой.
Код реализации с getEntity:
var message; var recordId = this.get("Id"); if(recordId) { var esq1 = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "UsrSwimmProgramm" }); var filterA = esq1.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "UsrSPBooleanActive" , 1); var filterP = esq1.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "UsrSPLookupPeriod.Name" , "Ежедневно"); esq1.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND; esq1.filters.add("filterA",filterA); esq1.filters.add("filterP",filterP); esq1.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "NumberDayLesson", Terrasoft.AggregationEvalType.ALL); esq1.getEntity(recordId, function(result) { if (!result.success) { this.showInformationDialog("Ошибка запроса"); return; } message = result.entity.get("NumberDayLesson") + "\n"; this.showInformationDialog(message); }, this); }
Код реализации с getEntityCollection:
var message; var recordId = this.get("Id"); if(recordId) { var esq1 = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "UsrSwimmProgramm" }); var filterA = esq1.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "UsrSPBooleanActive" , 1); var filterP = esq1.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "UsrSPLookupPeriod.Name" , "Ежедневно"); esq1.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND; esq1.filters.add("filterA",filterA); esq1.filters.add("filterP",filterP); esq1.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "NumberDayLesson", Terrasoft.AggregationEvalType.ALL); esq1.getEntityCollection( function(result){ message = result.collection.getByIndex(0).get("NumberDayLesson"); this.showInformationDialog(message); },this); }
Так вот, почему при всех равных метод getEntity выдает не определенной значение, а вот с getEntityCollection все работает норм ?
Нравится
Добрый вечер.
Метод getEntity используется для получения одной строки набора данных по заданному первичному ключу.
И в Вашем случае этот метод не срабатывает, потому что в заданном наборе данных не находит запись по этому recordId. Фактически, при использовании этого метода Вы добавляете ещё один фильтр по полю Id записи.
Попробуйте посмотреть запросы, которые идут в базу данных в одном случае и в другом.
Добрый вечер.
Метод getEntity используется для получения одной строки набора данных по заданному первичному ключу.
И в Вашем случае этот метод не срабатывает, потому что в заданном наборе данных не находит запись по этому recordId. Фактически, при использовании этого метода Вы добавляете ещё один фильтр по полю Id записи.
Попробуйте посмотреть запросы, которые идут в базу данных в одном случае и в другом.