Класс EntitySchemaQuery. Получение результата запроса
Glossary Item Box
Результатом выполнения запроса EntitySchemaQuery является коллекция сущностей Creatio. Каждый экземпляр в коллекции представляет собой строку набора данных, возвращаемого запросом. Получить результаты выполнения запроса можно следующими способами:
- Получить конкретную строку набора данных по заданному первичному ключу, вызвав метод getEntity (пример 1).
- Получить весь результирующий набор данных, вызвав метод getEntityCollection (пример 2).
Пример 1. — Получение конкретной строки набора данных
// Получаем [Id] объекта карточки. var recordId = this.get("Id"); // Создаем экземпляр класса Terrasoft.EntitySchemaQuery с корневой схемой [Contact]. var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" }); // Добавляем колонку с именем основного контакта контрагента, который относится к данному контакту. esq.addColumn("Account.PrimaryContact.Name", "PrimaryContactName"); // Получаем одну запись из выборки по [Id] объекта карточки и отображаем ее // в информационном окне. esq.getEntity(recordId, function(result) { if (!result.success) { // обработка/логирование ошибки, например this.showInformationDialog("Ошибка запроса данных"); return; } this.showInformationDialog(result.entity.get("PrimaryContactName")); }, this);
Пример 2. — Получение всего набора данных
var message = ""; // Создаем экземпляр класса Terrasoft.EntitySchemaQuery с корневой схемой [Contact]. var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" }); // Добавляем колонку с названием контрагента, который относится к данному контакту. esq.addColumn("Account.Name", "AccountName"); // Добавляем колонку с именем основного контакта контрагента, который относится к данному контакту. esq.addColumn("Account.PrimaryContact.Name", "PrimaryContactName"); // Получаем всю коллекцию записей и отображаем ее в информационном окне. esq.getEntityCollection(function (result) { if (!result.success) { // обработка/логирование ошибки, например this.showInformationDialog("Ошибка запроса данных"); return; } result.collection.each(function (item) { message += "Account name: " + item.get("AccountName") + " - primary contact name: " + item.get("PrimaryContactName") + "\n"; }); this.showInformationDialog(message); }, this);
При получении справочных колонок метод this.get() возвращает объект, а не идентификатор записи в базе данных. Чтобы получить идентификатор, используйте свойство value, например, this.get('Account').value.
Табл. 1. — Методы получения результатов запроса
Метод | |||||||||
---|---|---|---|---|---|---|---|---|---|
getEntity(primaryColumnValue, callback, scope)
Возвращает экземпляр сущности по заданному первичному ключу [primaryColumnValue]. После получения данных вызывает функцию [callback] в контексте [scope].
|
|||||||||
getEntityCollection(callback, scope)
Возвращает коллекцию экземпляров сущности, представляющих результаты выполнения текущего запроса. После получения данных вызывает функцию [callback] в контексте [scope].
|