Редактируемая Деталь (по аналогии продукт в заказе)

Добрый день.
По аналогии примера сделал редактируемую деталь(смотрите фото в приложении)

По в самой детали есть поля которые рассчитываются по формулам.
А в данном случае их пользователь сам может менять, а чтобы был сделан расчет надо зайти в деталь. Что не удобно.

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

Мой код.

define("UsrNDetail", ["ConfigurationGrid", "ConfigurationGridGenerator",
"ConfigurationGridUtilities"],
function() {
        return {
                entitySchemaName: "UsrN",
                attributes: {
                        "IsEditable": {
                                dataValueType: Terrasoft.DataValueType.BOOLEAN,
                                type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                                value: true
                        }
                },
                details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
                diff: /**SCHEMA_DIFF*/[
                        {
                                "operation": "merge",
                                "name": "DataGrid",
                                "values": {
                                        "className": "Terrasoft.ConfigurationGrid",
                                        "generator": "ConfigurationGridGenerator.generatePartial",
                                        "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
                                        "changeRow": {"bindTo": "changeRow"},
                                        "unSelectRow": {"bindTo": "unSelectRow"},
                                        "onGridClick": {"bindTo": "onGridClick"},
                                        "activeRowActions": [
                                                {
                                                        "className": "Terrasoft.Button",
                                                        "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                                                        "tag": "save",                                                  // Значение маркера.
                                                        "markerValue": "save",
                                                        "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
                                                },
                                                {
                                                        "className": "Terrasoft.Button",
                                                        "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                                                        "tag": "cancel",
                                                        "markerValue": "cancel",
                                                        "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
                                                },
                                                {
                                                        "className": "Terrasoft.Button",
                                                        "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                                                        "tag": "remove",
                                                        "markerValue": "remove",
                                                        "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
                                                }
                                        ],
                                        "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
                                        "activeRowAction": {"bindTo": "onActiveRowAction"},
                                        "multiSelect": false
                                }
                        }
                ]/**SCHEMA_DIFF*/,
                mixins: {
                        ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
                },
                methods: {}
        };
});

Нравится

4 комментария

Для блокировки полей редактируемого реестра, можно писать бизнес правила блокировки на странице(!) этой детали.
rules: {
"UsrTestInt1": {
"EnabledUsrTestInt1": {
"ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
"property": BusinessRuleModule.enums.Property.ENABLED,
"conditions": [
{
"leftExpression": {
"type": BusinessRuleModule.enums.ValueType.CONSTANT,
"value": true
},
comparisonType: Terrasoft.ComparisonType.NOT_EQUAL,
rightExpression: {
type: BusinessRuleModule.enums.ValueType.CONSTANT,
value: true
}
}
]
}
}
}

Тоже самое касается и обработчиков изменения колонок. Написав атрибут к любой колонке с методом обработки изменения и списком колонок по изменению которых будет вызван данный метод:
"Parent": {
name: "Parent",
dependencies: [
{
columns: ["Account", "OurCompany"],
methodName: "clearParent"
}
]
},

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

Кстати, а VIRTUAL_COLUMN, описанные на странице тоже смогут отображаться в детали?

Да, если добавить в diff описание объекта в который нужно отобразить ее значение.
Пример на Академии: https://academy.terrasoft.ua/documents/technic-sdk/7-9/dobavlenie-vychi…

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