Вопрос

Исчезает кнопка добавления записи в деталь

Исчезает кнопка добавления записи в деталь без редактируемого реестра, но если подключить ред.реестр все работает. И именно этот баг только у портальных пользователей. С супервизора и у сотрудников компании все нормально. Все доступы к обьекту разрешены, но кнопка добавления исчезает. 

При добавленной кнопки плюс принудительно и при нажатии выдает ошибку что не может получить страницу. 

Нравится

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

Баубек, а в консоли есть какие-то ошибки? Одно из двух, или кнопки нет, если ошибка возникла где-то в коде перед её отрисовкой, или дело действительно в правах. В схеме BaseGridDetailV2 в пакете NUI есть только одна явная проверка на портальность пользователя в функции getRecordRightsSetupMenuItemVisible, ещё несколько таких проверок есть в BaseGridDetailV2 в пакете SSP. Ещё права для портальных нужно задавать на каждый объект, добавляя их ещё в специальный справочник. В этой теме было очень похожее на Ваш вопрос поведение системы, так и не ясно, помогло ли добавление всех используемых объектов в справочник или дело было в чём-то другом.

Зверев Александр,

Здравствуйте, спасибо за ответ. В консоли ошибок нет, просто исчезает кнопка добавления записи. Я принудительно вывел кнопку добавления записи и тогда он выдает ошибку. В скриншоте к данному вопросу показано что переменнаю editPage равна значению undefined. В метод getOpenCardConfig передаются три аргумента и у рабочей детали второй аргумент "typeColumnValue" равна "00000000-0000-0000-00000000". А у детали с проблемой равна null. Я не понял в какой справочник добавлять права для редактирования/добавления записи.

Я имел в виду справочник «Список объектов доступных портальному пользователю», но туда добавляют не записи, а объекты. Возможно, у Вас там не всё, что связано с этой деталью, нет какого-то объекта справочного поля, на ней используемого?

И в обычной настройке прав права на операцию добавления по объекту этой детали должны быть явно даны для роли «Все пользователи портала».

Зверев Александр,

Дело в том что с редактируемым реестром все работает, если убрать ред.реестр то перестает работать и кнопка добавления исчезает. Я все права доступа к обьекту дал портальным пользователям. Но увы это не работает.

А на этой же детали в поднятой в облаке демке  тоже такое наблюдается? Это стандартная деталь или самодельная? Слишком мало информации, но, кажется, где-то нет какого-то права.

Зверев Александр,  

это среда разработки, Версия 7.15.1.1295, обьект и деталь кастомные

Все права выставлены, с ред.реестром все отлично работает. Без ред.реестра не работает и не отдает страницу редактирования записи.

Возможно, логика скрытия кнопки есть явно в одной из тех страниц, от которых наследуется Ваша. На скриншоте видно BaseGridDetailV2, в ней есть кнопка:

{
	"operation": "insert",
	"parentName": "Detail",
	"propertyName": "tools",
	"name": "AddRecordButton",
	"values": {
		"itemType": Terrasoft.ViewItemType.BUTTON,
		"click": {"bindTo": "addRecord"},
		"visible": {"bindTo": "getAddRecordButtonVisible"},
		"enabled": {"bindTo": "getAddRecordButtonEnabled"},
		"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
		"imageConfig": {"bindTo": "Resources.Images.AddButtonImage"},
		"clickDebounceTimeout": 1000
	}
},

За её видимость отвечает функция:

getAddRecordButtonVisible: function() {
	const isDetailEnabled = this.get("IsEnabled");
	if (isDetailEnabled === false) {
		return false;
	}
	const canEditMasterRecord = this.get("CanEditMasterRecord");
	if (this.Ext.isBoolean(canEditMasterRecord) && !canEditMasterRecord) {
		return false;
	}
	const editPages = this.getEditPages();
	const toolsVisible = this.getToolsVisible();
	const editPagesCount = editPages.getCount();
	return toolsVisible
		? ((editPagesCount === 1) || (this.getIsEditable() && (editPagesCount === 0)))
		: toolsVisible;
},

Возможно, при выполнении под портальной условие отрицательное из-за значений, которые возвращают this.getEditPages(),  this.getToolsVisible(), getIsEditable() или this.getEditPages().getCount(). Более точно можно выяснить, проведя в браузере отладку этой и вызываемых функций.

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