Имя: Пароль:
1C
1С v8
v8: 8.3 БСП Установка параметров сеанса
0 Aswed
 
24.07.13
12:07
Хочу добавить новые параметры сеанса и само собой их установить.

Но сунувшись в отладчик обалдел увидев в процедуре "УстановкаПараметровСеанса" уже заполненные параметры.

Около часа уже лажу и не могу смекнуть где они их устанавливают, если эта процедура отрабатывает первой.
1 Капитан О
 
24.07.13
12:07
информацию принял
2 Aswed
 
24.07.13
12:11
И вообще как ПРАВИЛЬНО устанавливать параметры сеанса при использовании БСП?
3 olegves
 
24.07.13
12:13
(0) может из кэша? на случай постоянной потери связи при работе
4 Aswed
 
24.07.13
12:16
(3) Да ну.
5 Aswed
 
24.07.13
12:16
Что самое прикольное, про БСП кучу инфы про настройку и внедрение, но не слова нигде не нашел про установку параметров сеанса.
6 Aswed
 
24.07.13
12:38
АП
7 regniws
 
24.07.13
13:09
а как ты в отладчике смотришь установленность параметров сеанса? по шифт+ф9? если так, то они сразу тебе и рассчитываются.

бсп какая?
8 Aswed
 
24.07.13
15:26
(7) Да по шифт+ф9
БСП 2.1.3.51
9 banco
 
24.07.13
15:42
(0) ОбщегоНазначенияПереопределяемый.ОбработчикиИнициализацииПараметровСеанса
10 banco
 
24.07.13
15:45
(5) не там искал наверное
12 Aswed
 
24.07.13
16:11
(9) Точно.
Спасибо!
13 Aswed
 
24.07.13
16:30
(9) А подскажи ещё, где задаются "ИменаПараметровСеанса"?
14 Aswed
 
24.07.13
16:33
+ (13) потому как в процедуру установки они попадают уже заполненным массивом
15 banco
 
24.07.13
16:33
(13) это тебе к СП
УстановкаПараметровСеанса(<ТребуемыеПараметры>)
16 Aswed
 
24.07.13
16:36
(15) ))))
17 Aswed
 
24.07.13
16:39
Читал, но что то не фига не понял)
Уже думаю плюнуть и написать установку параметров тупо самому напрямую. Без этих извращений)
18 sunson
 
24.07.13
16:40
есть подписка на ИТС? тогда все что надо здесь http://its.1c.ru/db/bspdoc#content:7:1
19 Defender aka LINN
 
24.07.13
16:45
(14) Это платформа делает
20 Aswed
 
24.07.13
16:46
(18) Спасиб.
Но камрад banco уже написал то что мне было нужно в (9)

Инициализация параметров сеанса

Для инициализации параметров сеанса требуется вписать имя параметра сеанса и путь к его обработчику в процедуру ОбработчикиИнициализацииПараметровСеанса общего модуля ОбщегоНазначенияПереопределяемый. При этом обработчик инициализации должен принимать два параметра:

? ИмяПараметра – строка – имя инициализируемого параметра

? УстановленныеПараметры – массив – имена параметров, которые были инициализированы

Только вот прописал.
Но инициализация не проходит.
21 banco
 
24.07.13
16:47
(17) так ничего сложного, в ОбщегоНазначенияПереопределяемый.ОбработчикиИнициализацииПараметровСеанса добавляешь
Обработчики.Вставить("МойПараметрСеанса",   "ОбщегоНазначенияПереопределяемый.УстановитьПараметрыСеанса");
добавляешь процедуру
Процедура УстановитьПараметрыСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт
   
  ПараметрыСеанса.МойПараметрСеанса = Истина;  
  УстановленныеПараметры.Добавить("МойПараметрСеанса");
               
КонецПроцедуры
22 Aswed
 
24.07.13
16:49
(19) Из всей толпы параметров сеанса у меня там только один прописан
"ТекущийПользователь" и устанавливает только его.
24 Aswed
 
24.07.13
16:51
(21) так и сделал

Функция ОбработчикиИнициализацииПараметровСеанса() Экспорт
   
   Обработчики = Новый Соответствие;
   
   Обработчики.Вставить("ТекущаяОрганизация",  "АвтобизнесОбщий.УстановкаПараметровСеанса");
   
   Возврат Обработчики;
   
КонецФункции
25 Aswed
 
24.07.13
16:51
Но на вот этом участке кода отрабатывает только установка одного параметра

   Для каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
       Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
           Продолжить;
       КонецЕсли;
       Обработчик = Обработчики.Получить(ИмяПараметра);
       Если Обработчик <> Неопределено Тогда
           Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
               ВызватьИсключение ТекстСообщения;
           КонецЕсли;
           
           Выполнить Обработчик + "(ИмяПараметра, УстановленныеПараметры)";
           Продолжить;
       КонецЕсли;
       Для Каждого ИмяКлючаПараметра Из ПараметрыСеансаКлючи Цикл
           Если Лев(ИмяПараметра, СтрДлина(ИмяКлючаПараметра)) = ИмяКлючаПараметра Тогда
               Обработчик = Обработчики.Получить(ИмяКлючаПараметра+"*");
               Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
                   ВызватьИсключение ТекстСообщения;
               КонецЕсли;
               Выполнить Обработчик + "(ИмяПараметра, УстановленныеПараметры)";
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;


В ИменаПараметровСеанса потмоу что указан только один "ТекущийПользователь"
26 banco
 
24.07.13
16:53
(25) а ты не смотри этот код, твой параметрсеанса будет инициализирован при первом обращении, а до этого платформа не будет требовать его инициализации
27 Aswed
 
24.07.13
16:53
(19) А почему платформа из 15 параметров только один вызывает?
По идеи то должны все быть перечислены.
28 Aswed
 
24.07.13
16:54
(26) Ёпть. Незнал такого.
Сейчас проверю)))))
29 Aswed
 
24.07.13
16:57
(26) Блин точно!
Вот спасибо, а так бы мучался ещё фиг знает сколько.
30 EvgeniuXP
 
24.07.13
17:06
(29) тест на профессионала - этот вопрос есть :)
31 Aswed
 
24.07.13
17:31
(30) Не сдавал и даже не читал)))