1С 8.3 Хранилище двоичных данных - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Хранилище двоичных данных

Данные > Примеры кода 1С > 1С 8.3 Файлы, каталоги
Перейти в раздел примеры кода 1С 8.3:
Хранилище двоичных данных (ХДД) это механизм платформы 1С:8.3, 8.5, позволяющий хранить большие объёмы тяжёлых данных (сканы документов, изображения, видео, аудио, архивы) вне основной базы данных.Вместо того чтобы перегружать SQL‑сервер, такие объекты сохраняются в отдельном файловом каталоге или во внешнем S3‑совместимом хранилище. Таким образом, база данных остаётся компактной и быстрой, а двоичные объекты хранятся в специализированной среде.

Основные преимущества:
  • Снижение нагрузки на СУБД - база работает быстрее, так как не хранит гигабайты бинарных данных.
  • Ускорение обновлений и обслуживания - резервное копирование и восстановление выполняются быстрее.
  • Масштабируемость - можно подключать внешние S3‑хранилища и распределять нагрузку.
  • Гибкость - администратор задаёт минимальный размер объекта, начиная с которого данные будут уходить в ХДД.
  • Прозрачность для разработчика - реквизиты типа ХранилищеЗначения автоматически сохраняются в ХДД, без дополнительного кода.

Настройка и использование:
  • Включение ХДД производится через Функции для технического специалиста.
  • Указывается минимальный размер объекта (например, 1 МБ). Всё, что больше - уходит в ХДД.

В качестве хранилища можно выбрать:
  • каталог файловой системы;
  • внешнее S3‑хранилище (например, MinIO, Amazon S3, Яндекс Object Storage).

Работает только в клиент‑серверном режиме (файловые базы не поддерживаются).

Новые возможности последних релизов:
  • в 8.3.24 появилась дедупликация данных: система автоматически удаляет дубликаты файлов, экономя место. Также добавлен доступ к статистике хранилища (объём, количество объектов, время последней очистки).
  • в 8.3.27 интерактивное и программное управление хранилищем (через rac, Java API, COM).
  • в 8.3.28 внедрено горизонтальное масштабирование: можно использовать несколько сервисов ХДД и распределять нагрузку. Также реализован механизм переноса данных из базы в ХДД и обратно.

Практические сценарии:
  • Архив документов: сканы договоров и актов хранятся в S3, а в базе остаются только ссылки.
  • Фото и медиа: карточки товаров с изображениями не перегружают SQL‑сервер.
  • Корпоративные внедрения: при объёмах в терабайты ХДД позволяет масштабировать систему без потери производительности.
Загрузка файла в документ в 1С 8.3:
// Процедура загружает внешний файл (например, PDF, изображение или текстовый документ)
// и сохраняет его в реквизите документа в виде объекта ХранилищеЗначения.
// Это позволяет хранить вложения прямо в базе данных 1С, а не только на диске.
// Задача: прикрепить файл к документу и обеспечить его сохранность в системе.

Процедура ЗагрузитьФайлВДокумент(ИмяФайла, ДокументОбъект)

   // Загружаем файл в двоичные данные:
   ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
   // Оборачиваем в ХранилищеЗначения:
   Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные);
   // Записываем в реквизит документа:
   ДокументОбъект.Вложение = Хранилище;
   // Сохраняем документ:
   ДокументОбъект.Записать();

КонецПроцедуры
Сохранение файла из документа на диск в 1С 8.3:
// Процедура извлекает ранее сохранённое вложение из документа
// и сохраняет его обратно на диск в виде файла.
// Задача: выгрузить вложение из базы 1С для дальнейшего использования вне системы.

Процедура СохранитьФайлИзДокумента(ДокументОбъект, ИмяФайла)

   // Получаем двоичные данные из хранилища
   ДвоичныеДанные = ДокументОбъект.Вложение.Получить();
   // Сохраняем на диск
   ДвоичныеДанные.Записать(ИмяФайла);

КонецПроцедуры
Проверка наличия вложения в 1С 8.3:
// Функция проверяет, есть ли у документа вложение.
// Возвращает Истина, если вложение отсутствует, и Ложь - если оно есть.
// Задача: быстро определить, прикреплён ли файл к документу.

Функция ЕстьВложение(ДокументОбъект) Экспорт

   Возврат НЕ ЗначениеЗаполнено(ДокументОбъект.Вложение);

КонецФункции
Сохранение структуры в документ в 1С 8.3:
// Процедура создаёт структуру с дополнительными данными (например, автор, дата, комментарий)
// и сохраняет её в реквизите документа через ХранилищеЗначения.
// Задача: хранить метаданные или служебную информацию, связанную с документом.

Процедура СохранитьСтруктуруВДокумент(ДокументОбъект)

   // Создаём структуру
   СтруктураДанных = Новый Структура;
   СтруктураДанных.Вставить("Автор", "Артур");
   СтруктураДанных.Вставить("Дата", ТекущаяДата());
   СтруктураДанных.Вставить("Комментарий", "Пример использования ХранилищеЗначения");

   // Сохраняем в хранилище
   ДокументОбъект.ТехническиеДанные = Новый ХранилищеЗначения(СтруктураДанных);
   ДокументОбъект.Записать();

