Имя: Пароль:
1C
1С v8
Где в УФ разместить глПользователь=Справочники.Пользователи.НайтиПоКоду(ИмяПользователя())
0 DES
 
24.02.23
22:16
Подскажите
Пишу учебную конфу с нуля
Как объявить ПараметыСеанса или глобально переменную типа Справочники.Пользователи.НайтиПоКоду(ИмяПользователя())?
Чтобы иметь к ней доступ из формы УФ ?
1 VladZ
 
24.02.23
22:29
сделай как в типовых
2 Garykom
 
гуру
24.02.23
22:31
3 Garykom
 
гуру
24.02.23
22:31
(0) отвыкай от "глПользователь"
8-ка это не 77
4 Garykom
 
гуру
24.02.23
22:32
глобальные переменные есть смысл только на клиенте
на сервере их считай нет

почитай пару нормальных книжек, изучи типовые конфы и БСП
5 bolder
 
24.02.23
22:42
(0) Это практически в любой задаче по СПР на экзамене Специалист встречается, странно что не встречался.Должно быть на автомате.В модуле сеанса пишешь подобную строчку, только присваиваешь это Параметру сеанса Текущий Пользователь, ну это если без БСП.
6 bolder
 
24.02.23
22:56
(5) Ну например так, с созданием пользователя в базе:

Имя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
    
    Пользователь= Справочники.Пользователи.НайтиПоКоду(Имя);
    Если Пользователь.Пустая() Тогда
        ПользовательОбъект = Справочники.Пользователи.СоздатьЭлемент();
        ПользовательОбъект .Наименование = Имя;
        ПользовательОбъект .Код = Имя;
        ПользовательОбъект .Записать();
        Пользователь = ПользовательОбъект .Ссылка;
    КонецЕсли;

    ПараметрыСеанса.ТекущийПользователь = Пользователь ;
        

        
7 DES
 
25.02.23
00:10
(6) где это разместить?
8 Aleksey
 
25.02.23
01:47
(7) в (5) же написано где.
9 bolder
 
25.02.23
05:31
(7) Да,в (5) же написано.Там есть специальная процедура для этого ;-)
10 Повелитель
 
25.02.23
06:13
(3) Ну как бы нет. В твоём же примере из ИТС из (2) написано:
1.2. Не рекомендуется использовать параметры сеанса для хранения значений, используемых исключительно в клиентской логике. Поскольку в клиент-серверном варианте 1С:Предприятия параметры сеанса хранятся на сервере, то любое их считывание или изменение в процессе работы на клиенте потребует дополнительного серверного вызова и увеличит объем передаваемых данных с клиента на сервер и обратно.

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

Поэтому в типовых есть и глЗначениеПеременной("глТекущийПользователь") и глТекущийПользователь.
11 Повелитель
 
25.02.23
07:18
(2) Кстати там же предостерегают, что не нужно хранить глобальные переменные, в параметрах сеанса.

Всегда интересно читать. Пишите код оптимально. Не нужно в параметры сенаса запихивать глобальные переменные, так как они отъедают ресурсы.

О каких ресурсах идёт речь? Запускаешь просто типовую БП и она отжирает 200-500 Мб из ОЗУ. А в сервер сколько не поставь он всё сожрет, ему и 128 Гб сейчас мало. Сколько займут эти несчастные переменные места 1кб, 10кб или 100кб? Это разве важно в текущих реалиях, когда ОЗУ отжирается сотнями мегабайт.

Это если учесть, что полное собрание книг Гарри Поттер в текстовом виде, весят около 10 Мб.

Так что оптимизаторы мне кажется не те места оптимизируют.
12 eddy_n
 
25.02.23
07:31
БП, УНФ, ЭДО... Список можно продолжать, скорее всего, и дальше. Не нашёл я в актуальных типовых такого - Перем глТекущийПользователь Экспорт;
13 eddy_n
 
25.02.23
07:31
(12) на (10) в модуле приложения естественно.
14 eddy_n
 
25.02.23
09:29
Перем ТекущийПользователь Экспорт;
ТОЖЕ НЕ НАБЛЮДАЕТСЯ В МОДУЛЯХ ПРИЛОЖЕНИЙ.
15 Новый1сник2
 
25.02.23
10:16
(12) в БП Пользователь = Пользователи.ТекущийПользователь();
16 VladZ
 
27.02.23
12:09
(14) Не то ищешь.

Открой любой документ и посмотри как заполняется автор документа.
17 eddy_n
 
27.02.23
22:23
(16) Заполняется он просто:
    Возврат ?(ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь),
        ПараметрыСеанса.ТекущийПользователь,
        ПараметрыСеанса.ТекущийВнешнийПользователь);
Только непросто найти это место в череде сплошных вызовов.
18 timurhv
 
28.02.23
01:33
В БСП хранится в: Перем ПараметрыПриложения Экспорт;

На клиенте использовать:
ПользователиКлиент.ТекущийПользователь()

на сервере:
Пользователи.ТекущийПользователь()
19 mikecool
 
28.02.23
09:12
емнип, в БПС давно Пользователи.АвторизованныйПользователь()
ТекущийПользователь() даст ошибку для внешних
20 mikecool
 
28.02.23
09:12
и если таки дошло дело до установки параметров сеанса в модуле сеанса - не забываем ставить проверку на имя параметра, чтобы не инициализировать все подряд...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший