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
);
Однако при нажатии на пункт меню получаю бесконечно крутящийся значок "Загрузка" и ничего не происходит. В чем моя ошибка?
Буду благодарен за консультацию.
Нравится
Здравствуйте, Артем.
Предоставте полный листинг кода схемы для анализа.
Вот полный листинг кода детали
[javascript]
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;
});
[/javascript]
Здравствуйте, Артем.
Метод "LookupUtilities.Open" пятым параметром принимает контейнер, в который будет производиться рендер. Он не может быть null. Сделайте printscreen ошибки в консоли браузера.
Добрый день. Проблема в том, что в консоли браузера нет ошибок. Скриншот прилагаю.
Метод "LookupUtilities.Open" должен выглядеть следующим образом:
[javascript]
LookupUtilities.Open(sandbox, lookup.config, this.addBankingServiceItemsCallback, this, this.renderTo);
[/javascript]
Сергей, я смотрел значение свойства this.renderTo с помощью
[javascript]
console.log(this.renderTo)
[/javascript]
оно равно в этом случае undefined
И я пытался сделать так, как вы написали - ничего не меняется.
Попробуйте передать в метод контейнер со страницы на которой расолагается деталь. В данном случае его можно получить используя sandbox.