Задать вопрос
@KTG

Как правильно проверить профиль группы доступа у пользователя?

Если внешний отчет, единственный на который надо ограничивать права.
Для этого создал пустой профиль групп доступа - "СуперДоступ".

В коде отчета, при открытии, нужно проверять назначен ли этот профиль пользователю или нет.
Пока делают так, запросом:

Запрос.Текст = "ВЫБРАТЬ
        			| ГруппыДоступа.Ссылка
    				|	ИЗ
        			| Справочник.ГруппыДоступа КАК ГруппыДоступа
    				|	ГДЕ
        			|		ГруппыДоступа.Пользователи.Пользователь = &ТекущийПользователь
        			|			И 
					|		ГруппыДоступа.Наименование = "СуперДоступ";
	Запрос.УстановитьПараметр("ТекущийПользователь", ПараметрыСеанса.ТекущийПользователь);


Насколько правильный подход к решению задачи?
Может есть какие-то встроенные команды?
  • Вопрос задан
  • 10795 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Судя по всему используется конфигурация на базе БСП. Может использовать штатные возможности подсистемы "Дополнительные отчеты и обработки"? Там можно поименно перечислить всех пользователей кому этот отчет будет доступен.
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
Внешний отчет не должен зависеть от имен профилей в конфигурации. Правильнее всего включить RLS, создать профиль с правом только на этот внешний отчет, а в остальных профилях, имеющих доступ ко внешним отчетам прописать "все, кроме этого".
Ответ написан
@fixin
Я использовал такой код:

Функция ЕстьПрофильДоступа(Пользователь, ИмяПрофиля) Экспорт
	УстановитьПривилегированныйРежим(Истина);
	Запрос = Новый Запрос();
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ГруппыДоступа.Ссылка КАК Ссылка,
	|	ГруппыДоступа.Профиль КАК Профиль
	|ИЗ
	|	Справочник.ГруппыДоступа КАК ГруппыДоступа
	|ГДЕ
	|	ГруппыДоступа.Пользователи.Пользователь = &Пользователь
	|	И ГруппыДоступа.Профиль.Наименование = &ИмяПрофиля";
	Запрос.УстановитьПараметр("ТекущийПользователь", Пользователь);
	Запрос.УстановитьПараметр("ИмяПрофиля", ИмяПрофиля);
	Выборка = Запрос.Выполнить().Выбрать();
	Возврат Выборка.Следующий();
		
КонецФункции
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы