LookupUtilities
Технические вопросы
7.x

LookupUtilities - открытие страницы выбора объектов (bpmonline 7.2)

Добрый день.

Версия BPMOnline 7.2

Пытаюсь по пункту меню "Добавить" в детали открыть страницу выбора объектов.

В методе onClick пункта меню "Добавить" детали делаю так:

                        var lookupConfig = {
                                entitySchemaName: "BankingService",
                                columnName: "Name",
                                columns: ["ClientType"],
                                multiSelect: true
                        };
                        LookupUtilities.Open(
                                this.sandbox,
                                lookupConfig,
                                this.addBankingServiceItemsCallback,
                                this,
                                null,
                                false,
                                false
                        );

Однако при нажатии на пункт меню получаю бесконечно крутящийся значок "Загрузка" и ничего не происходит. В чем моя ошибка?

Буду благодарен за консультацию.

Нравится

7 комментариев

Здравствуйте, Артем.

Предоставте полный листинг кода схемы для анализа.

Вот полный листинг кода детали

[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.

Показать все комментарии