|

Загрузка файла в хранилище значения на управляемых формах программы 1С: Предприятие 8.3


Содержание:

1. Что такое ХранилищеЗначения в 1С

2. Общая схема загрузки файла в 1С

3. Сохранение файла в объект, чтение хранилища и сохранение файла обратно

В управляемом приложении система 1С: Предприятие 8.3 разработчику часто требуется реализовать механизм загрузки и хранения файлов. Один из универсальных и безопасных способов — использование хранилища значений (ХранилищеЗначения), которое позволяет сохранять двоичные данные любого типа (файл, изображение, документ и т.д.) и легко переносить их между объектами.

В этой статье вы узнаете:

  • ✅ Что такое хранилище значения в 1С
  • ✅ Как загрузить файл на управляемой форме
  • ✅ Как сохранить содержимое в хранилище значения
  • ✅ Как отобразить имя файла и расшифровать его при необходимости

Что такое ХранилищеЗначения в 1С

ХранилищеЗначения — это специальный тип данных в 1С, предназначенный для сохранения произвольных значений (в том числе файлов) в базе данных в виде компактного двоичного представления. Используется, например, в документах, справочниках, регистрах для хранения:

  • Вложений (документы, фото, сканы)
  • Печатных форм
  • Объектов COM или формата XML, JSON и пр.

Общая схема загрузки файла в 1С

  1. Пользователь нажимает кнопку «Загрузить файл»
  2. Открывается диалог выбора файла (ПолучитьФайл)
  3. Полученный файл читается в переменную (например, ДвоичныеДанные)
  4. Создается ХранилищеЗначения с помощью функции ЗаписатьЗначениеВХранилище
  5. Сохраняем хранилище в нужный реквизит (например, документа или формы)
  6. При необходимости — сохраняем имя файла и расширение

️ Пример: Загрузка файла в хранилище на управляемой форме

📌 1. Добавим реквизиты формы

В модуле формы:

1C

КопироватьРедактировать

Перем ФайлХранилище : ХранилищеЗначения;

Перем ИмяФайла : Строка;

📌 2. Кнопка “Загрузить файл”

Добавим команду ЗагрузитьФайл и ее обработчик:

1C

КопироватьРедактировать

Процедура ЗагрузитьФайл(Команда)

    // Открываем диалог выбора файла

    ВыбранныйФайл = ПолучитьФайл(, “Выберите файл для загрузки”);

    Если НЕ ЗначениеЗаполнено(ВыбранныйФайл) Тогда

        Сообщить(“Файл не выбран.”);

        Возврат;

    КонецЕсли;

    // Читаем файл в память

    ДвоичныеДанные = Новый ДвоичныеДанные(ВыбранныйФайл);

    // Создаем хранилище значения

    ФайлХранилище = ЗаписатьЗначениеВХранилище(ДвоичныеДанные);

    // Сохраняем имя файла

    ИмяФайла = ПолучитьИмяФайла(ВыбранныйФайл);

    Сообщить(“Файл загружен: ” + ИмяФайла);

КонецПроцедуры

📌 3. Добавим элементы формы

В режиме редактирования формы 1С добавьте:

  • Кнопку «Загрузить файл», связанную с командой ЗагрузитьФайл
  • Текстовое поле для отображения ИмяФайла (только для просмотра)

Сохранение файла в объект, чтение хранилища и сохранение файла обратно

Если вы хотите сохранить файл в объект (например, в документ), создайте реквизит объекта типа ХранилищеЗначения:

1C

КопироватьРедактировать

РеквизитДокумента: ВложениеФайл (Тип: ХранилищеЗначения)

При записи:

1C

КопироватьРедактировать

Объект.ВложениеФайл = ФайлХранилище;

📥 Чтение хранилища и сохранение файла обратно

Чтобы извлечь файл и сохранить его на диск:

1C

КопироватьРедактировать

Процедура СкачатьФайл()

    Если НЕ ЗначениеЗаполнено(ФайлХранилище) Тогда

        Сообщить(“Файл не загружен.”);

        Возврат;

    КонецЕсли;

    ДвоичныеДанные = ПрочитатьЗначениеИзХранилища(ФайлХранилище);

    ИмяДляСохранения = ПолучитьИмяФайла(ИмяФайла); // можно добавить путь

    СохранитьФайл(ИмяДляСохранения, ДвоичныеДанные);

    Сообщить(“Файл сохранен: ” + ИмяДляСохранения);

КонецПроцедуры

🧪 Пример: Использование в документе «Входящее письмо»

В документ добавлены реквизиты:

  • Вложение (тип: ХранилищеЗначения)
  • ИмяФайла (тип: строка)

На форме:

1C

КопироватьРедактировать

Процедура ЗагрузитьФайл(Команда)

    Файл = ПолучитьФайл();

    Если НЕ ЗначениеЗаполнено(Файл) Тогда

        Возврат;

    КонецЕсли;

    Двоичные = Новый ДвоичныеДанные(Файл);

    Объект.Вложение = ЗаписатьЗначениеВХранилище(Двоичные);

    Объект.ИмяФайла = ПолучитьИмяФайла(Файл);

    ЭлементыФормы.ИмяФайла.Обновить();

КонецПроцедуры

Полезные советы

СоветПояснение
Сохраняйте имя файла отдельноЭто поможет при отображении и выгрузке
Хранилище не занимает много местаЗначения хранятся сжато
Учитывайте ограничение размеров файлаОбычно ограничено 2 ГБ
Для документов PDF и изображений можно сделать предпросмотрЧерез элементы формы (например, “Поле HTML” с встроенной картинкой)

🔐 Безопасность

  • ХранилищеЗначения не читабельно при прямом доступе к БД — это безопасный способ хранения вложений.
  • Можно шифровать содержимое перед сохранением (при необходимости).

🧾 Заключение:

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

Специалист компании ООО “Кодерлайн”,

Веселова Елена


Помогла ли вам статья? Оставьте свой комментарий:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.