Не работает бизнес правило.

Добрый день.
В договоре сделал бизнес правило для блокировки всех полей в заголовке если поле "Состояние" выбрано: Подписан.
1F703F42-F7E8-4E3F-9B54-2B85F62EA507 - это id состояния "Подписан"
В общем поля блокируются в любом случае даже если выбрано другое состояние, а мне надо, блокировать поля в случае если выбрано только значение "Подписан".

Как исправить?

rules: {
        "Number": {
                // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон].
                "BindParameterDisabledNumber": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство ENABLED.
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном
                        // случае массив содержит одно условие для определения, установлено ли значение.
                        "conditions": [{
                                // Выражение левой части условия.
                                "leftExpression": {
                                        // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
                                        // атрибут (колонка) модели представления.
                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                        // Название колонки модели представления, значение которой сравнивается в выражении.
                                        "attribute": "State"
                                },
                                // Тип операции сравнения.
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                // Выражение правой части условия.
                                "rightExpression": {
                                        // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает
                                        // константное значение.
                                        "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                        // Значение, с которым сравнивается выражение левой части.
                                        "value": "1F703F42-F7E8-4E3F-9B54-2B85F62EA507"
                                }
                        }]
                }
        },
        "Owner": {
                // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон].
                "BindParameterEnabledOwnerr": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство ENABLED.
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном
                        // случае массив содержит одно условие для определения, установлено ли значение.
                        "conditions": [{
                                // Выражение левой части условия.
                                "leftExpression": {
                                        // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
                                        // атрибут (колонка) модели представления.
                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                        // Название колонки модели представления, значение которой сравнивается в выражении.
                                        "attribute": "State"
                                },
                                // Тип операции сравнения — не равно.
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                // Выражение правой части условия.
                                "rightExpression": {
                                        // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает
                                        // константное значение.
                                        "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                        // Значение, с которым сравнивается выражение левой части.
                                        "value": "1F703F42-F7E8-4E3F-9B54-2B85F62EA507"
                                }
                        }]
                }
        },
        "Type": {
                // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон].
                "BindParameterEnabledType": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство ENABLED.
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном
                        // случае массив содержит одно условие для определения, установлено ли значение.
                        "conditions": [{
                                // Выражение левой части условия.
                                "leftExpression": {
                                        // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
                                        // атрибут (колонка) модели представления.
                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                        // Название колонки модели представления, значение которой сравнивается в выражении.
                                        "attribute": "State"
                                },
                                // Тип операции сравнения.
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                // Выражение правой части условия.
                                "rightExpression": {
                                        // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает
                                        // константное значение.
                                        "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                        // Значение, с которым сравнивается выражение левой части.
                                        "value": "1F703F42-F7E8-4E3F-9B54-2B85F62EA507"
                                }
                        }]
                }
        },
        "StartDate": {
                // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон].
                "BindParameterEnabledStartDater": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство ENABLED.
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном
                        // случае массив содержит одно условие для определения, установлено ли значение.
                        "conditions": [{
                                // Выражение левой части условия.
                                "leftExpression": {
                                        // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
                                        // атрибут (колонка) модели представления.
                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                        // Название колонки модели представления, значение которой сравнивается в выражении.
                                        "attribute": "State"
                                },
                                // Тип операции сравнения.
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                // Выражение правой части условия.
                                "rightExpression": {
                                        // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает
                                        // константное значение.
                                        "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                        // Значение, с которым сравнивается выражение левой части.
                                        "value": "1F703F42-F7E8-4E3F-9B54-2B85F62EA507"
                                }
                        }]
                }
        },
        "EndDate": {
                // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон].
                "BindParameterEnabledEndDate": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство ENABLED.
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном
                        // случае массив содержит одно условие для определения, установлено ли значение.
                        "conditions": [{
                                // Выражение левой части условия.
                                "leftExpression": {
                                        // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
                                        // атрибут (колонка) модели представления.
                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                        // Название колонки модели представления, значение которой сравнивается в выражении.
                                        "attribute": "State"
                                },
                                // Тип операции сравнения.
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                // Выражение правой части условия.
                                "rightExpression": {
                                        // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает
                                        // константное значение.
                                        "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                        // Значение, с которым сравнивается выражение левой части.
                                        "value": "1F703F42-F7E8-4E3F-9B54-2B85F62EA507"
                                }
                        }]
                }
        },
        "qrtOrderPaymentList": {
                // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон].
                "BindParameterEnabledqrtOrderPaymentList": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство ENABLED.
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном
                        // случае массив содержит одно условие для определения, установлено ли значение.
                        "conditions": [{
                                // Выражение левой части условия.
                                "leftExpression": {
                                        // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
                                        // атрибут (колонка) модели представления.
                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                        // Название колонки модели представления, значение которой сравнивается в выражении.
                                        "attribute": "State"
                                },
                                // Тип операции сравнения.
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                // Выражение правой части условия.
                                "rightExpression": {
                                        // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает
                                        // константное значение.
                                        "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                        // Значение, с которым сравнивается выражение левой части.
                                        "value": "1F703F42-F7E8-4E3F-9B54-2B85F62EA507"
                                }
                        }]
                }
        },
        "qrtOriginalDoc": {
                // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон].
                "BindParameterEnabledqrtOriginalDoc": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство ENABLED.
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном
                        // случае массив содержит одно условие для определения, установлено ли значение.
                        "conditions": [{
                                // Выражение левой части условия.
                                "leftExpression": {
                                        // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
                                        // атрибут (колонка) модели представления.
                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                        // Название колонки модели представления, значение которой сравнивается в выражении.
                                        "attribute": "State"
                                },
                                // Тип операции сравнения.
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                // Выражение правой части условия.
                                "rightExpression": {
                                        // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает
                                        // константное значение.
                                        "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                        // Значение, с которым сравнивается выражение левой части.
                                        "value": "1F703F42-F7E8-4E3F-9B54-2B85F62EA507"
                                }
                        }]
                }
        }
}

Нравится

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

у меня такое правило вроде отрабатывает

"Number": {
    "BindParameterDisabledNumber": {
        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
        "property": BusinessRuleModule.enums.Property.ENABLED,
        "conditions": [{
            "leftExpression": {
                    "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                    "attribute": "State"
            },
            "comparisonType": Terrasoft.ComparisonType.NOT_EQUAL,
            "rightExpression": {
                    "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                    "value": "1f703f42-f7e8-4e3f-9b54-2b85f62ea507"
            }
        }]
    }
}

ВИдимо вы напутали с comparisonType

Добрый день, Максим.

Скорей всего, Вам стоит поменять comparisonType на Terrasoft.ComparisonType.NOT_EQUAL.

Также рекомендую Вам заменить бизнес правила на атрибут отвечающий за активность поля и менять его значение при изменении поля "Состояние". Это сделает код более читабельным и менее громоздким.

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