Настройка содержимого обработки "Дополнительные возможности" индивидуально для каждого пользователя

При большом количестве внешних отчетов в обработке "Дополнительные возможности" пользователям трудно стало искать нужные отчеты, более того некоторые отчеты нужны были только определенным пользователям, а некоторым пользователям не нужно было в принципе видеть все, что содержалось в списке. В Итоге появилось желание настроить список отчетов для каждого пользователя индивидуально.

Вот что я сделал, возможно это будет полезно кому то еще:

В обработку «ДополнительныеВозможности» включил следующую функцию

 

Функция Можно(СС)
    
Каталог1=КаталогИБ()+«ДопПрава»;
     Если
ФС.СуществуетФайл(Каталог1+ИмяПользователя()+«.prv»)=0 Тогда
          Возврат
1;
     КонецЕсли;
    
Т = СоздатьОбъект(«Текст»);
    
Т.Открыть(Каталог1+ИмяПользователя()+«.prv»);
    
К=1;
    
ВЗ=0;
     Пока
К<=Т.КоличествоСтрок() Цикл
          
С=Т.ПолучитьСтроку(К);
         
К=К+1;
          Если
Сред(С,1,2)=«//» Тогда
                Продолжить;
          КонецЕсли;
          Если (
СтрЧислоВхождений(С,СС)>0) и (СтрДлина(С)=СтрДлина(СС)) или (Сред(С,1,2)=«++»)

          Тогда
              
ВЗ = 1;
               Прервать
          ИначеЕсли (
Сред(С,1,2)=«—«) Тогда
              
ВЗ = 0;
               Прервать;
          КонецЕсли;
     КонецЦикла;
     Возврат
ВЗ;
КонецФункции

 

В процедуре заполнить сделал следующие изменения: 

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

Плюс добавил временно кнопочку «Сохранить» в форме на которую повесил следующую процедуру обработки.

Процедура СохранитьПрава()
     
Каталог1=КаталогИБ()+«ДопПрава»;
    
Т = СоздатьОбъект(«Текст»);
    
Отчеты.ВыбратьСтроки();
     Пока
Отчеты.ПолучитьСтроку()=1 Цикл
         
Т.ДобавитьСтроку(Строка(Отчеты.Название));
     КонецЦикла;

     Т.Записать(Каталог1+ИмяПользователя()+«.prv»);
КонецПроцедуры
 

Теперь как это работает.

1) В каталоге базы нужно создать папку ДопПрава

в ней будут находиться файлы с описанием доступных отчетов. Имя файла соответсвует Имени пользователя +расширение prv. Если файл отсутствует то разрешены все отчеты.

2) в файле перечислены наименования отчетов как они заданы в описании

если перед названием стоит // то этот отчет показываться не будет

если в файле в начале строки находятся символы ++ то доступны все отчеты

если в файле в начале строки находятся символы — то все отчеты запрещены

 

Файлы можно получить нажав на кнопку сохранить под каждым пользователем (автоматически создается файл с полным списком всех отчетов)

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

Ну и не забыть после этого удалить с формы кнопочку «Сохранить»

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *