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 комментариев

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

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

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

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.

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