Каким образом можно заблокировать пользователю доступ к настройке панели разделов?(типовая конфигурация БП)

1. azbyka231 12.08.21 11:21 Сейчас в теме
Всем добрый день! Есть пользователь со своей группой доступа, которому лишние разделы были убраны через настройку разделов и настройку навигации, в целях защиты на дурака нужно бы этому пользователю убрать возможность вернуть убранные разделы через настройку панели разделов, каким образом можно это осуществить?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VmvLer 12.08.21 11:47 Сейчас в теме
бутерброд справа системный и вроде его нельзя убрать с глаз долой.

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

роли и бла-бла-бла ...плавали-знаем, но иногда проще просто срезать подсистемы и команды при запуске,
чтобы пользователь выполнял одну-две задачи без замыливания глаз и соблазна потрогать бутер.
3. AnryMc 849 12.08.21 11:54 Сейчас в теме
(2)
я программно (в расширении) срезаю лишнее при запуске для некоторых.


ПриНачалеРаботыСистемы()


Ну а дальше?

З.Ы. Насколько я помню: Подсистема, командный интерфейс - только чтение...
З.Ы.Ы. Не проще ли создать роль только с нужными подсистемами?
4. VmvLer 12.08.21 12:11 Сейчас в теме
(3) каждый раз при запуске пользователь будет видеть мизер:

// В корне расширения МодульПриложения
// Условия закомментруйте или пишите свою логику кому и как резать интерфейс

&После("ПриНачалеРаботыСистемы")
Процедура Расш1_ПриНачалеРаботыСистемы()
	
	Если Расш1_СереврПовторногоИсп.ЧтениеПодразделенийОграничено() Тогда
		Если Расш1_СереврПовторногоИсп.ОтображатьВсеПанелиИнтерфейсаПриЗапуске() Тогда  
			ОбновитьИнтерфейс = ОбщегоНазначенияВызовСервера.Расш1__ВыполнитьНастройкуПанелей(Ложь, Истина);
		Иначе
			ОбновитьИнтерфейс = ОбщегоНазначенияВызовСервера.Расш1__ВыполнитьНастройкуПанелей(Ложь, Ложь);
		КонецЕсли;
		Если ОбновитьИнтерфейс Тогда
			ОбновитьИнтерфейс();
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры


// В расширении расширяемый модуль сновной конфигурации ОбщегоНазначенияВызовСервера или создайте свой с флагом "ВызовСервера"
// Если это не зуп, то в коде ниже замените 
// Документ.ТабельУчетаРабочегоВремени на Документ.ЧегоТоТам и 
// ЖурналДокументов.Подработки на ЖурналДокументов.ЧегоТоТам

Функция Расш1__ВыполнитьНастройкуПанелей(ПолучатьСоставИзХранилища=Ложь, ВосстановитьНастройкуПанелей=Ложь) Экспорт
	
	Если ТекущийРежимЗапуска() = Неопределено Тогда
		Возврат Ложь;
	КонецЕсли;
	
	УстановитьПривилегированныйРежим(Истина);
		
	Если ПолучатьСоставИзХранилища Тогда
		НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");
		Если НастройкиИнтерфейса = Неопределено Тогда
			НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
		Иначе	
			НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав(); // Состав не то, что в конфигураторе, а то, что пользователь установил себе.
		КонецЕсли;
	Иначе
		НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
		НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав(); // С помощью пустого объекта настроек получим настройки состава, установленные в конфигураторе.
	КонецЕсли;
	
	Если НЕ ВосстановитьНастройкуПанелей Тогда
		
		// Очищаем настройки состава.
		НастройкиСостава.Верх.Очистить();
		НастройкиСостава.Лево.Очистить();
		НастройкиСостава.Низ.Очистить();
		НастройкиСостава.Право.Очистить();
		
		// Добавлем панели интерфейса
		ГруппаНастройкиСостава = Новый ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения;
		ГруппаНастройкиСостава.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИзбранного"));
		ГруппаНастройкиСостава.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельОткрытых"));
		НастройкиСостава.Верх.Добавить(ГруппаНастройкиСостава);
		
		// Очищаем избранное
		Избранное = ХранилищеСистемныхНастроек.Загрузить("Общее/ИзбранноеРаботыПользователя");
		Если Избранное = Неопределено Тогда
			Избранное = Новый ИзбранноеРаботыПользователя;
		КонецЕсли;
		Пока Избранное.Количество() Цикл
			Избранное.Удалить(0);
		КонецЦикла;

		
		// Добавляем элементы в избранное 
		мНавигационныеСсылки = Новый Массив;
		мНавигационныеСсылки.Добавить("e1cib/list/Документ.ТабельУчетаРабочегоВремени");
		мНавигационныеСсылки.Добавить("e1cib/list/ЖурналДокументов.Подработки");
		
		Для каждого тНвСсылка Из мНавигационныеСсылки Цикл
			Элемент = Новый ЭлементИзбранногоРаботыПользователя;
			Элемент.НавигационнаяСсылка = тНвСсылка;
			Избранное.Добавить(Элемент);
		КонецЦикла;
		
		ХранилищеСистемныхНастроек.Сохранить("Общее/ИзбранноеРаботыПользователя", "", Избранное);
		  
	КонецЕсли;
	
	НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
  	ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса); // Поместим объект настроек текущему пользователю в хранилище.
	
	Возврат Истина;
	
КонецФункции
Показать
Nikola_N; azbyka231; AnryMc; +3 Ответить
6. azbyka231 12.08.21 14:10 Сейчас в теме
(4)
Если Расш1_СереврПовторногоИсп.ЧтениеПодразделенийОграничено() Тогда
Если Расш1_СереврПовторногоИсп.ОтображатьВсеПанелиИнтерфейсаПриЗапуске() Тогд


А это что за модуль? Не очень понимаю, спасибо!
Прикрепленные файлы:
5. VmvLer 12.08.21 12:14 Сейчас в теме
(3) >> З.Ы.Ы. Не проще ли создать роль только с нужными подсистемами?

Не проще, любая роль тянет за собой ворох "хлама" с точки зрения концентрированной работы - это раз.
Одной роли будет мало если речь о типовых, необходимо в профиль прилепить еще с десяток.

Оживите мой код в соей конфе на копии и поймете, что проще так. А бутер тоже не помеха, так как при любом запуске снова мизер.
7. VmvLer 12.08.21 14:16 Сейчас в теме
(6) вверху комментарий же
Оставьте свое сообщение

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