Панель разделов отдельным ролям

1. aalu14 26.10.22 11:59 Сейчас в теме
Добрый день. Подскажите, необходимо отдельным ролям настроить панель разделов: некоторым ролям необходимо скрыть эту панель. Нашел в разделе "Интерфейс клиентского приложения" как убрать, но там нет распределения по ролям. Очень желательно из конфигуратора. Заранее спасибо!
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. aalu14 26.10.22 12:44 Сейчас в теме
Что пытаюсь сделать:
в модуле сеанса
Если РольДоступна("Менеджер") тогда
   Настройки = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения");
   Если Настройки=Неопределено Тогда
      Настройки = Новый НастройкиКлиентскогоПриложения;
      Настройки.ОтображатьПанелиНавигацииИДействий = Истина;
      Настройки.ОтображатьПанельРазделов = Ложь;
      Настройки.РежимОткрытияФормПриложения=РежимОткрытияФормПриложения.Закладки;
      ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения",,Настройки);
  КонецЕсли;
  КонецЕсли;
Показать


Но не получается...
3. coollerinc 188 26.10.22 12:56 Сейчас в теме
Вы можете только скрывать эти панели. Но пользователь потом сам сможет их заново вывести на экран. Т.е. ограничение прав скрытием этих панелей нельзя сделать. Это и называется управляемый интерфейс.

Если это просто для удобства менеджеров, то так можно сделать



Главное не забыть вызвать метод:
ОбновитьИнтерфейс()
user1831019; +1 Ответить
4. aalu14 26.10.22 13:04 Сейчас в теме
(3) Как я написал - не работает, а ОбновитьИнтерфейс из модуля сеанса можно? Процедура или функция с указанным именем не определена.
Подскажите, как убрать "Работа с обращениями" с скриншота? В Подсистемах такого нет вообще.
5. coollerinc 188 26.10.22 13:09 Сейчас в теме
(4) Модуль сеанса на сервере работает. Интерфейс живет на клиенте. Поэтому надо делать на клиенте.
Вам это нужно делать в "модуле приложения" например в обработчике ПриНачалеРаботыСистемы() . Этот модуль выполняется на клиенте.

Примерно такой кусок вам надо добавить в модуль приложения

Процедура ПриНачалеРаботыСистемы()
Если РольДоступна("Менеджер") тогда
Настройки = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения");
Если Настройки=Неопределено Тогда
Настройки = Новый НастройкиКлиентскогоПриложения;
Настройки.ОтображатьПанелиНавигацииИДействий = Истина;
Настройки.ОтображатьПанельРазделов = Ложь;
Настройки.РежимОткрытияФормПриложения=РежимОткрытияФормПриложения.Закладки;
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения",,Настройки);
КонецЕсли;
КонецЕсли;

ОбновитьИнтерфейс();


КонецПроцедуры
6. coollerinc 188 26.10.22 13:12 Сейчас в теме
(5) Тут наверное с клиента нужно будет вызвать серверный общий модуль и там выполнить
Если РольДоступна("Менеджер") тогда
Настройки = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения");
Если Настройки=Неопределено Тогда
Настройки = Новый НастройкиКлиентскогоПриложения;
Настройки.ОтображатьПанелиНавигацииИДействий = Истина;
Настройки.ОтображатьПанельРазделов = Ложь;
Настройки.РежимОткрытияФормПриложения=РежимОткрытияФормПриложения.Закладки;
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения",,Настройки);
КонецЕсли;
КонецЕсли;

а потом по возврату из серверной процедуры на клиенте вызвать
ОбновитьИнтерфейс();
8. aalu14 26.10.22 13:26 Сейчас в теме
(6) Сделал, как вы сказали. Не работает, к сожалению, панель разделов остается...Пробовал и в ПриНачалеРаботыСистема, и в ПередНачалом
7. aalu14 26.10.22 13:13 Сейчас в теме
(5) В модуле управляемого приложения изначально и пытался. На клиенте нет метаданных, поэтому нельзя проверить роль и обратиться к хранилищу системных настроек. А отдельные вызываемые функции/процедуры НаСервере не определяются в этом модуле почему-то...
9. aalu14 26.10.22 13:55 Сейчас в теме
Всё получилось. Переделал так:
НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();

НастройкиСостава.Верх.Очистить();
НастройкиСостава.Лево.Очистить();
НастройкиСостава.Низ.Очистить();
НастройкиСостава.Право.Очистить();

НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);		
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
Показать
coollerinc; +1 Ответить
10. aalu14 26.10.22 13:56 Сейчас в теме
Подскажет может быть кто, как убрать из панели разделов раздел "Работа с обращениями" (см. скриншот). Спасибо!
11. user1534918 06.02.24 12:25 Сейчас в теме
И в каком модуле вы его указали?
Оставьте свое сообщение

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