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