Нужно показывать действие по условию.
Сделал действие в карточке:
getActions: function() {
var actionMenuItems = this.callParent(arguments);
actionMenuItems.addItem(this.getButtonMenuItem({
"Caption": {"bindTo": "Resources.Strings.UsrFormContractCaption"},
"Tag": "FormContract",
"Visible": {"bindTo": "FormContractVisible"}
}));
return actionMenuItems;
},
FormContractVisible: function(){
var contract = this.get("UsrContract");
var state = this.get("Status")?this.get("Status").value:false;
if(!contract && state == Constants.OrderStatus.formation){
return true;
}else{
return false;
}
}
При режиме карточки всё отрабатывает отлично.
Далее добавил действие в Section.
getSectionActions: function(){
var actionMenuItems = this.callParent(arguments);
actionMenuItems.addItem(this.getButtonMenuItem({
"Caption": {"bindTo": "Resources.Strings.UsrFormContractCaption"},
"Tag": "FormContract",
"Visible": {"bindTo": "FormContractVisible"}
}));
return actionMenuItems;
},
FormContractVisible: function(){
var activeRow = this.getActiveRow();
if(!activeRow) return;
var Contract = UsrContract || activeRow.values.UsrContract;
var Status = Status || activeRow.values.Status.value;
if(!Contract && Status == Constants.OrderStatus.formation){
return true;
}else{
return false;
}
}
При режиме combined тоже всё стало отрабатывать. Но если в карточке изменить поле, например UsrContract то видимость уже не изменяется. Можно после сохранения карточки, например в функции onCardModuleResponse переинициализировать действия, но как это сделать не нашёл.
Подскажите как правильно реализовать задачу.
Версия 7.7