gifts2017

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

Опубликовал Владимир Гоголев (vlgogolev) в раздел Программирование - Работа с интерфейсом

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

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

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

 


Функция Можно(СС)
    
Каталог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) в файле перечислены наименования отчетов как они заданы в описании

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

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

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

 

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

0. Владимир Гоголев (vlgogolev) 07.09.11 16:39
При большом количестве внешних отчетов в обработке "Дополнительные возможности" пользователям трудно стало искать нужные отчеты, более того некоторые отчеты нужны были только определенным пользователям, а некоторым пользователям не нужно было в принципе видеть все, что содержалось в списке. В Итоге появилось желание настроить список отчетов для каждого пользователя индивидуально.



Перейти к публикации

1. Сергей Рудаков (fishca) 07.09.11 16:39
Оформи публикацию как в http://infostart.ru/public/66592/ будет приятней пользователям читать статью.
2. элла иванова (2011b11) 14.09.11 14:36
И это оформление можно читать
3. Сергей Рудаков (fishca) 14.09.11 14:38
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа