Отображение полей в карточке по нескольким правилам отображения. BPMOnline 7.5

Добрый день!
Подскажите, пожалуйста, как для одного поля применить несколько правил отображения (в каждом правиле будет по несколько условий в массиве conditions). Т.к. если объявлено несколько правил отображения, то применяется только последнее правило.
И как реализовать правила отображения групп полей, Деталей и вкладок?

Нравится

10 комментариев

Здравствуйте, Игорь!
В таком случае, наверное лучше биндить параметр видимости на метод, который будет проводить необходимые вычисления и возвращать true или false. См. пример: http://www.community.terrasoft.ru/forum/topic/11983#comment-51919
У групп полей и деталей также есть свойство "visible".
Со вкладками сложнее - у них свойства "visible" нет, нужно либо добавлять css-свойство "display: none", либо динамически удалять/добавлять элементы коллекции "TabsCollection".

Нашел) только это 7.4.1

"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
				}
			}
		]
	}
}

чтобы правило работало на деталь или вкладку - вместо названия поля ("Result") пишите название детали

Спасибо, но в моём случае необходимы несколько
BusinessRuleModule.enums.Property.VISIBLE.
И к сожалению отрабатывает только последнее правило из массива.

так вы не несколько правил добавляйте, а несколько условий - как в правиле BindParameterRequiredResultToStatus

Я добавляю несколько правил BindParameterVisible, в которых в свою очередь в массиве conditions указываю по несколько условий.

вы добавляете несколько правил на одно свойство и ожидаете, что они как-то вместе будут работать?:exclaim: Даже если они как-то по очереди отработают, свойство-то одно и примет только одно, последнее значение

Вот это, к сожалению, и есть проблема, хотя при применении нескольких правил фильтрации поля, они вместе прекрасно отрабатывают. Придётся отказаться от использования rules и обратить свой взор на свойство visible. Спасибо за оказанное внимание

почему вы не можете сливать ваши несколько правил в одно с большим conditions?

Т.к. в каждом из правил есть по несколько condition'ов, объединённых
logical: Terrasoft.LogicalOperatorType.AND. Два параметра "logical" в одном правиле не применить. А в разных правилах присутствует условия, которые строятся на разных значениях одного поля + другое условие.

Единственное, что не пробовал - это передать в качестве элемента conditions массив условий.
Но думаю это ничего не даст.

да проще тогда методом)

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