Содержание:
1. Что такое ХранилищеЗначения в 1С
2. Общая схема загрузки файла в 1С
3. Сохранение файла в объект, чтение хранилища и сохранение файла обратно
В управляемом приложении система 1С: Предприятие 8.3 разработчику часто требуется реализовать механизм загрузки и хранения файлов. Один из универсальных и безопасных способов — использование хранилища значений (ХранилищеЗначения), которое позволяет сохранять двоичные данные любого типа (файл, изображение, документ и т.д.) и легко переносить их между объектами.
В этой статье вы узнаете:
- ✅ Что такое хранилище значения в 1С
- ✅ Как загрузить файл на управляемой форме
- ✅ Как сохранить содержимое в хранилище значения
- ✅ Как отобразить имя файла и расшифровать его при необходимости
Что такое ХранилищеЗначения в 1С
ХранилищеЗначения — это специальный тип данных в 1С, предназначенный для сохранения произвольных значений (в том числе файлов) в базе данных в виде компактного двоичного представления. Используется, например, в документах, справочниках, регистрах для хранения:
- Вложений (документы, фото, сканы)
- Печатных форм
- Объектов COM или формата XML, JSON и пр.
Общая схема загрузки файла в 1С
- Пользователь нажимает кнопку «Загрузить файл»
- Открывается диалог выбора файла (ПолучитьФайл)
- Полученный файл читается в переменную (например, ДвоичныеДанные)
- Создается ХранилищеЗначения с помощью функции ЗаписатьЗначениеВХранилище
- Сохраняем хранилище в нужный реквизит (например, документа или формы)
- При необходимости — сохраняем имя файла и расширение
⚙️ Пример: Загрузка файла в хранилище на управляемой форме
📌 1. Добавим реквизиты формы
В модуле формы:
1C
КопироватьРедактировать
Перем ФайлХранилище : ХранилищеЗначения;
Перем ИмяФайла : Строка;
📌 2. Кнопка “Загрузить файл”
Добавим команду ЗагрузитьФайл и ее обработчик:
1C
КопироватьРедактировать
Процедура ЗагрузитьФайл(Команда)
// Открываем диалог выбора файла
ВыбранныйФайл = ПолучитьФайл(, “Выберите файл для загрузки”);
Если НЕ ЗначениеЗаполнено(ВыбранныйФайл) Тогда
Сообщить(“Файл не выбран.”);
Возврат;
КонецЕсли;
// Читаем файл в память
ДвоичныеДанные = Новый ДвоичныеДанные(ВыбранныйФайл);
// Создаем хранилище значения
ФайлХранилище = ЗаписатьЗначениеВХранилище(ДвоичныеДанные);
// Сохраняем имя файла
ИмяФайла = ПолучитьИмяФайла(ВыбранныйФайл);
Сообщить(“Файл загружен: ” + ИмяФайла);
КонецПроцедуры
📌 3. Добавим элементы формы
В режиме редактирования формы 1С добавьте:
- Кнопку «Загрузить файл», связанную с командой ЗагрузитьФайл
- Текстовое поле для отображения ИмяФайла (только для просмотра)
Сохранение файла в объект, чтение хранилища и сохранение файла обратно
Если вы хотите сохранить файл в объект (например, в документ), создайте реквизит объекта типа ХранилищеЗначения:
1C
КопироватьРедактировать
РеквизитДокумента: ВложениеФайл (Тип: ХранилищеЗначения)
При записи:
1C
КопироватьРедактировать
Объект.ВложениеФайл = ФайлХранилище;
📥 Чтение хранилища и сохранение файла обратно
Чтобы извлечь файл и сохранить его на диск:
1C
КопироватьРедактировать
Процедура СкачатьФайл()
Если НЕ ЗначениеЗаполнено(ФайлХранилище) Тогда
Сообщить(“Файл не загружен.”);
Возврат;
КонецЕсли;
ДвоичныеДанные = ПрочитатьЗначениеИзХранилища(ФайлХранилище);
ИмяДляСохранения = ПолучитьИмяФайла(ИмяФайла); // можно добавить путь
СохранитьФайл(ИмяДляСохранения, ДвоичныеДанные);
Сообщить(“Файл сохранен: ” + ИмяДляСохранения);
КонецПроцедуры
🧪 Пример: Использование в документе «Входящее письмо»
В документ добавлены реквизиты:
- Вложение (тип: ХранилищеЗначения)
- ИмяФайла (тип: строка)
На форме:
1C
КопироватьРедактировать
Процедура ЗагрузитьФайл(Команда)
Файл = ПолучитьФайл();
Если НЕ ЗначениеЗаполнено(Файл) Тогда
Возврат;
КонецЕсли;
Двоичные = Новый ДвоичныеДанные(Файл);
Объект.Вложение = ЗаписатьЗначениеВХранилище(Двоичные);
Объект.ИмяФайла = ПолучитьИмяФайла(Файл);
ЭлементыФормы.ИмяФайла.Обновить();
КонецПроцедуры
✅ Полезные советы
| Совет | Пояснение |
| Сохраняйте имя файла отдельно | Это поможет при отображении и выгрузке |
| Хранилище не занимает много места | Значения хранятся сжато |
| Учитывайте ограничение размеров файла | Обычно ограничено 2 ГБ |
| Для документов PDF и изображений можно сделать предпросмотр | Через элементы формы (например, “Поле HTML” с встроенной картинкой) |
🔐 Безопасность
- ХранилищеЗначения не читабельно при прямом доступе к БД — это безопасный способ хранения вложений.
- Можно шифровать содержимое перед сохранением (при необходимости).
🧾 Заключение:
Использование ХранилищеЗначения в управляемых формах — простой и эффективный способ загрузки, хранения и работы с файлами в 1С. Вы можете легко интегрировать этот механизм в документы, справочники, обработки и отчеты. Он особенно полезен для реализации системы электронного документооборота, загрузки приложений к заявкам, сканов, инструкций и других вложений.
Специалист компании ООО “Кодерлайн”,
Веселова Елена
Добавить комментарий