КонецПроцедуры
Получение структуры из документа в 1С 8.3:
// Функция извлекает сохранённую структуру из документа.
// Если данные есть - возвращает структуру, если нет - возвращает Неопределено.
// Задача: получить ранее сохранённые метаданные или служебную информацию.

Функция ПолучитьСтруктуруИзДокумента(ДокументОбъект) Экспорт

   Если ЗначениеЗаполнено(ДокументОбъект.ТехническиеДанные) Тогда
       Возврат ДокументОбъект.ТехническиеДанные.Получить();
   Иначе
       Возврат Неопределено;
   КонецЕсли;

КонецФункции
Итог:
Хранилище двоичных данных в 1С 8.3  это стратегический инструмент для оптимизации работы крупных информационных баз. Оно снижает нагрузку на СУБД, ускоряет администрирование и открывает путь к гибкой интеграции с современными облачными сервисами. Для разработчика и администратора это означает меньше проблем с раздутыми базами, больше контроля над хранением, возможность строить масштабируемые решения уровня enterprise.
💡Эволюция методов ХДД в 1С 8.3:
>8.3.23
ЗагрузитьДифференциальнуюРезервнуюКопию(). Загружает дифференциальную резервную копию хранилища двоичных данных.
ЗагрузитьПолнуюРезервнуюКопию(). Загружает полную резервную копию хранилища двоичных данных.
ПолучитьМинимальныйРазмерЗаписываемыхДанных(). Возвращает минимальный размер записываемых данных (размер порции).
ПолучитьРежимИспользованияХранилищаДвоичныхДанных(). Возвращает режим использования хранилища двоичных данных.
ПолучитьРежимЧтенияЗаписиХранилищаДвоичныхДанных(). Возвращает режим работы хранилища двоичных данных (чтение/запись).
СоздатьДифференциальнуюРезервнуюКопию(). Создает дифференциальную резервную копию хранилища двоичных данных.

>8.3.24
ОчиститьНеиспользуемоеМестоПоУниверсальнойДате(). Физически удаляет помеченные на удаление данные до указанной даты (UTC).
ПолучитьУниверсальнуюДатуСозданияРезервнойКопии(). Возвращает дату начала создания указанной резервной копии (UTC).
СоздатьПолнуюРезервнуюКопию(). Создает полную резервную копию хранилища двоичных данных.

>8.3.26
ПолучитьИспользованиеКакХранилищаПоУмолчанию(). Возвращает признак использования хранилища двоичных данных по умолчанию.
ПолучитьРежимРазмещенияКопийДанныхВХранилищеДвоичныхДанных(). Возвращает режим размещения копий данных в хранилище двоичных данных.
ПолучитьСоставХранимыхДанных(). Возвращает состав хранимых данных для настройки записи объектов метаданных.
📰 Актуальные новости с тегом #ХДД:
  • В версии 8.5.3 улучшено хранилище двоичных данных, позволяющее экономить место и ускорять работу с большими файлами.  Теперь несколько баз данных могут использовать одно хранилище, а работа с историей данных оптимизирована.  Эти изменения повышают эффективность и удобство использования системы.
    • Работа нескольких информационных баз с одним хранилищем двоичных данных
    • Поддержка хранилища двоичных данных для истории данных
    • Оптимизация запросов к хранилищу двоичных данных
    • Использование хранилища двоичных данных при миграции или загрузки из файлов *.dt
    • Удаление данных из хранилища двоичных данных при удалении объекта метаданных
  • В версии 8.3.29 (она же 8.5.3) реализовано хранилище двоичных данных: для автоматического распределения данных между серверами, исходя из частоты обращения к ним. Система будет определять данные на: "горячие", которые чаще используются; "холодные" — редко.
    • Распределение по серверам будет осуществляться с учетом их производительности: горячие данные отправятся на более быстрые серверы с SSD-дисками; а холодные — на менее производительные. Это поможет оптимизировать ресурсы и повысить производительность системы особенно на крупных внедрениях. А также работа нескольких инфобаз с одним хранилищем двоичных данных.
  • В версии 8.3.28 (она же 8.5.2) реализовано горизонтальное масштабирование хранилища двоичных данных и механизм переноса данных из хранилища двоичных данных в базу данных и обратно.
  • В версии 8.3.27 (она же 8.5.1) реализована возможность управления хранилищами двоичных данных через командную строку.
  • В версии 8.3.27 (она же 8.5.1) реализована поддержка лимитов для S3 хранилищ.
  • В версии 8.3.26 реализована настройка размещения данных в хранилищах двоичных данных.
  • В версии 8.3.24 поддержана возможность подключения к внешним хранилищам двоичных данных по протоколу S3, реализована дедупликация двоичных данных.
  • В версии 8.3.23 реализовано управление табличными пространствами базы данных (возможность размещения части БД на самом быстром диске).
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 06.10.2025
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Назад к содержимому