Временное хранилище в 1С

Временное хранилище позволяет временно хранить какие-то данные в служебных файлах 1С. Эти данные не будут записаны в базу данных, но они и не будут доступны после завершения сеанса. Обычно временное хранилище используют для передачи файла с клиента на сервер, для передачи больших массивов данных и т.п.

С временным хранилищем можно работать как на сервере, так и на клиенте. Но обращение к хранилищу на клиенте выполняет неявное обращение к серверу.

Как поместить данные во временное хранилище

Для этого используется метод глобального контекста ПоместитьВоВременноеХранилище(). Первым параметром нужно передать данные, которые нужно поместить во временное хранилище. Данный метод вернет адрес во временном хранилище, где будут храниться данные. Например:

Как получить данные из временного хранилища

Для этого используется метод глобального контекста ПолучитьИзВременногоХранилища(). Первым параметром нужно передать адрес во временном хранилище, по которому находятся некие данные (они должны быть предварительно помещены туда методом ПоместитьВоВременноеХранилище). Если по указанному адресу ничего нет, метод вернет Неопределено. Например:

Пример работы с временным хранилищем

Как удалить данные из временного хранилища

Чтобы явно удалить данные из временного хранилища нужно использовать метод УдалитьИзВременногоХранилища(), передав параметром адрес временного хранилища, например:

Как изменить данные во временном хранилище

Если во временном хранилище уже есть какие-то данные и нам нужно получить их, изменить и снова положить туда, то в методе ПоместитьВоВременноеХранилище() можно использовать второй параметр. Туда нужно передать адрес временного хранилища, куда нужно положить данные. Если там уже что-то было, то старые данные будут заменены на новые. Например:

Время жизни данных в хранилище

Если вы внимательно разбирали последний пример, то наверняка заметили такую строчку:

В ней вторым параметром в метод ПоместитьВоВременноеХранилище передается уникальный идентификатор, хотя раньше мы этого не делали. Это нужно для того, чтобы данные во временном хранилище были доступны до окончания сеанса пользователя. При завершении сеанса они будут автоматически удалены из временного хранилища.

Если не заполнять второй параметр, то данные будут удалены из хранилища сразу после завершения серверного вызова. Например:

Если указать уникальный идентификатор формы, то данные будут храниться пока открыта форма с таким идентификатором:

Как узнать является ли переменная адресом временного хранилища

Для этого можно использовать метод ЭтоАдресВременногоХранилища(), передавая ему параметром переменную с потенциальным адресом во временном хранилище. Если переменная является адресом временного хранилища, то метод вернет Истина, иначе Ложь. Например:

Так как адрес временного хранилища является обычной строкой, то можно использовать такой способ:

Получение данных из фонового задания

Через временное хранилище можно получать данные из фонового задания или передавать какие-то данные в фоновое задание. Для этого нужно воспользоваться следующим алгоритмом:

  1. Поместить Неопределено во временное хранилище, получить адрес и передать его в фоновое задание
  2. В фоновом задании поместить по этому адресу данные. Данные будут скопированы в сеанс, который запустил фоновое задание.
  3. Только после выполнения задания можно будет получить данные из хранилища. Для этого можно анализировать состояние выполнения фонового задания (в файловом варианте данные будут доступны до завершения фонового задания).

Передача файла с клиента на сервер через временное хранилище

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: