Creatio development guide
PDF
Это документация Creatio версии 7.16.0. Мы рекомендуем использовать новую версию документации.

Класс 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].

primaryColumnValue String/Number Значение первичного ключа.
callback Function Функция, которая будет вызвана при получении ответа от сервера.
scope Object Контекст, в котором будет вызвана функция [callback].
getEntityCollection(callback, scope)

Возвращает коллекцию экземпляров сущности, представляющих результаты выполнения текущего запроса. После получения данных вызывает функцию [callback] в контексте [scope].

callback Function Функция, которая будет вызвана при получении ответа от сервера.
scope Object Контекст, в котором будет вызвана функция [callback].

Смотрите также

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?