Как добавить поля, значение которого будет соответствовать итоговой величине по определенному полю детали, к примеру сумме и определенного типа запись детали?
Нравится
Добрый день. Ознакомьтесь с видеоуроком, в котором рассказывается, как добавить на страницу редактирования вычисляемое поле: Настройка полей: вычисляемые поля
А можете скинуть пример кода для итогового поля, в котором будет отображаться сумма по какому-то полю детали.
Василий, в методе обработчике можно выполнять запрос и в callback-функции устанавливать значение для поля карточки:
var select = Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "InvoiceProduct" }); select.addColumn("Id"); select.addColumn("Invoice"); select.addColumn("TotalAmount"); select.filters.addItem(select.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Invoice", this.get("Id"))); select.getEntityCollection(function(response) { if (response && response.success) { for (var i = 0; i < response.collection.collection.items.length; i++) { this.set("MyAmount", this.get("MyAmount") + response.collection.collection.items[i].values.TotalAmount); } } }, this);
Пример для карточки счета и детали продукт в счете. MyAmount - суммирующее поле, TotalAmount - поле детали.
Это надо сделать так ???
{ type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE, name: 'Column', columnPath: 'Column', dataValueType: Terrasoft.DataValueType.FLOAT, visible: true methodName: 'MyMethod' } .....; this.methods.MyMethod = function () { .....; // здесь код подсчёта суммы }
Нет, подписаться Вам необходимо не на изменение какого-то поля, а на изменение детали. Сделать это можно описав метод changeDetailSubscribeByName внутри метода Init. В замещающем модуле это будет выглядеть примерно так:
var baseInit = this.init; this.methods.init = function() { if (baseInit) { baseInit.call(); } this.changeDetailSubscribeByName('product', function() { //здесь код подсчёта }); };
где product - название детали