Добрый день.
По аналогии примера сделал редактируемую деталь(смотрите фото в приложении)
По в самой детали есть поля которые рассчитываются по формулам.
А в данном случае их пользователь сам может менять, а чтобы был сделан расчет надо зайти в деталь. Что не удобно.
Как заблокировать поле для редактирование пользователем, сделать его вычисляемым ?
Мой код.
"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: {}
};
});
Нравится
Для блокировки полей редактируемого реестра, можно писать бизнес правила блокировки на странице(!) этой детали.
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…