Как запретить пользователю переключать интерфейс

1. alw-1 16.11.11 10:44 Сейчас в теме
Конфигурация бух корп. 82 , создал нового пользоателя с ограниченными правами и интерфейсом под эти права но в меню сервис - переключить интерфейс можно перейти в любой другой, закрыть все ограничением прав не получается. Кстаи не могу найти ,что это за обработка - переключить интерфейс(если запретить ее использование то это было бы решением). Одним словом - как запретить преключение интерфейса?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
15. DMLangepas 07.06.12 15:18 Сейчас в теме
(1) alw-1, а если в конфигураторе в тех или иных ролях открыть и указать, что менять интерфейсы не возможно?
2. vst 16.11.11 13:58 Сейчас в теме
Уберите из меню сервис данного интерфейса пункт "Переключить интерфейс". Это не обработка, это системная команда.
Или в роли данного пользователя запретите ему использование всех интерфейсов, кроме своего.
bimy22; CratosX; +2 Ответить
45. bimy22 01.04.19 20:53 Сейчас в теме
(2) Запрет на использование остальных интерфейсов помог.

Спасибо, огромное!
3. alenakrr 16.11.11 14:00 Сейчас в теме
удалить кнопку переключения из интерфейса "Общий" не вариант, потому либо отключить у роли "Общий" интерфейс в конфигураторе, либо возиться с коллекцией: Интерфейсы.ПереключитьИнтерфейс
4. alw-1 17.11.11 11:23 Сейчас в теме
vst пишет:
Уберите из меню сервис данного интерфейса пункт "Переключить интерфейс". Это не обработка, это системная команда.
Или в роли данного пользователя запретите ему использование всех интерфейсов, кроме своего.



1. Снял галочки со всех интерфейсов кроме данного в ролях.
2. Убрал пунк Сервис из главного меню.
Все равно при входе под соответствующим пользователем вижу Сервис- ПереключитьИнтерфейс нет запретов и все видно.
Может я что-то непонимаю, объясните.
5. Istur 1472 17.11.11 13:50 Сейчас в теме
(4) Данное подменю находится в интерфейсе "Общий". А на него имеют права роль "Пользователь", которая присваивается каждому пользователю информационной базы.
lgg; user1279577; +2 Ответить
6. alw-1 17.11.11 14:12 Сейчас в теме
(5) А как в таком случае все-таки запретить пользователю переходить в другие интрфейсы. Если и 1 и 2 пункты не работают? Ведь получается что из этих интерфейсов он может видеть то,что от него закрли.
7. ho0p 17.11.11 14:34 Сейчас в теме
(6) Почему не получается закрыть права на интерфейсы ?
8. alw-1 17.11.11 15:16 Сейчас в теме
(7) Снял галочки со всех интерфейсов кроме данного в ролях. Это не помогает запретить пользоваться другими интерфейсами, как можно еще ограничить права?
10. Ироида 8 05.05.12 09:31 Сейчас в теме
(8) alw-1, у Вас получилось решить этот вопрос? У меня такая же задача, чтобы пользователь не мог переключать интерфейсы
9. a_yastrebov 17.11.11 15:39 Сейчас в теме
Вообщем создаешь новый переключаемый интерфейс, так как тебе надо (его ты назначишь пользователю), также для пользователя создаешь новую роль (ее ты назначишь пользователю). Заходишь в эту роль, далее Общие->Интерфейсы и убираешь на против всех интерфейсов галку "использование", кроме своего созданного, либо же убираешь галку на против тех интерфейсов, в которых присутствует команда переключения интерфейса.
11. Miromaxv 05.05.12 18:55 Сейчас в теме
Сними права на остальные интерфейсы, и общий интерфейс отключи.
12. LeviN01 19 29.05.12 17:35 Сейчас в теме
В Упп такая беда тоже присутствует.

В программу нельзя войти если у тебя не стоит роль Пользователя.
1. Соответственно у всех пользователей есть эта роль.
2. У этой роли есть права на общий интерфейс, которая открывает выбор интерфейсов.
3. Закрываем доступ Роли пользователь к общему интерфейсу - имеем геморой с остальными пользователями, которым нужен этот функционал.
4. Вижу выход с созданием нового интерфейса по аналогии с общим и роли подобной "Пользователь".
5. Указываем в роли этот интерфейс и добавляем эту роль всем остальным пользователям. А тем кому не надо - не добавляем.

Как-то так.
umka2008; Teut_Vlad; acanta; +3 Ответить
21. websamson 306 14.02.14 05:20 Сейчас в теме
Столкнулся с проблемой, описанной в (12) - роль Пользователь обязательна для всех в УПП. Доработал решение из (14). Вот что получилось:
// уберем переключение интерфейсов для пользователей без права "РазрешитьПереключатьИнтерфейс"
//Добавил предопределенное значение "РазрешитьПереключатьИнтерфейс" в права пользователей, чтобы видеть непереключаемые интерфейсы (в т.ч. Общий) только кому надо
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

Если ПользовательИБ <> Неопределено
И (НЕ РольДоступна(Метаданные.Роли.ПолныеПрава))
И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено
Тогда

лМассивЗначенийПрава = УправлениеДопПравамиПользователей.ПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.РазрешитьПереключатьИнтерфейс, Ложь);
лРазрешитьПереключатьИнтерфейс = лМассивЗначенийПрава.Найти(Истина) <> Неопределено;
Если НЕ лРазрешитьПереключатьИнтерфейс Тогда

Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
ТекИнтерфейс.Переключаемый = Ложь;
ТекИнтерфейс.Видимость = Ложь;
КонецЦикла;

//Задействуем основной интерфейс пользователя
лОсновнойИнтерфейс = ГлавныйИнтерфейс[ПользовательИБ.ОсновнойИнтерфейс.Имя];
лОсновнойИнтерфейс.Переключаемый = Истина;
лОсновнойИнтерфейс.Видимость = Истина;

КонецЕсли;
КонецЕсли;
// уберем переключение интерфейсов для пользователей без права "РазрешитьПереключатьИнтерфейс"
user778500; vano-ekt; Азверин; vis_tmp; Matematik; Dmitrii D; +6 Ответить
13. SteelWalk 30.05.12 02:19 Сейчас в теме
Ну допустим интерфейсы как ни крути всё равно переключаются, поначалу я тоже не мог ничего сделать, а потом попробовал в запрещенном интерфейсе вызвать хотя бы какой нибудь документ - и оп ля - нарушение прав доступа....так что даже если интерфейс включился - пользователь ничего там сделать не может.....как то так пока сидим - никто не жалуется вроде :)
46. dblade 04.12.19 22:40 Сейчас в теме
(13)
допустим интерфейсы как ни крути всё равно переключаются, поначалу я тоже не мог ничего сделать, а потом попробовал в запрещенном интерфейсе вызвать хотя бы какой нибудь документ - и оп ля - нарушение прав доступа....так что даже если интерфейс включился - пользователь ничего там сделать не может.....ка


Это хорошо если вы на 100% уверены в том что в ролях у вас все обрезано верно. Если же нет - интерфейс без переключения роли как еще один барьер защиты при настройке прав доступа.
По теме - я ломал справочник пользователи. Добавлял свою роль пользователь(урезан) и убирал оттуда общий интейфейс. Не самое красивое решение т.к. пришлось еще в пару местах "сломать" стандарт но работает железобетонно.
14. virus-1c 07.06.12 11:11 Сейчас в теме
Привет, честной компании!
Ловите, вот вам решение проблемы!
Итак: Модуль обычного приложение
Процедура ПриНачалеРаботыСистемы()

//Алекс уберем переключение интерфейсов для пользователей с интерфейсом "УправлениеТорговлей"
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

Если ПользовательИБ <> Неопределено
И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено
И ПользовательИБ.ОсновнойИнтерфейс.Имя = "УправлениеТорговлей" Тогда

Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
ТекИнтерфейс.Переключаемый = Ложь;
ТекИнтерфейс.Видимость = Ложь;
КонецЦикла;

//Задействуем интерфейс "УправлениеТорговлей"
УправлениеТорговлей = ГлавныйИнтерфейс.УправлениеТорговлей;
УправлениеТорговлей.Переключаемый = Истина;
УправлениеТорговлей.Видимость = Истина;
КонецЕсли;
//Алекс уберем переключение интерфейсов для пользователей с интерфейсом "УправлениеТорговлей"

КонецПроцедуры
Drulya_brn; DIMon_ru; mingaleevn@mail.ru; cwant; kafesto; sanfoto; QuickMix; vano-ekt; acanta; bluntschi; izidakg; Thalt; ablent; albertik88; imbaZeratul; Leits; SkyJack; Andreyyy; ivan_luzinov; Papilion; Vit_Kherson; Dmitrii D; Uved; alex_4x; Oleg-and-reevich; vis_tmp; sanok; zhuravlev_as; websamson; kaa79; aharin; +31 Ответить
18. aharin 1 03.10.13 12:07 Сейчас в теме
(14) virus-1c, отличное решение!
24. ipoloskov 162 22.05.14 13:29 Сейчас в теме
1) Убрать доступ ко всем интерфейсам, кроме "Общий", у роли "Пользователь", и, если стоит такая задача, у роли "Полные права".
2) Создать роли "ДоступКИнтерфейсу_ххх" по числу интерфейсов. Установить доступ к соответствующим интерфейсам для этих ролей.
3) Раздать роли "ДоступКИнтерфейсу_ххх" пользователям.

Из неудобств: при обновлении, как правило, нужно повторно выполнять п.1

Решение (14), (21) не очень удобно, так как могут быть пользователи без доступа к полному интерфейсу, которым нужно работать в двух и более интерфейсах (например, кадровик-расчетчик или менеджер по продажам и закупкам)
25. neonis 1 22.05.14 13:45 Сейчас в теме
(24) ipoloskov,
Всё просто создай регистр доступные интерфейсы
Ресурс Пользователь
Ресурс Интерфейс строка
Значение доступ Булево

И проверку на Отказ о смене интерфейса.
Где не знаю, как знаю.
Если сами не найдёте могу код написать.)
26. zhuravlev_as 395 20.01.15 10:37 Сейчас в теме
(14) virus-1c, класс, работает. Не без вмешательства в код, конечно, но ограничился всего одной строчкой.
nles0202; +1 Ответить
38. KulSer 09.06.17 01:13 Сейчас в теме
Спасибо (14) (вирус 1с). Всё получилось, но обнаружился забавный побочный эффект.
Когда я даю команду Интерфейс.Переключаемый = Ложь, то отключается не только возможность смены интерфейса, но и пропадает меню Файл, меню Справка, а так же в меню Сервис отключается возможность запускать внешние обработки.
Интересно, это у меня одного так, или у других тоже?
У меня УПП 1.3 (1.3.15.1) .
39. Азверин 3 13.07.17 16:22 Сейчас в теме
(38) Да, пропадает всё это из-за отключения интерфейса "Общий". Так что решения (14) и (23) выглядят отличными только на первый взгляд.
16. Vitek84 22.05.13 09:50 Сейчас в теме
В программу нельзя войти если у тебя не стоит роль Пользователя.
1. Соответственно у всех пользователей есть эта роль.
2. У этой роли есть права на общий интерфейс, которая открывает выбор интерфейсов.
3. Закрываем доступ Роли пользователь к общему интерфейсу - имеем геморой с остальными пользователями, которым нужен этот функционал.
4. Вижу выход с созданием нового интерфейса по аналогии с общим и роли подобной "Пользователь".
5. Указываем в роли этот интерфейс и добавляем эту роль всем остальным пользователям. А тем кому не надо - не добавляем.

Для роли "Пользователь" проводится проверка на доступность роли в модулях. и отключать её нельзя. Так что создание аналогичной роли ни к чему не приведет. Я с "полными правами" такие эксперименты ставил - дохлый номер.
17. nikki_00 22.05.13 11:15 Сейчас в теме
Согласна с LeviN01, я этот вопрос решала так 1) создаем новый интерфейс по аналогии с общим и роль подобную "Пользователь", в общих модулях искала роль "Пользователь" и добавляла в код и роль подобную "Пользователь". 2) дабавила нужную роль пользователю с ограниченными правами и убрала у него роль "Пользователь".
19. AndrewM 28.11.13 10:59 Сейчас в теме
(17) сложность в том, что в модулях типовой конфигурации встречаются обращения к роли "Пользователь" непосредственно по имени роли. Т.е. придётся код править, если аналог этой роли создавать.
20. tanselja 4 01.12.13 13:23 Сейчас в теме
Мне помогло: создала новую роль, в интерфейсах убрала использование. Конфа Бп2.0
22. Famza 84 22.04.14 16:13 Сейчас в теме
Я бы сформулировал проблему иначе - как на неуправляемых формах сделать отображение только тех элементов интерфейсов доступ к которым пользователю разрешен, оставляя возможность переключения?
23. neonis 1 22.05.14 13:22 Сейчас в теме
Спасибо за ответ но я допилил для УТ 10.3
Суть если по умолчанию интерфейс не полный, то он переключить не сможет. Если полный то всё ок.
Так мне кажется гораздо лучше!
Это Благодаря строчек кода
ИмяИнт = ПользовательИБ.ОсновнойИнтерфейс.Имя;
Выполнить("УправлениеТорговлей = ГлавныйИнтерфейс."+ИмяИнт);


	ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
	
	ИмяИнт = ПользовательИБ.ОсновнойИнтерфейс.Имя;
	Если ПользовательИБ <> Неопределено
		И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено
		И ПользовательИБ.ОсновнойИнтерфейс.Имя <> "Полный" Тогда
		
		Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
			ТекИнтерфейс.Переключаемый = Ложь;
			ТекИнтерфейс.Видимость = Ложь;
		КонецЦикла;
		
		//Задействуем интерфейс Правильный интерфейс
		УправлениеТорговлей = Неопределено;
		Выполнить("УправлениеТорговлей = ГлавныйИнтерфейс."+ИмяИнт);
		УправлениеТорговлей.Переключаемый = Истина;
		УправлениеТорговлей.Видимость = Истина;
	КонецЕсли;
Показать
VladimirSpirin; Vit_Kherson; spetrov77; +3 Ответить
40. Азверин 3 14.07.17 10:00 Сейчас в теме
по совокупности советов сделал у себя следующее:
1. скопировал интерфейс Общий, удалил панель Интерфейсы, а в Главном меню из Сервис удалил Переключение интерфейсов.
2. добавил новую роль с одним лишь доступом к этому новому интерфейсу Общий_доп.
3. по пункту (23) добавил новое доп. право в ПланыВидовХарактеристик.ПраваПользователей.
4. по пункту (23) добавил кусок кода в конец процедуры ПриНачалеРаботыСистемы(), чуть его изменив.

Далее, если пользователю надо запретить переключать интерфейсы: добавить роль Общий_доп.
Если нужно оставить переключение: дать доп право на переключение интерфейса (роль не давать).
P.S. у пользователя должен быть указан какой-нибудь интерфейс.

	ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь(); 
	
	Если ПользовательИБ <> Неопределено 
		И (НЕ РольДоступна("ПолныеПрава")) 
		И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено 
		Тогда 
		
		МассивЗначенийПрава = УправлениеДопПравамиПользователей.ПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.РазрешитьПереключатьИнтерфейс, Ложь); 
		РазрешитьПереключатьИнтерфейс = МассивЗначенийПрава.Найти(Истина) <> Неопределено; 
		Если НЕ РазрешитьПереключатьИнтерфейс Тогда 
			
			Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл 
				ТекИнтерфейс.Переключаемый = Ложь; 
				ТекИнтерфейс.Видимость = Ложь; 
			КонецЦикла; 
			
			//Задействуем основной интерфейс пользователя 
			ОсновнойИнтерфейс = ГлавныйИнтерфейс[ПользовательИБ.ОсновнойИнтерфейс.Имя]; 
			ОсновнойИнтерфейс.Переключаемый = Истина; 
			ОсновнойИнтерфейс.Видимость = Истина; 
			
			//Задействуем интерфейс Общий без переключений
			ОбщийДопИнтерфейс = ГлавныйИнтерфейс.Общий_БезПереключения; 
			ОбщийДопИнтерфейс.Переключаемый = Истина; 
			ОбщийДопИнтерфейс.Видимость = Истина;
			
		КонецЕсли; 
	КонецЕсли;
Показать
Romakon92; acanta; +2 Ответить
41. KulSer 17.07.17 15:54 Сейчас в теме
(40) Протестировал Ваш совет. Всё работает проблем. Так что большое спасибо за почти универсальное решение. "Почти", потому что при обновлениях теперь придётся смотреть, не внесены ли изменения в интерфейс "Общий", и копировать эти изменения в интерфейс "ОбщийДопИнтерфейс". Но это уже так, мелочи. Ещё раз спасибо Вам и автору первоначальной идеи virus-1c.
42. Азверин 3 20.07.17 12:44 Сейчас в теме
(41) Забыл указать, что УПП 1.3. Полёт у себя в базе тоже нормальный.
Мы базу не обновляем, а так да. Успехов!
27. Tom1 6 12.05.15 16:32 Сейчас в теме
Как вариант, если таких интерфейсов много
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

	СписокИнтерфейсов = Новый СписокЗначений;
	СписокИнтерфейсов.Добавить(ГлавныйИнтерфейс.Интерфейс1, "Интерфейс1");
	СписокИнтерфейсов.Добавить(ГлавныйИнтерфейс.Интерфейс2, "Интерфейс2");
	СписокИнтерфейсов.Добавить(ГлавныйИнтерфейс.Интерфейс3, "Интерфейс3");
	Для Каждого ТекЗначениеИнтерфейса Из СписокИнтерфейсов Цикл
		Если ПользовательИБ <> Неопределено И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено И ПользовательИБ.ОсновнойИнтерфейс.Имя = ТекЗначениеИнтерфейса.Представление Тогда
			Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
				ТекИнтерфейс.Переключаемый = Ложь;
				ТекИнтерфейс.Видимость = Ложь;
			КонецЦикла;
			//Задействуем нужный интерфейс
			ИнтерфейсПользователя = ТекЗначениеИнтерфейса.Значение;
			ИнтерфейсПользователя.Переключаемый = Истина;
			ИнтерфейсПользователя.Видимость = Истина;
		КонецЕсли;
	КонецЦикла;	
Показать
28. medium 19.07.15 09:32 Сейчас в теме
Запрет пользователям с не типовыми ролями и ограниченными правами менять интерфейс.
1.Необходимой у нужной роли снять все галочки использование во всех интерфейсах, кроме интерфейса данной роли.
2.Необходимо в роли «пользователь» снять галочку использование со всех интерфейсов, кроме общий.
В результате кнопка сменить интерфейс будет доступна, но при попытке смены интерфейса будет выдаваться предупреждение о нарушении прав доступа
29. uus 23 01.09.15 11:22 Сейчас в теме
28 Можно по-подробнее: где именно делать эти манипуляции?
30. unoDosTres 01.09.15 12:23 Сейчас в теме
(29) uus, ну вроде он имел ввиду вот это, по корню конфигурации правой кнопкой мыши выбираете "все роли", далее спускаетесь в ощие там в интерфейсы и что нужно снимаете, и так по каждому интерфейсу(приложил скриншот), но лучше делать как в (14)




РолиИнтерфейсы
31. skif2002 28.02.16 18:24 Сейчас в теме
Решено! Убрать, запретить, удалить, отключить меню "Переключить интерфейс" и меню "Сервис". Меню "Сервис" не полностью, но с удалением пунктов, подменю которые существенно расширяют возможности для доступа к объектам конфигурации. Копируем "ИнтерфейсКассира" и роль "Кассир". Переименовываем кому как нравится. Для новой роли убираем права на другие интерфейсы и даем необходимые права на то что надо. Интерфейс тоже соответственно настраиваем под себя, элементы интерфейса. Назначаем нужному пользователю. Всё. Проверенно УТП.
32. MaximKor 20 26.02.17 15:23 Сейчас в теме
(31) а можно по подробнее пожалуйста, как "Убрать, запретить, удалить, отключить меню "Переключить интерфейс" и меню "Сервис"" ?
33. Xershi 1484 26.02.17 15:29 Сейчас в теме
(32) меню можно не запрещать, а вот доступ на интерфейс закрыть. Прописано это в ролях!
Управлять интерфейсом на ОФ программно нельзя. Некоторые умельцы писали обработку, которая заменит это меню и там уже фильтровали доступ кодом!
34. MaximKor 20 26.02.17 17:15 Сейчас в теме
(33) если я убираю все интерфейсы кроме своего в роли, то есть еще роль Пользователь... но я нашел как сделать так, чтобы запускалась без роли Пользователь, т.е. я захожу по нужным мне пользователем, с нужной мне ролью, где отмечено использовать только мой интерфейс и там пусто, нет вообще никаких интерфейсов
35. Xershi 1484 26.02.17 18:15 Сейчас в теме
(34) просто это меню находится в другом интерфейсе, вот и ничего нет.
36. MaximKor 20 26.02.17 19:45 Сейчас в теме
В общем, зашел в "Дополнительно" своего интерфейса, на закладке Интерфейсы нашел свой интерфейс, и поставил галочку Интерфейс: МойИнтерфейс: Переключить интерфейс. Потом в своем пользователе в основном интерфейсе поставил свой и всё взлетело. Кстати в моем случае речь о КА 1.1
not_found; +1 Ответить
47. Ироида 8 15.10.20 01:28 Сейчас в теме
(36) Сделала то же самое в Управление торговли 10.3 Меню Сервис исчезло, так что переключить интерфейс уже нельзя :) Кнопки Файл, Справка тоже исчезли, но они тоже не нужны для этой роли
48. Ироида 8 15.10.20 01:56 Сейчас в теме
(47) Добавлю, у Роли Пользователь снять флажок Использование в Общем интерфейсе
37. user768127 08.06.17 05:34 Сейчас в теме
Спасибо (14) "вирус 1с" за решение.
43. acanta 16.11.18 10:39 Сейчас в теме
Спасибо, очень помогло.
44. Romakon92 20.03.19 11:08 Сейчас в теме
Вот как я решил эту проблему:
УТ 10.3

1) Копируем интерфейс "Общий"
2) В копированном "Общем" удаляем подменю "Переключать интерфейс"
3) Копируем роль "МенеджерПоПродажам"(делал для продавцов)
4) В копированном "МенеджерПоПродажам" меняем интерфейс "Общий" со стандартного на изменённый.
5) В правах пользователя меняем роль с "МенеджерПоПродажам" на копированную роль
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот