RestoreGlobalTempString

From SunFlurry wiki
Jump to: navigation, search
  RestoreGlobalTempString (Серверные функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер
Исключения:Невозможно превратить в строку, ошибка длины имени.
Визуальность:Нет

Функция получает значение временной именной переменной на сервере. Подобные переменные доступны другим пользователям, однако, теряются при перезагрузке сервера. Имя и значение переменной представляют собой UTF-16 строки с произвольным набором символов. Сервер накладывает ограничения на размер имени переменной и значения для уменьшения расхода памяти. Обычно подобные строки используются для хранения глобальных флагов проекта, если они не требуют сохранения между сессиями. К примеру, флаг выполнения цикла очистки каталога от старых пакетов может содержать время последнего запуска обработки очистки. Сама обработка является достаточно затратной по ресурсам или времени, чтобы выполнять ее при каждом обращении пользователя к каталогу, и не настолько важной, чтобы сохранять время ее прошлого запуска на диске или в базе данных. Обращение к строкам в многопользовательском режиме можно защитить с помощью именованных серверных семафоров (см. DBLockStringMutex), однако, часто это не имеет особого смысла из-за низкой важности их значений.

Синтаксис

RestoreGlobalTempString(<Имя переменной (STRING)>):<Значение переменной (STRING)>

Аргументы

  • <Имя переменной (STRING)> - Имя, под которым сохранено необходимое значение. Имя переменной не может быть длиннее 65536 символов, и может содержать любые символы. Если такое имя на сервере отсутствует, функция возвратит пустую строку.

Возвращаемое значение

Возвращает строку ассоцированную с указанным именем. Строка не может быть длиннее 1048576 символов, и может содержать любые символы (в т. ч. нулевые).


Примеры

//Необходимо ли запустить процедуру очистки
Стр:=RestoreGlobalTempString("ОчисткаКаталогаЮрЛица"+аЮЛ.Code);
If _Or(Стр="",GetPeriod(Date(Стр),Date(),4)>14400) Then //4 часа
  //Сохраним текущее время старта процедуры очистки
  StoreGlobalTempString("ОчисткаКаталогаЮрЛица"+аЮЛ.Code,FormatDate(Date(),"dd.mm.YYYY hh:tt:ss"));
  ВыполнитьПроцедуруОчистки(аЮЛ);
EndIf;

...