Здравствуйте.
Подскажите как в замещающей схеме удалить бизнес правила на примере раздела активности.
Есть две предустановленные схемы Document.ActivityPageV2 и DocumentInOpportunity.ActivityPageV2 (замещают UIv2.ActivityPageV2) в них содержаться бизнес правила фильтрации по контрагенту, контакту и продаже.
Эти правила нужно убрать, вернее оставить только фильтрацию по контрагенту. Пока мои попытки ничего не дали, пробовал в своей замещающей схеме добавить бизнес правило с существующем названием и другим фильтром, но оно просто добавилось к остальным.
Нравится
Попробуйте заместить бизнес-правило, которое хотите отключить и проставить свойство enabled: false.
"Мотков Илья" написал:Попробуйте заместить бизнес-правило, которое хотите отключить и проставить свойство enabled: false.
Нет не помогло.
Пробовал полностью копировать исходный код и добавлять enabled: false, тоже не помогло. Получилось только изменить фильтр:
[javascript]
"Document": {
"FiltrationDocumentByAccount": {
"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
"autocomplete": true,
"autoClean": true,
"baseAttributePatch": "Account",
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "Account"
},
"FiltrationDocumentByContact": {
"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
"autocomplete": true,
"autoClean": true,
"baseAttributePatch": "Account",
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "Account"
},
"FiltrationDocumentByOpportunity": {
"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
"autocomplete": true,
"autoClean": true,
"baseAttributePatch": "Account",
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "Account"
}
}
[/javascript]
Т.е. фильтры по контакту и продажи изменил на фильтр по контрагенту, после этого они перестали работать. В принципе получилось то что нужно, но способ мне не нравиться, жаль нет атрибута enabled или что то вроде.
А если вместо правила надо вписать attributes с lookupListConfig, то у бизнес-правила всё равно приоритет выше :(
Как удалить бизнес-правило, чтобы срабатывал attributes?
Здравствуйте, Владимир!
Попробуйте следующий вариант:
[csharp]
getFilters: function() {
var filters = this.callParent(arguments);
filters.removeByKey("FiltrationDocumentByOpportunity");
return filters;
}
[/csharp]
спасибо, работает!
Кстати, только мне кажется нелогичным то, что в bpm есть отличная деталь ContactCareer, а повсюду Контакт фильтруется не по записям этой детали, а по полю Контрагент?
Здравствуйте!
ContactCareer - развязочная таблица. У одного контакта может быть несколько работ. По этой причине не совсем логично фильтровать именно по этой таблице.
"Демьяник Алексей" написал:ContactCareer - развязочная таблица. У одного контакта может быть несколько работ. По этой причине не совсем логично фильтровать именно по этой таблице.
В том-то и дело. И если один контакт работает у двух контрагентов, то вы его никогда не сможете привязать к заданию/счету/продаже и т.п., связанному с неосновным контрагентом
"Владимир Соколов" написал:В том-то и дело. И если один контакт работает у двух контрагентов, то вы его никогда не сможете привязать к заданию/счету/продаже и т.п., связанному с неосновным контрагентом
Здравствуйте!
В таком случае, можно отключить базовые правила:smile:
"Демьяник Алексей" написал:Попробуйте следующий вариант:
getFilters: function() {
var filters = this.callParent(arguments);
filters.removeByKey("FiltrationDocumentByOpportunity");
return filters;
}
знаете, как-то я поспешил... не работает это. поставил debugger - вижу, что функция getFilters совсем не вызывается
Здравствуйте, Владимир!
"Владимир Соколов" написал:знаете, как-то я поспешил... не работает это. поставил debugger - вижу, что функция getFilters совсем не вызывается
Вы добавили данный код код в секцию methods: {}?
"Демьяник Алексей" написал:Вы добавили данный код код в секцию methods: {}?
Да. Он должен срабатывать при открытии карточки?
В карточке не должен, метод getFilters справедлив для секции.
Попробуйте удалить нужные Вам объекты правил в момент инициализации карточки:
[javascript]
onEntityInitialized: function() {
this.callParent(arguments);
delete this.rules.Document.FiltrationDocumentByOpportunity;
delete this.rules.Document.FiltrationDocumentByAccount;
delete this.rules.Document.FiltrationDocumentByContact;
},
[/javascript]
"Щиголь Максим" написал:delete this.rules.Document.FiltrationDocumentByOpportunity;
Как я понимаю, Document - это название поля.
В моём случае
this.callParent(arguments);
delete this.rules.Contact.FiltrationContactByAccount;
ошибок никаких не получил, но и правило не деактивизировалось...
Здравствуйте, Владимир! Попробуйте способ:
"#название правила#": {
"ruleType": 999
}
"Демьяник Алексей" написал:Попробуйте способ, описанный в этом комментарии.
Да, так правило отключается. Вроде, всё работает правильно :)
Можно заносить в Knowledge base
Владимир Соколов пишет:
Да, так правило отключается. Вроде, всё работает правильно :)Можно заносить в Knowledge base
Можно где то увидеть решение? Ссылка на комментарий по которому автор узнал решение не работает. В данной теме решение из комментария не продублировано.
Добавить комментарий
Evgi1980 пишет:
Можно где то увидеть решение? Ссылка на комментарий по которому автор узнал решение не работает. В данной теме решение из комментария не продублировано.
//Удаление\отключение бизнес правил:
"#название правила#": {
"ruleType": 999
}
//Пример:
"Opportunity":{
"FiltrationOpportunityByContact": {
"ruleType": 999
}
}