Имя: Пароль:
1C
 
8.3. Зачем серверные переменные реинициализируются при каждом обращении?
,
0 pro3ri
 
21.01.16
11:33
Добрый день!
https://s.mail.ru/41csjyn9s9jD/img-2016-01-21-13-31-19.png
Зачем есть такая особенность платформы что серверные переменные реанициализируются при каждом обращении? Ведь проще было сделать чтобы они жили пока живет форма как клиентские переменные?
1 ДенисЧ
 
21.01.16
11:35
А если у тебя процесс на другой сервер кластера перекинется?
2 asady
 
21.01.16
11:36
(0) и это правильно!

то что для тебя проще совсем не означает проще для платформы.
3 mikecool
 
21.01.16
11:37
(0) я бы вообще этим не занимался, а передавал нужное параметром, имхо - надежнее
4 pro3ri
 
21.01.16
11:37
а если требуется сохранить значение серверной переменной его надо в реквизит формы положить?
5 Остап Сулейманович
 
21.01.16
11:39
(4) Во временное хранилище на сервере. Смотря, где хранить нужно.
6 Остап Сулейманович
 
21.01.16
11:40
+ (5) Или в параметрах сеанса.
7 Fragster
 
гуру
21.01.16
11:40
сервер 1с типа stateless
8 Господин ПЖ
 
21.01.16
11:41
(0) патамучта так работают львиная доля сервисов - ответил и забыл
9 Lama12
 
21.01.16
11:43
(0)Напиши в 1С. Вопросы платформы они, последнее время, очень адекватно рассматривают.
Кстати, обнаружить с клиента что серверный процесс упал и клиентское соединение перешло на другой процесс нет возможности. При этом все переменные на сервере обнуляются. Я им этот "глюк" несколько месяцев назад переслал. Сказали - подумают.
10 pro3ri
 
21.01.16
12:00
благодарю
11 pro3ri
 
21.01.16
13:07
(5) на всякий попробовал:

&НаСервере
Перем тест123;

&НаКлиенте
Процедура Команда1(Команда)
    тестСервер();
    тестСервер1();
    
КонецПроцедуры

&НаСервере
Процедура тестСервер()
    
    тест123 = 100;
    //тест123 = Новый Массив;
    //тест123.Вставить(1);
    //тест123.Вставить(2);
    //тест123 =Новый ФиксированныйМассив(тест123);
    //ПараметрыСеанса.ПараметрСеанса3=тест123;
    ПоместитьВоВременноеХранилище(тест123,УникальныйИдентификатор);

КонецПроцедуры // тестСервер()

&НаСервере
Процедура тестСервер1()

    А = ПолучитьИзВременногоХранилища("тест123");    
    //А = ПараметрыСеанса.ПараметрСеанса3;    
КонецПроцедуры // тестСервер()

так ругается у меня:
{Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
    А = ПолучитьИзВременногоХранилища("тест123");    
по причине:
Ошибка получения значения из временного хранилища
по причине:
Неправильный путь к файлу 'тест123'
12 pro3ri
 
21.01.16
13:10
тупанул:

&НаСервере
Перем тест123;

&НаКлиенте
Процедура Команда1(Команда)
    тестСервер();
    тестСервер1();
    
КонецПроцедуры

&НаСервере
Процедура тестСервер()
    
    тест123 = 100;
    //тест123 = Новый Массив;
    //тест123.Вставить(1);
    //тест123.Вставить(2);
    //тест123 =Новый ФиксированныйМассив(тест123);
    //ПараметрыСеанса.ПараметрСеанса3=тест123;
    Строка = ПоместитьВоВременноеХранилище(тест123,УникальныйИдентификатор);

КонецПроцедуры // тестСервер()

&НаСервере
Процедура тестСервер1()

    А = ПолучитьИзВременногоХранилища(Строка);    
    //А = ПараметрыСеанса.ПараметрСеанса3;    
КонецПроцедуры // тестСервер()


правда пришлось реквизит формы создать Строка
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший