1с адрес временного хранилища

Программирование 1С 8.х для начинающих

Общие вопросы

Передача файла с клиента на сервер и обратно.

В связи с новым подходом в программировании на платформе 8.2 возникла необходимость передачи данных между клиентом и сервером при этом прямая передача в виде параметров имеет ряд ограничений. И тогда был введен объект «Временное хранилище».

Чем полезно временное хранилище:

Временное хранилище это не объект конфигурации, а объект платформы поэтому для разработчика он выглядит как черный ящик. Можно туда положить что-то получив псевдоним(адрес) и получить из него что-то указав псевдоним(адрес). Но узнать что находится во временном хранилище и сколько нельзя. В ниже рассмотренных примерах помещение в хранилище происходит на клиенте, а чтение на сервере. Хотя можно передавать данные и в обратном направлении.

Синтаксис работы с хранилищем простой:

УникальныйИдентификатор может быть как новый так и существующей формы, в последнем случае значение в хранилище будет храниться пока существует форма. Если не передать уникальный идентификатор, то при следующем серверном вызове значение уже будет удалено.

Чтобы получить из хранилища нужно только указать адрес:

Также можно удалить помещенный объект, используя адрес

Помещение в хранилище

Здесь мы сначала преобразуем файл в формат двоичных данных и только потом помещаем их в хранилище

Чтение из хранилища

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

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

В параметре Адрес, можно указать Адрес в который нужно записать файл, если нужен новый адрес, то нужно передать пустую строку.

Источник

Программирование 1С 8.х для начинающих

Общие вопросы

Передача файла с клиента на сервер и обратно.

В связи с новым подходом в программировании на платформе 8.2 возникла необходимость передачи данных между клиентом и сервером при этом прямая передача в виде параметров имеет ряд ограничений. И тогда был введен объект «Временное хранилище».

Чем полезно временное хранилище:

Временное хранилище это не объект конфигурации, а объект платформы поэтому для разработчика он выглядит как черный ящик. Можно туда положить что-то получив псевдоним(адрес) и получить из него что-то указав псевдоним(адрес). Но узнать что находится во временном хранилище и сколько нельзя. В ниже рассмотренных примерах помещение в хранилище происходит на клиенте, а чтение на сервере. Хотя можно передавать данные и в обратном направлении.

Синтаксис работы с хранилищем простой:

УникальныйИдентификатор может быть как новый так и существующей формы, в последнем случае значение в хранилище будет храниться пока существует форма. Если не передать уникальный идентификатор, то при следующем серверном вызове значение уже будет удалено.

Чтобы получить из хранилища нужно только указать адрес:

Также можно удалить помещенный объект, используя адрес

Помещение в хранилище

Здесь мы сначала преобразуем файл в формат двоичных данных и только потом помещаем их в хранилище

Чтение из хранилища

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

Читайте также:  кыс мусульманский что это

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

В параметре Адрес, можно указать Адрес в который нужно записать файл, если нужен новый адрес, то нужно передать пустую строку.

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Получение объекта из временного хранилища

Управляемое приложение, платформа 8.3
Необходимо строковые данные записать в таблицу значения, чтобы потом записать ее в таб часть документа Корректировка регистров.
&НаСервере
Процедура ЗаписатьТЗ(Наименование,Остаток)
перем Адрес
Попытка
ТЗ = ПолучитьИзВременногоХранилища(Адрес);
Исключение
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Наименование»);
ТЗ.Колонки.Добавить(«Остаток»);
КонецПопытки;
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Наименование = Наименование;
НоваяСтрока.Остаток = Остаток;

Читайте также:  лептин гормон повышен у мужчин что это значит

при входе в процедуру во второй и последующие разы Адрес неопределен и значение из временного хранилища не получается. Помогите сделать это правильно.

Тип: Строка.
Адрес, указывающий на значение во временном хранилище.
Возвращаемое значение:

Тип: Произвольный.
Значение, ранее помещенное с помощью метода ПоместитьВоВременноеХранилище.
Описание:

Получает значение из временного хранилища.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

Результат выполнения не кэшируется, вызов сервера осуществляется при каждом вызове метода.

(0) Ну так переменная Адрес инициализируется всякий раз при входе в процедуру.

И еще можно не попыткой проверять получены ли данные из ВХ.

Источник

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

С появлением управляемых форм изменился и функционал взаимодействия процедур и функций в модулях форм, объектов и общих модулях 1C. В частности, из-за разделения выполнения кода на «клиент» и «сервер», появились некоторые ограничения на передачу данных между ними. И если передача переменных с простым типом данных осталась такой же, то возникла необходимость изменить передачу переменных сложных типов или больших объёмов данных между «клиентом» и «сервером».

Инструментом для реализации этого является Временное Хранилище в 1С. Этот функционал позволяет организовать временное хранение информации, главным образом для обмена ею при клиент-серверном взаимодействии.

Временное хранилище в 1С для разработчика представлено в виде строковой переменной, в которую помещён адрес, где хранятся данные.

В этой статье рассмотрим 3 основные области применения Временного хранилища в 1С:

1. Работа с файлами в 1С

2. Работа с изображениями в 1С, выводимыми на форму

3. Работа в фоновых заданиях в 1С

Важно знать, что объем данных, помещаемых во временное хранилище 1С (за один вызов метода «ПоместитьВоВременноеХранилище») не должен превышать 4 Гб в сериализованном виде.

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

Если привязка к форме указана, то данные хранятся всё время пока функционирует объект формы. При удалении формы, такое временное хранилище тоже очищается.

Если привязка к форме не указана, то временное хранилище очищается в одном из следующих случаев:

· при контекстном или неконтекстном клиентском вызове из формы;

· при следующем серверном вызове из клиентского общего модуля 1С;

· при серверном вызове из модуля команды;

· при следующем запросе формы.

1. Работа с файлами в 1С

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

Есть задача – нужно, чтобы пользователь на форме выбрал какой-либо файл, и этот файл сохранился в базе. Далее, по запросу пользователя, файл должен быть сохранен из базы в файл на диске.

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

Для иллюстрации будем использовать новые методы работы с файлами, доступными с версии платформы 1С Предприятие 8.3.15.

Ниже приведен код процедур помещения файла в реквизит «ДанныеФайла» объекта справочника:

Команда «СохранитьФайл» вызывается по нажатию кнопки на форме. Процедура «НачатьПомещениеФайлаНаСервер» в данном случае вызывает окно выбора файла и после помещает выбранный файл во временное хранилище. Обработка результата помещения файла происходит в процедуре «ЗавершениеПомещенияФайла».

В переменной «ОписаниеФайла» содержится свойство «Адрес», которое и указывает на временное хранилище выбранного файла. Если файл не выбран, то свойство «ПомещениеФайлаОтменено» переменной «ОписаниеФайла» возвратит «Истина».

Читайте также:  kfc во владикавказе адрес

Сама запись файла в реквизит объекта справочника происходит в процедуре «ПередЗаписьюНаСервере». Для этого сначала анализируется с помощью метода «ЭтоАдресВременногоХранилища» – действительно ли идёт обработка переменной с адресом временного хранилища; потом идёт получение данных файла из временного хранилища с помощью метода «ПолучитьИзВременногоХранилища», но уже на стороне сервера.

Для получения файла из реквизита справочника используется следующий код:

Команда «ПолучитьФайлИзОбъекта» вызывается по нажатию кнопки на форме. Сначала в коде этой команды идёт обращение на сервер, где из реквизита «ДанныеФайла» объекта справочника получаем данные файла в двоичном виде и помещаем их во временное хранилище. Переменная (реквизит формы) «АдресВХранилище» с адресом временного хранилища файла доступна и на клиенте, и на сервере.

Далее возвращаемся на клиент, где снова проверяем, действительно ли «АдресВХранилище» это адрес временного хранилища. В случае положительного ответа вызываем процедуру «НачатьПолучениеФайлаССервера», которая в нашем случае также вызывает диалог выбора файла, в который будут помещены данные.

Важно понимать, что передавать данные файла с типом «Двоичные данные» между клиентом и сервером с помощью параметров методов невозможно. Это не примитивный тип данных. Поэтому и приходится использовать временное хранилище.

2. Работа с изображениями в 1С

По сути изображение в 1С – это тоже файл. Поэтому получение изображения-файла на стороне клиента и помещение его на сервер ничем не отличается от представленного выше кода для работы с файлом.

Тут приведем лишь получение картинки из реквизита справочника и вывод её на форму.

Команда «ПолучитьКартинку» вызывается по нажатию соответствующей кнопки на форме. Для вывода картинки на форму достаточно в реквизитах формы добавить переменную строкового типа (в нашем примере это «Картинка»), вывести её на форму и назначить вид элемента «Поле картинки».

Процедура «ПолучитьНавигационнуюСсылку» получает адрес временного хранилища из данных, указанных в параметрах этой процедуры.

3. Работа в фоновых заданиях в 1С

Для передачи результата выполнения фонового задания в 1С также используются временные хранилища. Само по себе выполнение фонового задания не возвращает результат. Если после выполнения фонового задания необходимо проанализировать полученные данные, то это надо предусмотреть при выполнении фонового задания в 1С.

Схема выполнения с возвратом результата такая:

1. На клиенте вызывается серверная процедура, которая и вызывает нужное фоновое задания с передачей в него параметров и адреса временного хранилища в 1С 8.3. В это временное хранилище будет возвращен результат выполнения.

2. Выполняемое фоновое задание по окончании работы помещает результат в полученное временное хранилище.

3. На клиенте запускается процедура обработчика ожидания 1С, которая ищет выполненное фоновое задание по заданному фильтру. При нахождении получает результат из временного хранилища.

Код в модуле формы:

В общем модуле «ДляФоновыхЗаданий»:

Процедура «Фоновое» вызывает серверную процедуру, которая создает пустое временное хранилище в 1С 8.3 и передает его в качестве параметра в выполнение фонового задания.

Само фоновое задание выполняется в общем модуле. В нашем примере оно просто помещает значение строковой переменной в переданное временное хранилище.

В модуле формы в это время каждую секунду происходит вызов процедуры «ПроверкаВыполненияФоновогоЗаданияНаКлиенте», которая с помощью серверной процедуры «ПроверкаВыполненияФоновогоЗадания» получает значение выполненного фонового задания, показывает его пользователю. Если фоновое задание ещё не выполнилось, то обработчик ожидания 1С не отключается и постоянно производит выполнение процедуры «ПроверкаВыполненияФоновогоЗаданияНаКлиенте».

Источник

Образовательный портал