Как переопределить логику отображения поля в добавленных карточках?

Добрый день.
В мастере разделов «Активности» создали две новые страницы. Для того чтобы новые страницы имели вид и функционал стандартной ActivityPageV2 мы создали "Схемы модели представления карточек". Все работает если не одно но. В базовой логике схемы ActivityPageV2 указана видимость поля "Категория" только при выбранном типе "Задача". Можете помочь и написать детально, как переопределить логику отображения данного поля в добавленных карточках так чтобы поле "Категория" отображалось на страницах с новыми типами?

Нравится

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

Здравствуйте, Виталий.

Вам стоит смотреть в сторону замещения логики из ActivityPageV2(UIv2). В частности, обратите на следующий код:

{
	"operation": "insert",
	"parentName": "Header",
	"propertyName": "items",
	"name": "ActivityCategory",
	"values": {
		"bindTo": "ActivityCategory",
		"layout": {"column": 12, "row": 4, "colSpan": 12},
		"visible": {
			"bindTo": "Type",
			"bindConfig": {
				"converter": "getVisibleCategoryByType"
			}
		},
		"contentType": Terrasoft.ContentType.ENUM
	}
},

Если кратко, видимость поля зависит от значения поля Type, которое затем обрабатывается методом getVisibleCategoryByType.

также в данной схеме есть следующее правило видимости:

"BindParameterVisibleActivityCategoryToType": {
						"ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
						"property": BusinessRuleModule.enums.Property.VISIBLE,
						"conditions": [
							{
								"leftExpression": {
									"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
									"attribute": "Type"
								},
								"comparisonType": Terrasoft.ComparisonType.EQUAL,
								"rightExpression": {
									"type": BusinessRuleModule.enums.ValueType.CONSTANT,
									"value": "fbe0acdc-cfc0-df11-b00f-001d60e938c6"
								}
							}
						]
					},

Фактически оно дублирует логику видимости, описанную в самом поле.

Так же обратите внимание на метод setActivityCategory.

Спасибо, Илья!
Получилось вывести поле категория на новую страницу активности (В Схему модели представления новой карточки прописал правило где поменял "value": на ID типа в котором не отображалось поле, надеюсь, ничего не напутал там). Но теперь проблема в setActivityCategory. Метод видит, что тип страницы не "Задача" и устанавливает его "Звонок" причем справочник даже не открывается. Я только начал работать в bpm и еще очень "зеленый". Если Вам не трудно, можете детально описать, как можно это исправить?

upd: в Схему модели представления новой карточки добавил строчку

methods: {
setActivityCategory: function() {},
},

Категория проставляется согласно "Значение по умолчанию" в конфигурации. Но справочник не открывается.

Значения не отображаются по причине фильтрации. Сам код фильтрации:

"FiltrationActivityCategoryByActivityType": {
	"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
	"baseAttributePatch": "ActivityType",
	"comparisonType": Terrasoft.ComparisonType.EQUAL,
	"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
	"attribute": "Type"
}

Если кратко, то отображаются только те Категории активностей, у которых в колонке ActivityType стоит тип активности, который имеет карточка. Для исправления необходимо или добавить дублирующие записи в справочник ActivityCategory и указать созданные типы активностей. Или же добавить в карточке следующее правило:

"ActivityCategory": {
	"FiltrationActivityCategoryByActivityType": {
		"ruleType": 999,
		"baseAttributePatch": "ActivityType",
		"comparisonType": Terrasoft.ComparisonType.EQUAL,
		"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
		"attribute": "Type"
	}
}

Так же в define необходимо добавить зависимость от BusinessRuleModule

Огромное спасибо!

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