Имя: Пароль:
1C
1С v8
Повторное использование возвращаемых значений
0 shamannk
 
11.09.13
15:45
Не могу понять как это работает. Пример: (на время сеанса) в таком модуле идет получение параметра сеанса. Если параметр получили, патом его изменили и при повторном обращение выйдет предыдущий вариант или уже измененный?
1 Fragster
 
модератор
11.09.13
15:46
вот проверь, и нам расскажи
2 Lama12
 
11.09.13
15:46
Смотря как изменишь :)
Если просто так, то получишь старое значение.
Если сделаешь обнуление "кэша", то получишь новое значение.
3 shamannk
 
11.09.13
15:59
(1) Это все равно что RandomNumberGenerator изучать по выходным данным. Модератор)))
4 Fragster
 
модератор
11.09.13
16:00
(3) ну реально, проверить - 2 минуты
5 Fragster
 
модератор
11.09.13
16:06
кстати, рандом тоже надо изучать. например многие наступают на грабли из серии

для Сч = 1 по 100 Цикл
ГСЧ = Новый ГенераторСлучайныхЧисел();
Сообщить(ГСЧ.СлучайноеЧисло(1,1000));
КонецЦикла;


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

а больше всего грустно, что большинству даже в СП или встроенную справку заглянуть некогда:

Повторное использование возвращаемых значений. Свойство доступно, если общий модуль не является Глобальным. Это свойство может принимать следующие значения:

Не использовать – повторное использование возвращаемых значений для функций этого общего модуля не используется;
На время вызова и На время сеанса – для общего  модуля используется метод определения повторного использования данных. Суть этого метода заключается в том, что в ходе выполнения кода система запоминает параметры и результат работы функций после первого вызова функции. При повторном вызове функции с такими же параметрами, происходит возврат запомненного значения (из первого вызова) без выполнения самой функции. Если функция во время своего выполнения меняет значения параметров, то повторный вызов функции не будет это делать.
Можно выделить следующие особенности сохранения результатов вызова:

если функция выполняется на сервере и вызывается из серверного кода, то значения параметров и результат вызова запоминаются  для текущего сеанса на стороне сервера;
если функция выполняется на толстом или тонком клиенте, то значения параметров и результатов вызова запоминается на стороне клиента;
если функция выполняется на стороне сервера, а вызывается из клиентского кода, то значения параметров вызова запоминаются и на стороне клиента и на стороне сервера.
Сохраненные значения удаляются:

если свойство установлено в значение На время вызова:
на стороне сервера – при возврате управления с сервера;
на стороне клиента – при завершении работы процедуры или функции встроенного языка  верхнего уровня (вызванной системой из интерфейса, а не из другой процедуры или функции встроенного языка).
если свойство общего модуля установлено в значение На время сеанса:
на стороне сервера – при окончании сеанса;
на стороне клиента – при закрытии клиентского приложения.
Сохраненные значения могут быть удалены:

после долгого неиспользования (более 5 минут);
при нехватке оперативной памяти в рабочем процессе сервера;
при перезапуске рабочего процесса;
при переключении клиента на другой рабочий процесс.
После удаления значений, вызов экспортной функции выполняется как при первом вызове.
2 + 2 = 3.9999999999999999999999999999999...