Здравствуйте.
Подскажите как в замещающей схеме удалить бизнес правила на примере раздела активности.
Есть две предустановленные схемы Document.ActivityPageV2 и DocumentInOpportunity.ActivityPageV2 (замещают UIv2.ActivityPageV2) в них содержаться бизнес правила фильтрации по контрагенту, контакту и продаже.
Эти правила нужно убрать, вернее оставить только фильтрацию по контрагенту. Пока мои попытки ничего не дали, пробовал в своей замещающей схеме добавить бизнес правило с существующем названием и другим фильтром, но оно просто добавилось к остальным.
Нравится
Попробуйте заместить бизнес-правило, которое хотите отключить и проставить свойство enabled: false.
"Мотков Илья" написал:Попробуйте заместить бизнес-правило, которое хотите отключить и проставить свойство enabled: false.
Нет не помогло.
Пробовал полностью копировать исходный код и добавлять enabled: false, тоже не помогло. Получилось только изменить фильтр:
"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" } }
Т.е. фильтры по контакту и продажи изменил на фильтр по контрагенту, после этого они перестали работать. В принципе получилось то что нужно, но способ мне не нравиться, жаль нет атрибута enabled или что то вроде.
А если вместо правила надо вписать attributes с lookupListConfig, то у бизнес-правила всё равно приоритет выше :(
Как удалить бизнес-правило, чтобы срабатывал attributes?
Здравствуйте, Владимир!
Попробуйте следующий вариант:
getFilters: function() { var filters = this.callParent(arguments); filters.removeByKey("FiltrationDocumentByOpportunity"); return filters; }
спасибо, работает!
Кстати, только мне кажется нелогичным то, что в bpm есть отличная деталь ContactCareer, а повсюду Контакт фильтруется не по записям этой детали, а по полю Контрагент?
Здравствуйте!
ContactCareer - развязочная таблица. У одного контакта может быть несколько работ. По этой причине не совсем логично фильтровать именно по этой таблице.
"Демьяник Алексей" написал:ContactCareer - развязочная таблица. У одного контакта может быть несколько работ. По этой причине не совсем логично фильтровать именно по этой таблице.
В том-то и дело. И если один контакт работает у двух контрагентов, то вы его никогда не сможете привязать к заданию/счету/продаже и т.п., связанному с неосновным контрагентом
"Владимир Соколов" написал:В том-то и дело. И если один контакт работает у двух контрагентов, то вы его никогда не сможете привязать к заданию/счету/продаже и т.п., связанному с неосновным контрагентом
Здравствуйте!
В таком случае, можно отключить базовые правила:smile:
"Демьяник Алексей" написал:Попробуйте следующий вариант:
getFilters: function() {
var filters = this.callParent(arguments);
filters.removeByKey("FiltrationDocumentByOpportunity");
return filters;
}
знаете, как-то я поспешил... не работает это. поставил debugger - вижу, что функция getFilters совсем не вызывается
Здравствуйте, Владимир!
"Владимир Соколов" написал:знаете, как-то я поспешил... не работает это. поставил debugger - вижу, что функция getFilters совсем не вызывается
Вы добавили данный код код в секцию methods: {}?
"Демьяник Алексей" написал:Вы добавили данный код код в секцию methods: {}?
Да. Он должен срабатывать при открытии карточки?
В карточке не должен, метод getFilters справедлив для секции.
Попробуйте удалить нужные Вам объекты правил в момент инициализации карточки:
onEntityInitialized: function() { this.callParent(arguments); delete this.rules.Document.FiltrationDocumentByOpportunity; delete this.rules.Document.FiltrationDocumentByAccount; delete this.rules.Document.FiltrationDocumentByContact; },
"Щиголь Максим" написал: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 } }