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

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ ...

МГК "Световые Технологии"
МГК "Световые Технологии"

Отрасль:

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

Специалисты "Кодерлайн" произвели доработки в системе 1С:ЕРП 2.4 с учетом треб...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

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

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

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

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

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

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

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

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

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

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

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

Отрасль:
Металлургическая промышленность

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

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Уч...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:ТОИР Управление ремонтами и обслуживанием оборудования

Мониторинг и анализ ключевых показателей деятельности предприятия Управле...

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

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

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конф...

ПЭК
ПЭК

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

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

- Перевод зарплатных баз с версии ЗУП 2.5 на версию ЗУП 3.1.
- Сопровождение в п...

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

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

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

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

ООО «Иви.ру»
ООО «Иви.ру»

Отрасль:
Медиаиндустрия

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

Подсистема казначейства
Модуль бюджетного контроля по ДДС ...

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

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

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

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