Имя: Пароль:
1C
1С v8
УстановкаПараметровСеанса()
0 Одинесочка
 
12.04.12
10:02
Доброе утро!
В торговле 11 написано так:

Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
   
   Если ИменаПараметровСеанса = Неопределено Тогда
   //    // Раздел установки параметров сеанса при начале сеанса (ИменаПараметровСеанса = Неопределено)
   //    // Выполняется установка параметров сеанса, которые можно инициализировать
   //    // при начале работы системы
   //    
   Иначе
   //    // Установка параметров сеанса "по требованию"
       
       // Параметры сеанса, инициализация которых требует обращения к одним и тем же данным
       // следует инициализировать сразу группой. Для того, чтобы избежать их повторной инициализации,
       // имена уже установленных параметров сеанса сохраняются в массиве УстановленныеПараметры
       УстановленныеПараметры = Новый Массив;
       Для каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
           УстановитьЗначениеПараметраСеанса(ИмяПараметра, УстановленныеПараметры);
       КонецЦикла;
КонецЕсли;
КонецПроцедуры

Когда смотрю в отладке, понимаю, что эта процедура вызывается еще один раз, т.к. сразу параметры сеанса не опеределяются. Где она еще раз вызывается? Или я что-то не так поняла?
1 Одинесочка
 
12.04.12
10:17
ап...
2 fisher
 
12.04.12
10:18
Платформа вызывает её неявно при первом обращении к еще не инициализированным параметрам сеанса. Т.е. она может вызываться неоднократно.
Сделано с целью оптимизации - чтобы не грузить клиента вычислением параметров, которые возможно вообще при его профиле работы вообще никогда не нужны, а также для ускорения загрузки конфы.
3 vmv
 
12.04.12
10:23
из практики

например, есть прикладуха, которая пашет круглые сутки он-лайн. например сбор каких-то показателей, которые мониторят диспетчер, операторы и пр.

Когда приходит на смену другой диспетчер, то глупо заставлять первого закрыть приложение, а второму открыть ибо мониторинг - вешь непрерывная.

тогда производим вызов некой формы "передача смены", где выбираем нового диспетчера и вызывем процу инициализации параметров под него - без монстроидальной перезагрузки всего приложения
4 Одинесочка
 
12.04.12
10:24
Хорошо. Почему у меня в самописной конфе также может не получаться? Параметры сеанса у меня есть такие же. Код такой же? Почему она второй раз может не вызываться? Определяет что ИменаПараметровСеанса = Неопределено и вылетает. Дальше ничего не происходит?!
5 vmv
 
12.04.12
10:26
(4) потому что версия платфоры с глюками относительно параметров. поиск - прочитать, установить актуальную версию релиза
6 vmv
 
12.04.12
10:29
+(4) на всякий случай нужно проверять параметр на существование и если его нет, то создавать, ибо при загрузе приложения не могут быть инициализированы

В Контексте параметров приложения "НЕ инициализирован = НЕ существует" -> Неопределено.

Для параметров нет понятия пустое значение, как мы воспринимаем это в контесте данных
7 Одинесочка
 
12.04.12
10:37
(5) Как так с глюками? У меня же одна платформа и для УТ, и для моей?
(6) А где их попробовать создать? Прям в этой же процедуре?
8 fisher
 
12.04.12
10:40
(4) При первом же вызове вылетает? Когда ИменаПараметровСеанса = Неопределено?
9 Одинесочка
 
12.04.12
10:43
(8) да...
10 fisher
 
12.04.12
10:50
(9) Хм... Тонким клиентом заходишь или толстым?
11 Одинесочка
 
12.04.12
10:52
Тонким...
12 fisher
 
12.04.12
10:57
Точно-точно? А как видишь?
Режим совместимости у конфы не включен ли?
13 Одинесочка
 
12.04.12
11:03
Через активных пользователей.
Режим совместимости с 8.13
14 Одинесочка
 
12.04.12
11:06
Отключила совместимость, та же фигня...
15 fisher
 
12.04.12
11:07
(13) В 8.1 еще не было режима инициализации по требованию
16 fisher
 
12.04.12
11:09
(14) Не уверен, что та же
17 Одинесочка
 
12.04.12
11:09
режим совместимости с 8.2.13
18 Одинесочка
 
12.04.12
11:11
(16) ставлю точку на Если ИменаПараметровСеанса = Неопределено Тогда, сразу идет в конец, а потом сразу запускается приложение...
19 fisher
 
12.04.12
11:18
(18) Непонятно. Напиши так:

Если ИменаПараметровСеанса = Неопределено Тогда
  а = 1;
Иначе
  б = 1;
КонецЕсли;

Поставь точки останова на обоих присваиваниях и расскажи что происходит при запуске.
20 fisher
 
12.04.12
11:22
(18) Погоди. Так приложение нормально запускается? Не вылетает по исключению?
21 Одинесочка
 
12.04.12
11:22
"а = 1" - присваивается, а на "б = 2" - не останавливается, потом приложение запускается.
22 Одинесочка
 
12.04.12
11:22
(20) нет, не вылетает.
23 fisher
 
12.04.12
11:24
(22) Тьфу ты ну ты! Так что ж ты людям голову морочишь?? Кому я (2) писал??
Вызовется, когда будешь обращаться к значениям параметров сеанса.
24 Одинесочка
 
12.04.12
11:31
(23) так а где обращаться к ПС?
25 fisher
 
12.04.12
11:34
(24) Это уже в пятничную ветку превращается.
Нафига тебе ПС, если ты не знаешь где к ним обращаться? Там где нужны, там и обращаешься.
26 Одинесочка
 
12.04.12
11:38
Все, поняла..)) Извини. Спасибо!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn