Конфигурация бух корп. 82 , создал нового пользоателя с ограниченными правами и интерфейсом под эти права но в меню сервис - переключить интерфейс можно перейти в любой другой, закрыть все ограничением прав не получается. Кстаи не могу найти ,что это за обработка - переключить интерфейс(если запретить ее использование то это было бы решением). Одним словом - как запретить преключение интерфейса?
Уберите из меню сервис данного интерфейса пункт "Переключить интерфейс". Это не обработка, это системная команда.
Или в роли данного пользователя запретите ему использование всех интерфейсов, кроме своего.
удалить кнопку переключения из интерфейса "Общий" не вариант, потому либо отключить у роли "Общий" интерфейс в конфигураторе, либо возиться с коллекцией: Интерфейсы.ПереключитьИнтерфейс
vst пишет:
Уберите из меню сервис данного интерфейса пункт "Переключить интерфейс". Это не обработка, это системная команда.
Или в роли данного пользователя запретите ему использование всех интерфейсов, кроме своего.
1. Снял галочки со всех интерфейсов кроме данного в ролях.
2. Убрал пунк Сервис из главного меню.
Все равно при входе под соответствующим пользователем вижу Сервис- ПереключитьИнтерфейс нет запретов и все видно.
Может я что-то непонимаю, объясните.
(4) Данное подменю находится в интерфейсе "Общий". А на него имеют права роль "Пользователь", которая присваивается каждому пользователю информационной базы.
(5) А как в таком случае все-таки запретить пользователю переходить в другие интрфейсы. Если и 1 и 2 пункты не работают? Ведь получается что из этих интерфейсов он может видеть то,что от него закрли.
(7) Снял галочки со всех интерфейсов кроме данного в ролях. Это не помогает запретить пользоваться другими интерфейсами, как можно еще ограничить права?
Вообщем создаешь новый переключаемый интерфейс, так как тебе надо (его ты назначишь пользователю), также для пользователя создаешь новую роль (ее ты назначишь пользователю). Заходишь в эту роль, далее Общие->Интерфейсы и убираешь на против всех интерфейсов галку "использование", кроме своего созданного, либо же убираешь галку на против тех интерфейсов, в которых присутствует команда переключения интерфейса.
В программу нельзя войти если у тебя не стоит роль Пользователя.
1. Соответственно у всех пользователей есть эта роль.
2. У этой роли есть права на общий интерфейс, которая открывает выбор интерфейсов.
3. Закрываем доступ Роли пользователь к общему интерфейсу - имеем геморой с остальными пользователями, которым нужен этот функционал.
4. Вижу выход с созданием нового интерфейса по аналогии с общим и роли подобной "Пользователь".
5. Указываем в роли этот интерфейс и добавляем эту роль всем остальным пользователям. А тем кому не надо - не добавляем.
Столкнулся с проблемой, описанной в (12) - роль Пользователь обязательна для всех в УПП. Доработал решение из (14). Вот что получилось:
// уберем переключение интерфейсов для пользователей без права "РазрешитьПереключатьИнтерфейс"
//Добавил предопределенное значение "РазрешитьПереключатьИнтерфейс" в права пользователей, чтобы видеть непереключаемые интерфейсы (в т.ч. Общий) только кому надо
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
Если ПользовательИБ <> Неопределено
И (НЕ РольДоступна(Метаданные.Роли.ПолныеПрава))
И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено
Тогда
лМассивЗначенийПрава = УправлениеДопПравамиПользователей.ПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.РазрешитьПереключатьИнтерфейс, Ложь);
лРазрешитьПереключатьИнтерфейс = лМассивЗначенийПрава.Найти(Истина) <> Неопределено;
Если НЕ лРазрешитьПереключатьИнтерфейс Тогда
Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
ТекИнтерфейс.Переключаемый = Ложь;
ТекИнтерфейс.Видимость = Ложь;
КонецЦикла;
Ну допустим интерфейсы как ни крути всё равно переключаются, поначалу я тоже не мог ничего сделать, а потом попробовал в запрещенном интерфейсе вызвать хотя бы какой нибудь документ - и оп ля - нарушение прав доступа....так что даже если интерфейс включился - пользователь ничего там сделать не может.....как то так пока сидим - никто не жалуется вроде :)
допустим интерфейсы как ни крути всё равно переключаются, поначалу я тоже не мог ничего сделать, а потом попробовал в запрещенном интерфейсе вызвать хотя бы какой нибудь документ - и оп ля - нарушение прав доступа....так что даже если интерфейс включился - пользователь ничего там сделать не может.....ка
Это хорошо если вы на 100% уверены в том что в ролях у вас все обрезано верно. Если же нет - интерфейс без переключения роли как еще один барьер защиты при настройке прав доступа.
По теме - я ломал справочник пользователи. Добавлял свою роль пользователь(урезан) и убирал оттуда общий интейфейс. Не самое красивое решение т.к. пришлось еще в пару местах "сломать" стандарт но работает железобетонно.
Привет, честной компании!
Ловите, вот вам решение проблемы!
Итак: Модуль обычного приложение
Процедура ПриНачалеРаботыСистемы()
//Алекс уберем переключение интерфейсов для пользователей с интерфейсом "УправлениеТорговлей"
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
Если ПользовательИБ <> Неопределено
И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено
И ПользовательИБ.ОсновнойИнтерфейс.Имя = "УправлениеТорговлей" Тогда
Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
ТекИнтерфейс.Переключаемый = Ложь;
ТекИнтерфейс.Видимость = Ложь;
КонецЦикла;
1) Убрать доступ ко всем интерфейсам, кроме "Общий", у роли "Пользователь", и, если стоит такая задача, у роли "Полные права".
2) Создать роли "ДоступКИнтерфейсу_ххх" по числу интерфейсов. Установить доступ к соответствующим интерфейсам для этих ролей.
3) Раздать роли "ДоступКИнтерфейсу_ххх" пользователям.
Из неудобств: при обновлении, как правило, нужно повторно выполнять п.1
Решение (14), (21) не очень удобно, так как могут быть пользователи без доступа к полному интерфейсу, которым нужно работать в двух и более интерфейсах (например, кадровик-расчетчик или менеджер по продажам и закупкам)
Спасибо (14) (вирус 1с). Всё получилось, но обнаружился забавный побочный эффект.
Когда я даю команду Интерфейс.Переключаемый = Ложь, то отключается не только возможность смены интерфейса, но и пропадает меню Файл, меню Справка, а так же в меню Сервис отключается возможность запускать внешние обработки.
Интересно, это у меня одного так, или у других тоже?
У меня УПП 1.3 (1.3.15.1) .
В программу нельзя войти если у тебя не стоит роль Пользователя.
1. Соответственно у всех пользователей есть эта роль.
2. У этой роли есть права на общий интерфейс, которая открывает выбор интерфейсов.
3. Закрываем доступ Роли пользователь к общему интерфейсу - имеем геморой с остальными пользователями, которым нужен этот функционал.
4. Вижу выход с созданием нового интерфейса по аналогии с общим и роли подобной "Пользователь".
5. Указываем в роли этот интерфейс и добавляем эту роль всем остальным пользователям. А тем кому не надо - не добавляем.
Для роли "Пользователь" проводится проверка на доступность роли в модулях. и отключать её нельзя. Так что создание аналогичной роли ни к чему не приведет. Я с "полными правами" такие эксперименты ставил - дохлый номер.
Согласна с LeviN01, я этот вопрос решала так 1) создаем новый интерфейс по аналогии с общим и роль подобную "Пользователь", в общих модулях искала роль "Пользователь" и добавляла в код и роль подобную "Пользователь". 2) дабавила нужную роль пользователю с ограниченными правами и убрала у него роль "Пользователь".
(17) сложность в том, что в модулях типовой конфигурации встречаются обращения к роли "Пользователь" непосредственно по имени роли. Т.е. придётся код править, если аналог этой роли создавать.
Я бы сформулировал проблему иначе - как на неуправляемых формах сделать отображение только тех элементов интерфейсов доступ к которым пользователю разрешен, оставляя возможность переключения?
Спасибо за ответ но я допилил для УТ 10.3
Суть если по умолчанию интерфейс не полный, то он переключить не сможет. Если полный то всё ок.
Так мне кажется гораздо лучше!
Это Благодаря строчек кода
по совокупности советов сделал у себя следующее:
1. скопировал интерфейс Общий, удалил панель Интерфейсы, а в Главном меню из Сервис удалил Переключение интерфейсов.
2. добавил новую роль с одним лишь доступом к этому новому интерфейсу Общий_доп.
3. по пункту (23) добавил новое доп. право в ПланыВидовХарактеристик.ПраваПользователей.
4. по пункту (23) добавил кусок кода в конец процедуры ПриНачалеРаботыСистемы(), чуть его изменив.
Далее, если пользователю надо запретить переключать интерфейсы: добавить роль Общий_доп.
Если нужно оставить переключение: дать доп право на переключение интерфейса (роль не давать).
P.S. у пользователя должен быть указан какой-нибудь интерфейс.
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
Если ПользовательИБ <> Неопределено
И (НЕ РольДоступна("ПолныеПрава"))
И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено
Тогда
МассивЗначенийПрава = УправлениеДопПравамиПользователей.ПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.РазрешитьПереключатьИнтерфейс, Ложь);
РазрешитьПереключатьИнтерфейс = МассивЗначенийПрава.Найти(Истина) <> Неопределено;
Если НЕ РазрешитьПереключатьИнтерфейс Тогда
Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
ТекИнтерфейс.Переключаемый = Ложь;
ТекИнтерфейс.Видимость = Ложь;
КонецЦикла;
//Задействуем основной интерфейс пользователя
ОсновнойИнтерфейс = ГлавныйИнтерфейс[ПользовательИБ.ОсновнойИнтерфейс.Имя];
ОсновнойИнтерфейс.Переключаемый = Истина;
ОсновнойИнтерфейс.Видимость = Истина;
//Задействуем интерфейс Общий без переключений
ОбщийДопИнтерфейс = ГлавныйИнтерфейс.Общий_БезПереключения;
ОбщийДопИнтерфейс.Переключаемый = Истина;
ОбщийДопИнтерфейс.Видимость = Истина;
КонецЕсли;
КонецЕсли;
(40) Протестировал Ваш совет. Всё работает проблем. Так что большое спасибо за почти универсальное решение. "Почти", потому что при обновлениях теперь придётся смотреть, не внесены ли изменения в интерфейс "Общий", и копировать эти изменения в интерфейс "ОбщийДопИнтерфейс". Но это уже так, мелочи. Ещё раз спасибо Вам и автору первоначальной идеи virus-1c.
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
СписокИнтерфейсов = Новый СписокЗначений;
СписокИнтерфейсов.Добавить(ГлавныйИнтерфейс.Интерфейс1, "Интерфейс1");
СписокИнтерфейсов.Добавить(ГлавныйИнтерфейс.Интерфейс2, "Интерфейс2");
СписокИнтерфейсов.Добавить(ГлавныйИнтерфейс.Интерфейс3, "Интерфейс3");
Для Каждого ТекЗначениеИнтерфейса Из СписокИнтерфейсов Цикл
Если ПользовательИБ <> Неопределено И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено И ПользовательИБ.ОсновнойИнтерфейс.Имя = ТекЗначениеИнтерфейса.Представление Тогда
Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
ТекИнтерфейс.Переключаемый = Ложь;
ТекИнтерфейс.Видимость = Ложь;
КонецЦикла;
//Задействуем нужный интерфейс
ИнтерфейсПользователя = ТекЗначениеИнтерфейса.Значение;
ИнтерфейсПользователя.Переключаемый = Истина;
ИнтерфейсПользователя.Видимость = Истина;
КонецЕсли;
КонецЦикла;
Запрет пользователям с не типовыми ролями и ограниченными правами менять интерфейс.
1.Необходимой у нужной роли снять все галочки использование во всех интерфейсах, кроме интерфейса данной роли.
2.Необходимо в роли «пользователь» снять галочку использование со всех интерфейсов, кроме общий.
В результате кнопка сменить интерфейс будет доступна, но при попытке смены интерфейса будет выдаваться предупреждение о нарушении прав доступа
(29) uus, ну вроде он имел ввиду вот это, по корню конфигурации правой кнопкой мыши выбираете "все роли", далее спускаетесь в ощие там в интерфейсы и что нужно снимаете, и так по каждому интерфейсу(приложил скриншот), но лучше делать как в (14)
Решено! Убрать, запретить, удалить, отключить меню "Переключить интерфейс" и меню "Сервис". Меню "Сервис" не полностью, но с удалением пунктов, подменю которые существенно расширяют возможности для доступа к объектам конфигурации. Копируем "ИнтерфейсКассира" и роль "Кассир". Переименовываем кому как нравится. Для новой роли убираем права на другие интерфейсы и даем необходимые права на то что надо. Интерфейс тоже соответственно настраиваем под себя, элементы интерфейса. Назначаем нужному пользователю. Всё. Проверенно УТП.
(32) меню можно не запрещать, а вот доступ на интерфейс закрыть. Прописано это в ролях!
Управлять интерфейсом на ОФ программно нельзя. Некоторые умельцы писали обработку, которая заменит это меню и там уже фильтровали доступ кодом!
(33) если я убираю все интерфейсы кроме своего в роли, то есть еще роль Пользователь... но я нашел как сделать так, чтобы запускалась без роли Пользователь, т.е. я захожу по нужным мне пользователем, с нужной мне ролью, где отмечено использовать только мой интерфейс и там пусто, нет вообще никаких интерфейсов
В общем, зашел в "Дополнительно" своего интерфейса, на закладке Интерфейсы нашел свой интерфейс, и поставил галочку Интерфейс: МойИнтерфейс: Переключить интерфейс. Потом в своем пользователе в основном интерфейсе поставил свой и всё взлетело. Кстати в моем случае речь о КА 1.1
(36) Сделала то же самое в Управление торговли 10.3 Меню Сервис исчезло, так что переключить интерфейс уже нельзя :) Кнопки Файл, Справка тоже исчезли, но они тоже не нужны для этой роли
1) Копируем интерфейс "Общий"
2) В копированном "Общем" удаляем подменю "Переключать интерфейс"
3) Копируем роль "МенеджерПоПродажам"(делал для продавцов)
4) В копированном "МенеджерПоПродажам" меняем интерфейс "Общий" со стандартного на изменённый.
5) В правах пользователя меняем роль с "МенеджерПоПродажам" на копированную роль