Публикация

Бизнес правило (блокировка поля) для редактируемого реестра детали

Вопрос

В версии 7.7.0.2293 SalesEnterprise + Marketing + CustomerCenter в редактируемом реестре все поля изменяемой записи доступны для изменений. Как можно заблокировать от изменений отдельные поля? 

Ответ

1) Создать деталь с помощью мастера деталей, на закладке страницы вывести хотя бы несколько полей. Сохранить.

2) Зарегистрировать мастером разделов деталь на странице в разделе. Настроить колонки.

3) Для того, чтобы деталь стала редактируемой, добавляем зависимости, миксин, атрибут и мердж грида в блоке дифф как показано в примере ниже:

define("UsrSchema1Detail", ["ConfigurationGrid", "ConfigurationGridGenerator",
"ConfigurationGridUtilities"], function() {
    return {
        entitySchemaName: "UsrTestContactDetail",
        attributes: {
            "IsEditable": {
                dataValueType: Terrasoft.DataValueType.BOOLEAN,
                type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                value: true
            }
        },
        mixins: {
            ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
        },
        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*/,
        methods: {}
    };
});

5) В схеме страницы редактирования детали описываем бизнес-правило по правилам написания бизнес-правил - http://academy.terrasoft.ua/documents/docs/technic/SDK/7.6.0/BlockingFieldByCondition.html

define("UsrUsrTestContactDetail1Page", ["BusinessRuleModule"], function(BusinessRuleModule) {
    return {
        entitySchemaName: "UsrTestContactDetail",
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "name": "UsrContact",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "Header"
                    },
                    "bindTo": "UsrContact"
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "UsrTestInt1",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 12,
                        "row": 0,
                        "layoutName": "Header"
                    },
                    "bindTo": "UsrTestInt1"
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "UsrTestInt2",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 1,
                        "layoutName": "Header"
                    },
                    "bindTo": "UsrTestInt2"
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 2
            },
            {
                "operation": "insert",
                "name": "CreatedBy",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 12,
                        "row": 1,
                        "layoutName": "Header"
                    },
                    "bindTo": "CreatedBy"
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 3
            }
        ]/**SCHEMA_DIFF*/,
        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
                            }
                        }
                    ]
                }
            }
        }
    };
});

В результате поле заблокировано. Если же деталь существующая, и у нее нет страницы редактирования, то необходимо либо удалить информацию в таблице SysDetail и SysModuleEdit по данной детали, и пересоздать ее мастером деталей, либо страницу редактирования создать и зарегистрировать в таблице SysModuleEdit по аналогии с существующими. Затем написать в схеме страницы редактирования детали необходимый для блокировки код.

Нравится

Поделиться

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