Задача рассматривалась уже не раз, но я никак не могу понять, где отклоняюсь от правильной процедуры.
Задача: добавить на страницу пользовательское поле, значение которого рассчитывается по изменению значения другого поля. Значение должно только отображаться на странице, сохранять его в БД нет смысла (оно строго вычисляется исходя из значений двух других колонок).
Вроде бы все должно работать, и значение поля 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 }, //..................... }
Нравится
Добрый день.
Попробуйте добавить квадратные скобки после dependencies, как на примере ниже:
"dependencies": [ { "columns": ["Patient"], "methodName": "setPatientFieldsValue" } ]
Добрый день.
Попробуйте добавить квадратные скобки после dependencies, как на примере ниже:
"dependencies": [ { "columns": ["Patient"], "methodName": "setPatientFieldsValue" } ]
Алла Савельева,
как и предполагалось, ошибка была абсолютно дурацкой...
Спасибо!