Технические вопросы
7.x

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

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

Нравится

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

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

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

[javascript]
{
"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
}
},
[/javascript]

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

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

[javascript]
"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"
}
}
]
},
[/javascript]

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

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

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

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

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

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

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

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

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

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

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

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

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