Имя: Пароль:
1C
1С v8
Как в отчете СКД задавать текущего пользователя, полученного из параметров сеанса?
,
0 Dan12345
 
06.03.23
16:50
Добрый день. Есть отчет "Выданные книги". Для администратора библиотеки формируется отчет по всем посетителям.
Стоит задача сделать так, чтобы при авторизации посетителя, он мог строить этот отчет только по себе, а не по всем.
Создал параметр сеанса, считываю там текущего пользователя. Соответственно, как я понимаю, нужно в отчет передавать параметром значение текущего пользователя, но не знаю как.
1 mikecool
 
06.03.23
16:52
создать параметр, задань на вкладке его значение, профит
2 KJlag
 
06.03.23
16:56
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ПараметрыСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных;
        ...
    ПараметрыСКД.УстановитьЗначениеПараметра("Пользак", Пользак);
    
КонецПроцедуры
3 Dan12345
 
06.03.23
17:02
(2) так же сделал. не помогло)
может где-то еще проблема не знаю. задаю условие на клиента по наименованию текущего пользователя.
в параметрах создал ТекущийПользователь
в модуле объекта:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных;
    Параметры.УстановитьЗначениеПараметра("ТекущийПользователь", ПараметрыСеанса.ТекущийПользователь);
КонецПроцедуры

в модуле сеанса:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    
    Имя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
    Клиент = Справочники.Клиенты.НайтиПоНаименованию(Имя);    
    
    Если Клиент.Пустая() Тогда
        КлиентОбъект = Справочники.Клиенты.СоздатьЭлемент();
        КлиентОбъект.Наименование = Имя;
        Клиент = КлиентОбъект.Ссылка;  
    КонецЕсли;                        
    
    ПараметрыСеанса.ТекущийПользователь = Клиент;
    
КонецПроцедуры
4 unenu
 
06.03.23
17:06
Параметр.Использование = Истина
5 Мультук
 
гуру
06.03.23
17:07
(3)

    КлиентОбъект = Справочники.Клиенты.СоздатьЭлемент();
    КлиентОбъект.Наименование = Имя;
    КлиентОбъект.Записать(); //<--------------------------------------------------------------------
    Клиент = КлиентОбъект.Ссылка;
6 Dan12345
 
06.03.23
17:10
Разобрался. Сравнивал по наименованию клиента, а нужно было по ссылке. Всем спасибо!
7 Dan12345
 
06.03.23
17:37
К этой же теме. Вопрос такой. Пользователю не выводится макет отчета. Выводится только "Параметр: <ФИО>", то есть тот клиент, который считался и записался в параметр запроса.
Если дать этому пользователю админские права, то все ок. Стоят права на чтение регистров, использование и просмотр самого отчета. Чего может не хватать?
8 Мультук
 
гуру
06.03.23
18:29
(7)

Не хватает прав на чтение и просмотр данных по которым строится отчёт
9 Donkey_hot
 
06.03.23
18:38
(0) А не правильнее методически через RLS это сделать?
10 Dan12345
 
06.03.23
21:25
(9) правильнее. я не смог найти инфы. если скинете - буду благодарен.
11 Dan12345
 
06.03.23
22:23
проблема решена. нужно было в запросе просто поставить галку "разрешенные", поэтому через RLS изначально не получалось))
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой