Как добавить поля, значение которого будет соответствовать итоговой величине по определенному полю детали, к примеру сумме и определенного типа запись детали?

Нравится

8 комментариев

Добрый день. Ознакомьтесь с видеоуроком, в котором рассказывается, как добавить на страницу редактирования вычисляемое поле: Настройка полей: вычисляемые поля

Спасибо большое!

А можете скинуть пример кода для итогового поля, в котором будет отображаться сумма по какому-то полю детали.

Василий, в методе обработчике можно выполнять запрос и в 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 - название детали

Показать все комментарии