Версия BPMOnline 7.2
Простая задача: в зависимости от чекбокса на основной карточке разрешить или запретить добавление элементов в деталь.
1. В коде основной карточки:
добавим чекбокс на страницу
{
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'IsProductChoose',
columnPath: 'IsProductChoose',
dataValueType: Terrasoft.DataValueType.BOOLEAN,
visible: true,
customConfig: {
click: {
bindTo: "IsProductChooseClicked"
}
}
}
обработчик изменения чекбокса
this.methods.IsProductChooseClicked = function() {
var args = {
param: this.get("IsProductChoose")
};
sandbox.publish(
"IsProductChooseChanged",
args,
[sandbox.id]
);
};
2. В коде детали:
изменим конфиг выпадающего меню
this.modifyUtilsButton = function(utilsButton) {
var utilsMenuItems = utilsButton.menu.items;
utilsMenuItems[1].caption = "Выбрать продукты";
utilsMenuItems[1].enabled = {bindTo: "isProductChooseForSelection"};
return utilsButton;
};
обработчик "включить/выключить пункт меню"
this.methods.isProductChooseForSelection = function() {
this.sandbox.subscribe("IsProductChooseChanged", function(arg) {
console.log(arg);
}, this, [this.getSenderSandboxId()]);
};
this.methods.getSenderSandboxId = function() {
return this.sandbox.id.replace('_detail_SynchronizedProduct', '');
};
Однако при открытии карточки получаю ошибку в консоли браузера:
Uncaught Terrasoft.UnsupportedTypeException: Message IsProductChooseChanged is not defined in undefined module
К сожалению в документации не описано как работать с событиями через sandbox.
Буду благодарен за консультацию.