Удаление бизнес правил

Здравствуйте.

Подскажите как в замещающей схеме удалить бизнес правила на примере раздела активности.
Есть две предустановленные схемы Document.ActivityPageV2 и DocumentInOpportunity.ActivityPageV2 (замещают UIv2.ActivityPageV2) в них содержаться бизнес правила фильтрации по контрагенту, контакту и продаже.
Эти правила нужно убрать, вернее оставить только фильтрацию по контрагенту. Пока мои попытки ничего не дали, пробовал в своей замещающей схеме добавить бизнес правило с существующем названием и другим фильтром, но оно просто добавилось к остальным.

Нравится

18 комментариев

Попробуйте заместить бизнес-правило, которое хотите отключить и проставить свойство 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
   }
}

 

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