Создал для контрагента действие:
var actionMenuItems = this.callParent(arguments);
actionMenuItems.addItem(this.getActionsMenuItem({
"Caption": { "bindTo": "Resources.Strings.SxActionOpportunity" },
"Enabled": { bindTo: "isClient" },
methodName: "runOpportunityManagement"
}));
return actionMenuItems;
},
Действие должно быть активно только для контрагента с типом Клиент или Потенциальный клиент. Написал метод:
var type = this.get("Type");
if(type) {
type = type.value;
}
if(type === Home32Constants.Account.Type.Client || type === Home32Constants.Account.Type.PotencialClient){
return true;
}else{
return false;
}
},
Функция возвращает "true" а действие всё-равно не активно. А вот если закрыть левую панель(там где список записей раздела) и обновить страничку - всё отрабатывает как нужно.
Та же ошибка наблюдается и с Caption. Если открыта панель, то Caption пустой, а если закрыта - всё ок.
Я так понимаю если открыта эта панель система считает, что пользователь находится в разделе...
Вопрос с Caption решается добавлением Strings в Section раздела, а вот как быть с Enabled не понятно.
Нравится
Добрый день, Вячеслав!
Код должен отрабатывать, на первый взгляд ошибок нет.
Скорее всего ошибка в чем-то другом.
Я Вам написал личное сообщения для продолжения анализа возникшей ошибки.
В версии 7,4 удалось решить проблему таким образом:
initCardActionHandler: function() { this.callParent(arguments); var propertyNames = [ "isClient" ]; this.Terrasoft.each(propertyNames, function(propertyName) { this.on("change:" + propertyName, function(model, value) { this.sandbox.publish("CardChanged", { key: propertyName, value: value }, [this.sandbox.id]); }, this); }, this); },
В следующем проекте уже на версии 7.5 стоит похожая задача, но данное решение уже не помогает.
В версии 7.5 такое решение тоже будет работать если isClient будет свойством, а не функцией. Для того, чтоб все работало, нужно в Карточке сделать isClient и уже к нему байндить "Enabled" действия.
Да. Действительно если биндиться на свойство всё отрабатывает. Спасибо!