LookupUtilities - открытие страницы выбора объектов (bpmonline 7.2)
Добрый день.
Версия BPMOnline 7.2
Пытаюсь по пункту меню "Добавить" в детали открыть страницу выбора объектов.
В методе onClick пункта меню "Добавить" детали делаю так:
entitySchemaName: "BankingService",
columnName: "Name",
columns: ["ClientType"],
multiSelect: true
};
LookupUtilities.Open(
this.sandbox,
lookupConfig,
this.addBankingServiceItemsCallback,
this,
null,
false,
false
);
Однако при нажатии на пункт меню получаю бесконечно крутящийся значок "Загрузка" и ничего не происходит. В чем моя ошибка?
Буду благодарен за консультацию.
Нравится
Здравствуйте, Артем.
Предоставте полный листинг кода схемы для анализа.
Вот полный листинг кода детали
define('SynchronizedProductDetail', ['ext-base', 'terrasoft', 'SynchronizedProduct', 'SynchronizedProductDetailStructure', 'SynchronizedProductDetailResources', 'LookupUtilities'], function(Ext, Terrasoft, entitySchema, structure, resources, LookupUtilities) { var viewModel; structure.userCode = function() { this.entitySchema = entitySchema; this.name = 'SynchronizedProductDetailViewModel'; this.editPageName = 'SynchronizedProductPage'; this.columnsConfig = [ { cols: 10, key: [ { name: { bindTo: 'BankingService.Name' }, type: 'title' } ] } ]; this.loadedColumns = [ { columnPath: 'Id' }, { columnPath: 'BankingService' } ]; this.modifyUtilsButton = function(utilsButton) { var utilsMenuItems = utilsButton.menu.items; //NOTE: Change Select button caption utilsMenuItems[1].caption = "Выбрать продукты"; utilsMenuItems[1].enabled = {bindTo: "isProductChooseForSelection"}; utilsMenuItems[1].click = {bindTo: "selectBankingServiceItems"}; return utilsButton; }; this.methods.setEntitySchema = function() { this.entitySchema = entitySchema; }; this.methods.getSenderSandboxId = function() { return this.sandbox.id.replace('_detail_SynchronizedProduct', ''); }; this.methods.init = function() { viewModel = this; this.sandbox.subscribe("UpdateDetail", this.processUpdateDetailMessage, [this.getSenderSandboxId()]); }; this.methods.processUpdateDetailMessage = function(arg) { viewModel.set('isProductChooseForSelection', arg.param); }; this.methods.selectBankingServiceItems = function() { var lookupConfig = { entitySchemaName: "BankingService", columnName: "Name", columns: ["ClientType"], multiSelect: true }; LookupUtilities.Open( this.sandbox, lookupConfig, this.addBankingServiceItemsCallback, this, null, false, true ); }; this.methods.addBankingServiceItemsCallback = function(args) { console.log(args); }; }; return structure; });
Здравствуйте, Артем.
Метод "LookupUtilities.Open" пятым параметром принимает контейнер, в который будет производиться рендер. Он не может быть null. Сделайте printscreen ошибки в консоли браузера.
Добрый день. Проблема в том, что в консоли браузера нет ошибок. Скриншот прилагаю.
Метод "LookupUtilities.Open" должен выглядеть следующим образом:
LookupUtilities.Open(sandbox, lookup.config, this.addBankingServiceItemsCallback, this, this.renderTo);
Сергей, я смотрел значение свойства this.renderTo с помощью
console.log(this.renderTo)
оно равно в этом случае undefined
И я пытался сделать так, как вы написали - ничего не меняется.
Попробуйте передать в метод контейнер со страницы на которой расолагается деталь. В данном случае его можно получить используя sandbox.