|   |   | 
| 
 | Установка параметра сеанса ТекущийПользователь в УТ 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 | 
        тот редкий случай когда отладка ввела в заблуждение вместо того чтобы дать ответы)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |