Имя: Пароль:
1C
1С v8
Установка параметра сеанса ТекущийПользователь в УТ 10.3
0 pavlushov
 
28.02.17
15:43
Может кто знает, как устанавливается параметр сеанса ТекущийПользователь в УТ 10.3 (релиз один из последних), ставлю точку останова на самое начало процедуры УстановкаПараметровСеанса в модуле сеанса а параметр сеанса ТекущийПользователь уже установлен, остальные параметры заполняются позже а этот уже готов) Фоновое задание?
1 Волшебник
 
модератор
28.02.17
15:44
первой срабатывает ПриНачалеРаботыСистемы в модуле приложения
2 Волшебник
 
модератор
28.02.17
15:44
(1) а ещё раньше неё само тело модуля (ниже всех процедур)
3 pavlushov
 
28.02.17
15:48
(1) неа, модуль сеанса стартует первый и в его теле ничего нет
4 Волшебник
 
модератор
28.02.17
15:56
сделай глобальный поиск по строке
"ПараметрыСеанса.ТекущийПользователь ="
5 pavlushov
 
28.02.17
16:02
(4) делал) не найдено) такое ощущение что платформа сама заполняет этот параметр, сейчас ради эксперимента сделаю чистую конфу с этим параметром и проверю
6 Волшебник
 
модератор
28.02.17
16:03
ты его переименуй и посмотри, где вылезет ошибка
7 pavlushov
 
28.02.17
16:03
(5) хотя ерунду пишу, откуда платформа знает о существовании справочника "Пользователи"
8 pavlushov
 
28.02.17
16:04
(6) о, вот это идея )
9 pavlushov
 
28.02.17
16:11
хах, приводит к функции получения пользователя и на ней дает ошибку при попытке получения, а вот к установке параметра так и не пришел

Функция АвторизованныйПользователь() Экспорт
    
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
    УстановитьПривилегированныйРежим(Истина);
    
    Возврат ?(ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь),
              ПараметрыСеанса.ТекущийПользователь,
              ПараметрыСеанса.ТекущийВнешнийПользователь);
#Иначе
    Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске().АвторизованныйПользователь;
#КонецЕсли
    
КонецФункции
10 FIXXXL
 
28.02.17
16:21
(9) БСП в 10-ю впилили?
11 youalex
 
28.02.17
16:39
Перед запуском сеанса - включи замер производительности, потом поиском в нем найди ПараметрыСеанса.ТекущийПользователь
12 pavlushov
 
28.02.17
16:44
(11) ага нашел, сейчас гляну
13 youalex
 
28.02.17
16:45
(9) зы. может не ругаться, т.к. запопычено.
включи Отладка/Остановка по ошибкам
14 pavlushov
 
28.02.17
16:58
все разобрался, интересно получается: сначала стартует модуль сеанса - УстановкаПараметровСеанса, но установка Текущего пользователя не происходит, потом модуль обычного приложения - ПередНачаломРаботыСистемы, потом снова модуль сеанса - УстановкаПараметровСеанса и вот во 2 раз он выходит на процедуру УстановкаПараметровСеанса в модуле ПользователиСлужебный так и происходит инициализация парамера сеанса, но во всей этой истории есть один прикол, если в отладке поставить точку останова на процедуре УстановкаПараметровСеанса в модуле сеанса и в табло добавить ПараметрыСеанса.ТекущийПользователь для просмотра, то во первых он заполняется сразу и код выполняется иначе, мы уже не попадаем в процедуру где происходит присвоение параметра.
15 pavlushov
 
28.02.17
17:05
в итоге код выполняется так:

1 вариант (не включаем в табло выражение ПараметрыСеанса.ТекущийПользователь)

1. Модуль сеанса - УстановкаПараметровСеанса()
2. Модуль обычного приложения - ПередНачаломРаботыСистемы()
3. Модуль сеанса - УстановкаПараметровСеанса()
4. Общий модуль СтандартныеПодсистемыСервер - УстановкаПараметровСеанса()
5. Общий модуль ПользователиСлужебный - УстановкаПараметровСеанса() - тут происходит установка

2 вариант (включаем в табло выражение ПараметрыСеанса.ТекущийПользователь)

выполняется только 1 и 2:
1. Модуль сеанса - УстановкаПараметровСеанса()
2. Модуль обычного приложения - ПередНачаломРаботыСистемы()

при этом ПараметрыСеанса.ТекущийПользователь в табло дает результат сразу на 1 этапе
16 banco
 
28.02.17
17:10
(15) чему удивляешься то? параметр сеанса инициализируется при обращении
17 pavlushov
 
28.02.17
17:17
(16) просто не понимаю почему он инициализируется при обращении, разве есть какое то событие типа "ПриОбращенииКПараметруСеанса" ?
18 Волшебник
 
модератор
28.02.17
17:19
(15) а какой результат в табло отладчика?
может это отладчик инициализирует пустым значением типа?
19 banco
 
28.02.17
17:19
(17) прочитай описание к событию УстановкаПараметровСеанса или документацию на итс

Инициализация параметров сеанса может выполняться в модуле сеанса, в обработчике события УстановкаПараметровСеанса()

До инициализации значение параметр сеанса неопределено. При попытке чтения такого параметра сначала вызывается обработчик события УстановкаПараметровСеанса(). Если после вызова состояние параметра остается неопределенным, то вызывается исключение.
20 pavlushov
 
28.02.17
17:21
(18) нет, значение заполнено, даже ради эксперимента в параметрах выбирал запуск под другим юзером - параметр сразу заполнялся этим юзером
21 pavlushov
 
28.02.17
17:21
(19) теперь все ясно, спасибо :)
22 pavlushov
 
28.02.17
17:28
вывод такой - при выполнении кода в табло - отладка не доступна
23 pavlushov
 
28.02.17
17:38
тот редкий случай когда отладка ввела в заблуждение вместо того чтобы дать ответы)
Ошибка? Это не ошибка, это системная функция.