Использую очень простой метод (см. ниже) в контексте двух событий:
1) onEntityInitialized
2) при изменении поля Account на карточке.
В первом случае формируется запрос без использования фильтра по идентификатору контрагента, во втором с фильтром. В обоих случаях "var account = this.get("Account");" успешно вычисляется. Как добиться гарантированной фильтрации в обоих случаях?
setIsAffiliated: function() {
var account = this.get("Account");
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Account"
});
//esq.rowCount = 1;
esq.addColumn("IsAffiliatedLegalEntity");
esq.filters.add("Account", esq.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"Id",
account.Id));
esq.getEntityCollection(function(result) {
if (result.success) {
var first = result.collection.firstOrDefault();
if (!Ext.isEmpty(first)) {
var isAffil = first.get("IsAffiliatedLegalEntity");
this.set("IsAffiliatedLegalEntity", isAffil);
}
}
}, this);
}
Нравится
var accVal = account.value;
var accId = account.Id;
Нашел причину. Она в том, что возвращаются разные объекты в двух случаях, но в обоих идентификатор контрагента доступен так "account.value;"
Добрый день, Сергей!
Следует посмотреть какое значение возвращает строка
var account = this.get("Account");
Если оно одно и тоже, то довольно странно, что в одном случае фильтр не используется.
var accVal = account.value;
var accId = account.Id;
Нашел причину. Она в том, что возвращаются разные объекты в двух случаях, но в обоих идентификатор контрагента доступен так "account.value;"