Каким образом можно получить значение из другой таблицы

На клиенте нужно вставить запись в некоторую таблицу, одним из значений параметров есть Id записи контакта, его нужно получить из таблицы Contact запросом.

Например, вот так:

            setLoggerActivatorParameter: function(clinic) {

                var loggerActivatedById;

                if (this.Ext.isEmpty(clinic)) {

                    return loggerActivatedById;

                }

                var esqContact = Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "Contact"

                });

                var esqAccountFilter = esqContact.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                    "Account", clinic.value);

                var esqDataLoggerActivatorFilter =

                    esqContact.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                    "DataLoggerActivator", true);

                esqContact.filters.add("esqAccountFilter", esqAccountFilter);

                esqContact.filters.add("esqDataLoggerActivatorFilter", esqDataLoggerActivatorFilter);

                esqContact.getEntityCollection(function(result) {

                    if (result.success && result.collection.getCount()) {

                        loggerActivatedById = result.collection.first().get("Id");

                        return loggerActivatedById;

                    }

                }, this);

            }

Но из-за ассинхроности, пока отработает функция setLoggerActivatorParameter, то запись уже добавится в таблицу без значения поля loggerActivatedById.

Вопрос в том, каким образом можно реализовать такую функциональность, чтобы получать значение поля loggerActivatedById до того, как будет добавлена новая запись в таблицу.

Интересно также, есть ли другие варианты решения данной задачи, кроме запуска процесса, в котором будет реализована данная функциональность.

Нравится

1 комментарий

Из других вариантов:

1) сервис

2) использовать chain на клиенте (реализация гуглится по форуму или тут)

3) кривой, но рабочий (более-менее) способ — делать тот же самый esq только при загрузке страницы, где-нибудь в init-е. Ну и складировать результат в переменную. Потом в обработчике уже к переменной обращаться.

Показать все комментарии