Здравствуйте, есть ли возможность у портального пользователя удалять прикрепленные файлы в обращениях (вкладка обработка)?

 

Нравится

2 комментария

Добрый день, 

 

Подскажите пожалуйста какой портал имеется в виду: self-service или success?

 

Ожидаю ответ, 

Игорь

Здравствуйте, немного не понимаю разницы, но вероятно, что self-service

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

Всем привет,

Есть кусок кода, который корректно работает в системе:

var hash = NetworkUtilities.getEntityUrl("SomeObject", record.get("SomeObject.Id"));
this.sandbox.publish("PushHistoryState", {hash: hash});

Но в портале самообслуживания hash получается пустым и ничего не происходит. У пользователя есть доступ к объекту - он видит записи если открыть их напрямую (объект прописан в справочниках доступа объектов для портальных пользователей).

Кто-нибудь может подсказать в чем может быть проблема и как заставить работать код в портале?

Нравится

5 комментариев
Лучший ответ

Проверьте что у пользователей портала есть права на доступ к объекту (хотя бы на чтение), а так же что ваш объект добавлен в справочник  [Список объектов, доступных пользователям портала]  и что нужные колонки указаны а справочнике [Список доступных полей объектов на портале]

При необходимости внесите изменения, сбросьте рэдис и перезайдите в систему.

Код этой функции getEntityUrl можно открыть в конфигурации, в схеме NetworkUtilities:

/**
 * Creates a relative URL to open the card of the entity.
 * @throws {Terrasoft.ArgumentNullOrEmptyException} Throws an exception if not specified the schema name or
 * the entity ID.
 * @inheritdoc NetworkUtilities#getEntityConfigUrl
 */
getEntityUrl: function(config) {
	if (arguments.length > 1) {
config = {
	entitySchema: arguments[0],
	primaryColumnValue: arguments[1],
	typeColumnValue: arguments[2],
	operation: arguments[3]
};
	}
	let url = "";
	var entityConfig = this.getEntityConfigUrl(config);
	if (entityConfig) {
url = Terrasoft.combinePath(
	entityConfig.cardModule,
	entityConfig.cardSchema,
	entityConfig.operation,
	entityConfig.primaryColumnValue
);
	}
	return url;
},

А она вызывает getEntityConfigUrl:

/**
 * Creates a configuration object values for the U R L to a card entity.
 * @throws {Terrasoft.ArgumentNullOrEmptyException} Throws an exception if not specified
 * the schema name or the entity ID.
 * @param {Object} config Config object.
 * @param {String} config.entitySchema The name or ID of the schema entity.
 * @param {String} [config.entitySchemaName] The name of the schema entity. Alias for @entitySchema.
 * @param {String} config.primaryColumnValue The entity identifier.
 * @param {String} [config.typeColumnValue] The value of the column type.
 * @param {String} [config.typeId] The value of the column type. Alias for @typeColumnValue.
 * @param {String} [config.operation] Operation.
 * @return {Object} Returns the configuration object values for the U R L to a card entity.
 */
getEntityConfigUrl: function(config) {
	const configArg = arguments.length === 1;
	const entitySchema = configArg ? config.entitySchema || config.entitySchemaName : arguments[0];
	const primaryColumnValue = configArg ? config.primaryColumnValue : arguments[1];
	const typeColumnValue = configArg ? config.typeColumnValue || config.typeId : arguments[2];
	const operation = configArg ? config.operation : arguments[3];
	var entitySchemaName = Terrasoft.isGUID(entitySchema)
? this.getEntitySchemaName(entitySchema)
: entitySchema;
	if (!entitySchemaName) {
throw Ext.create("Terrasoft.ArgumentNullOrEmptyException");
	}
	var moduleStructure = Terrasoft.ModuleUtils.getModuleStructureByName(entitySchemaName);
	var entityStructure = Terrasoft.ModuleUtils.getEntityStructureByName(entitySchemaName);
	if (!entityStructure && !moduleStructure) {
return null;
	}
	var pages = entityStructure.pages;
	if (typeColumnValue && moduleStructure && moduleStructure.attribute && !Ext.isEmpty(pages)) {
var typePage = Terrasoft.where(pages, {"UId": typeColumnValue});
pages = Ext.isEmpty(typePage) ? pages : typePage;
	}
	var cardModule = moduleStructure && moduleStructure.cardModule ? moduleStructure.cardModule : "CardModuleV2";
	var cardSchema = pages[0].cardSchema;
	var configUrl = {
cardModule: cardModule,
cardSchema: cardSchema,
entitySchemaName: entitySchemaName,
operation: operation || Terrasoft.ConfigurationEnums.CardOperation.EDIT,
primaryColumnValue: primaryColumnValue
	};
	return configUrl;
},

