06.11.2020 Османов Нагим 57033
Временное хранилище в 1С

Содержание:

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

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

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


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


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


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


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


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

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

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


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


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


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


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


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

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

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

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


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


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


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


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


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


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


код процедур помещения файла


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


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


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


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


ПолучитьИзВременногоХранилища


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


обработчик ожидания 1С


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


модуль ДляФоновыхЗаданий


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


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


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


Специалист компании ООО «Кодерлайн»

Османов Нагим Мавлетгалиевич

 

Наши проекты

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходов и расходов в разрезе управленческого учета - Установлены форм...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные активы
Расчеты с контрагентами
Регламентированная ...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:

- Совместная работа по внедрению разных решений, в том числе «1С:ERP Управление предприятием», «1С:Управление корпоративными финансами»...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Бухгалтерский учет
- Расчет зарплаты и кадровый учет
- Налоговый учет ...

ООО «Фипар»
ООО «Фипар»

Отрасль:

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Специалисты «Кодерлайн» внедрили «1С:ERP. Управление предприятием 2» и автоматизировали блоки: продажи, закупки, производство, складская и т...

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

- Взаиморасчеты с поставщиками
- Учет прихода ТМЦ
- Взаиморасчеты с покупателями
- Учет продаж ТМЦ
- Управление складскими ...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление заказов покупателей;
- Планирование продаж ...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот» для сервиса «1С:Облачная карта решений»; - Возможность интеграц...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам
- Оформление заказов покупателей
- Управление складскими запасами ...

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты
- Планирование и учет производства собственных изделий ...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Бухгалтерия КОРП

Бухгалтерский учет Производственные операции Регламентированная отчетность Учет в обособленных подразделениях Налоговый учет ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение