06.11.2020 Османов Нагим 63357
Временное хранилище в 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С:Управление холдингом

- Бухгалтерский учет;
- Налоговый учет;
- МСФО (GAAP/управленческий учет);
- ...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

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

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

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

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

Внедренное типовое решение:
1С:Управление корпоративными финансами

- Финансово-бухгалтерский блок
- Казначейство ...

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

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

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

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

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

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

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

Отрасль:
Нефтесервис

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

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение...

ООО «Экслтрейд»
ООО «Экслтрейд»

Отрасль:
Торговля

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

Оформление заказов поставщикам Оптовая торговля Торговые операции ...

Компания IBS
Компания IBS

Отрасль:
Системный интегратор

Внедренное типовое решение:
1С:Управление производственным предприятием

- Интеграция систем – АСУП и «1С:Управление производственным предприятием»...

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

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

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

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

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

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

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

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

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

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

Внедренное типовое решение:
1С:Управление производственным предприятием

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

ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)
ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)

Отрасль:
Оптовая торговля транспортными средствами и оборудованием

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

- Финансы, управленческий учет, мониторинг показателей
- Бухгалтерский уче...

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

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

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

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