Здравствуйте, помогите решить задачу, пожалуйста,
На странице редактирования выведены 2 поля: Оценка (число), Оценка традиционная (Справочник).
Справочник традиционная оценка содержит колонки Название (например Удовлетворительно), Балл от (напр. 50), Балл до (напр. 69).
Как сделать так, чтобы после ввода числового значения X в поле Оценка на странице редактирования, сравнивалось значение числа по справочнику [Балл от] < X < [Балл до], и затем в справочном поле Оценка традиционная заполнялось Id найденного значения?
Хотелось бы это сделать не процессом после сохранения и закрытия карточки, а именно на странице редактирования после изменения поля.
Колонки:
![]()
Справочник:
![]()
Нравится
Примерно так, в коде могут быть опечатки, т.к. писал без проверки.
attributes: {
"UsrRatingLookup": {
dependencies: [
{
columns: ["UsrRating"],
methodName: "setRatingLookup"
}
]
},
},
methods: {
setRatingLookup: function() {
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "UsrRatingLookup"
});
esq.addColumn("Id");
esq.addColumn("Name");
var esqIdFilter = esq.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.GREATER_OR_EQUAL, "UsrRatingMin", this.$UsrRating);
esq.filters.add("esqFilter", esqIdFilter);
var esqIdFilter2 = esq.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.LESS_OR_EQUAL, "UsrRatingMax", this.$UsrRating);
esq.filters.add("esqFilter2", esqIdFilter2);
esq.getEntityCollection(function (result) {
if(result.success && result.collection.collection.items.length>0) {
this.set("UsrRatingLookup", {value: result.collection.collection.get(0).get("Id"), displayValue: result.collection.collection.get(0).get("Name")});
}
}, this);
},
}
Доброе утро.
Вам нужно Ваше поле сделать вычисляемым. Посмотрите на Академии пример, как это можно сделать, по ссылке.