Задача рассматривалась уже не раз, но я никак не могу понять, где отклоняюсь от правильной процедуры.
Задача: добавить на страницу пользовательское поле, значение которого рассчитывается по изменению значения другого поля. Значение должно только отображаться на странице, сохранять его в БД нет смысла (оно строго вычисляется исходя из значений двух других колонок).
Вроде бы все должно работать, и значение поля CalculatedValue должно вычисляться после загрузки страницы и после изменения значений в полях TurnoverF и TurnoverP. Но реально изменение случается только при загрузке страницы - т.е. метод, прописанный в dependencies, не срабатывает. Почему?
entitySchemaName: "UsrTenant",
attributes: {
"CalculatedValue": {
dataValueType: Terrasoft.DataValueType.FLOAT,
dependencies: {
columns: ["TurnoverF", "TurnoverP"],
methodName: "calculateValue"
}
}
},
methods: {
onEntityInitialized: function() {
this.callParent(arguments);
this.calculateValue();
},
calculateValue: function() {
var turnoverF = this.get("TurnoverF");
if (!turnoverF) {
turnoverF = 0;
}
var turnoverP = this.get("TurnoverP");
if (!turnoverP) {
turnoverP = 0;
}
var result = (turnoverP === 0) ? 0 : (turnoverF / turnoverP - 1);
this.set("CalculatedValue", result);
}
},
diff : {
//.....................
{
"operation": "insert",
"name": "INT_TurnoverF",
"values": {
"layout": {
"colSpan": 12,
"rowSpan": 1,
"column": 0,
"row": 0,
"layoutName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333"
},
"bindTo": "TurnoverF",
"enabled": true
},
"parentName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333",
"propertyName": "items",
"index": 0
},
{
"operation": "insert",
"name": "INT_TurnoverP",
"values": {
"layout": {
"colSpan": 12,
"rowSpan": 1,
"column": 12,
"row": 0,
"layoutName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333"
},
"bindTo": "TurnoverP",
"enabled": true
},
"parentName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333",
"propertyName": "items",
"index": 1
},
{
"operation": "insert",
"name": "INTCalculatedValue",
"values": {
"caption": "Вычисляемое поле",
"bindTo": "CalculatedValue",
"layout": {
"column": 12,
"rowSpan": 1,
"row": 4,
"layoutName": "Header",
"colSpan": 9
}
},
"parentName": "Header",
"propertyName": "items",
"enabled": true,
"index": 9
},
//.....................
}