Отображение полей в карточке по нескольким правилам отображения. BPMOnline 7.5
Добрый день!
Подскажите, пожалуйста, как для одного поля применить несколько правил отображения (в каждом правиле будет по несколько условий в массиве conditions). Т.к. если объявлено несколько правил отображения, то применяется только последнее правило.
И как реализовать правила отображения групп полей, Деталей и вкладок?
Нравится
Здравствуйте, Игорь!
В таком случае, наверное лучше биндить параметр видимости на метод, который будет проводить необходимые вычисления и возвращать true или false. См. пример: http://www.community.terrasoft.ru/forum/topic/11983#comment-51919
У групп полей и деталей также есть свойство "visible".
Со вкладками сложнее - у них свойства "visible" нет, нужно либо добавлять css-свойство "display: none", либо динамически удалять/добавлять элементы коллекции "TabsCollection".
Нашел) только это 7.4.1
[javascript]
"Result": {
"BindParameterEnabledResultToStatus": {
"ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
"property": BusinessRuleModule.enums.Property.ENABLED,
"conditions": [
{
"leftExpression": {
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "Status",
"attributePath": "Finish"
},
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"rightExpression": {
"type": BusinessRuleModule.enums.ValueType.CONSTANT,
"value": true
}
}
]
},
"BindParameterRequiredResultToStatus": {
"ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
"property": BusinessRuleModule.enums.Property.REQUIRED,
"logical": Terrasoft.LogicalOperatorType.AND,
"conditions": [
{
"leftExpression": {
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "Status",
"attributePath": "Finish"
},
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"rightExpression": {
"type": BusinessRuleModule.enums.ValueType.CONSTANT,
"value": true
}
},
{
"leftExpression": {
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "IsProcessMode"
},
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"rightExpression": {
"type": BusinessRuleModule.enums.ValueType.CONSTANT,
"value": true
}
}
]
}
}
[/javascript]
чтобы правило работало на деталь или вкладку - вместо названия поля ("Result") пишите название детали
Спасибо, но в моём случае необходимы несколько
BusinessRuleModule.enums.Property.VISIBLE.
И к сожалению отрабатывает только последнее правило из массива.
так вы не несколько правил добавляйте, а несколько условий - как в правиле BindParameterRequiredResultToStatus
Я добавляю несколько правил BindParameterVisible, в которых в свою очередь в массиве conditions указываю по несколько условий.
вы добавляете несколько правил на одно свойство и ожидаете, что они как-то вместе будут работать?:exclaim: Даже если они как-то по очереди отработают, свойство-то одно и примет только одно, последнее значение
Вот это, к сожалению, и есть проблема, хотя при применении нескольких правил фильтрации поля, они вместе прекрасно отрабатывают. Придётся отказаться от использования rules и обратить свой взор на свойство visible. Спасибо за оказанное внимание
почему вы не можете сливать ваши несколько правил в одно с большим conditions?
Т.к. в каждом из правил есть по несколько condition'ов, объединённых
logical: Terrasoft.LogicalOperatorType.AND. Два параметра "logical" в одном правиле не применить. А в разных правилах присутствует условия, которые строятся на разных значениях одного поля + другое условие.
Единственное, что не пробовал - это передать в качестве элемента conditions массив условий.
Но думаю это ничего не даст.