Вероятно, в ней выполнение идёт по ветви, которая возвращает null. Попробуйте у себя отладить JS в браузере, чтобы выяснить, чего именно на портале не хватает и можно ли это обойти, модифицировав скрипт.

Проверьте что у пользователей портала есть права на доступ к объекту (хотя бы на чтение), а так же что ваш объект добавлен в справочник  [Список объектов, доступных пользователям портала]  и что нужные колонки указаны а справочнике [Список доступных полей объектов на портале]

При необходимости внесите изменения, сбросьте рэдис и перезайдите в систему.

Григорий Чех,

Спасибо за ответ.

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

Тёскин Дмитрий Валерьевич,

Тогда только отлаживатся и смотреть почему возращает пусто или сделать костыль (для портала зашить нужный url)

Ещё точнее, на портале в JS объект Terrasoft.configuration.ModuleStructure содержит только 3 стандартных портальных раздела, и для SomeObject функция ничего не возвращает. Посмотреть наполнение на портале и в обычной системе можно, введя в консоли браузера Terrasoft.configuration.ModuleStructure.

Логика наполнения списка реализована в C#-схеме ConfigurationSectionHelper.

Вероятно, если не прибегать к хакам, поможет добавление на портал этого раздела.

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

Есть процесс, который при добавлении "Обращения" его изменяет и устанавливает "Группу ответственных".

Так вот если обращение создал портальный пользователь то данное поле не заполняется, как так?

Нравится

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

Добрый день, Евгений!
 

Речь о базовом процессе или о каком-то вашем кастомном? Если о кастомном, то нужно, как минимум, посмотреть на него. Можете выложить схему или скриншоты здесь, или обратится для анализа в техническую поддержку на адрес support@terrasoft.ru 

Адасюк Валерий Викторович,

Кастомный. Там все просто и тривиально, читаем обращение если оно соответсвует фильтру, то измени его.

Грубо говоря.
старт процесса добавлена запись. Далее читаем добавленное обращение, читаем сервис (который в обращении проставлен), читаем сервисных инженеров (которые в сервисе), и изменяем обращение (устанавливаем группу ответсвенных). Все до жути просто и тривиально
Под всеми работает, а под порталом не работает.

Евгений.,

А процесс вообще запускается? Поля, на основании которых должна быть установлена группа ответственных Сервис и сервисный договор заполнены в обращении? С какой ошибкой падает процесс (в логе можно посмотреть)? На каком элементе останавливается?

Адасюк Валерий Викторович,

он без ошибок падает, все выполняется. Но под портальным пользователем не заполняется поле, хоть и процесс пишет что все ок.

Евгений.,

В таком случае нужен доступ на среду с данным процессом для выявления причин. Напишите запрос на 

 support@terrasoft.ru с описанием проблемы и рамках технической поддержки проблема будет проанализирована и решена.

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

Добрый день, Не могу скрыть для просмотра записи: Задержка... (выделенно красным на рисунке).
Вход из-под портального Пользователя. Версия Сервис деск, 7.7
Кто нибудь решал такую задачу?
Спасибо.

Нравится

1 комментарий

Здравствуйте!

Вам необходимо сделать операцию remove для элементов SolutionCaptionContainer и ResponseCaptionContainer в схеме PortalCasePage.

Это можно сделать только кодом.

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