Почему возникает ошибка «Хранилище двоичных данных недоступно в этой версии продукта» и на что влияет режим хранилища?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При попытке вынести двоичные данные (например, присоединенные файлы, сканы документов, архивы) во внешние хранилища, такие как S3-совместимые сервисы, разработчики часто сталкиваются с системными ограничениями платформы 1С:Предприятие 8.3. Разберем практическую ситуацию, когда типовая конфигурация находится на поддержке без возможности изменения («на замке»), свойство конфигурации Режим хранилища двоичных данных установлено в значение Не использовать, а стандартная обработка подключения внешнего хранилища выгружена как внешняя.

Рассмотрим, почему попытка обойти запрет через внешнюю обработку вызывает исключение, на что на самом деле влияет указанное свойство конфигурации и какие существуют альтернативные пути решения поставленной задачи.

Анализ проблемы: почему не удается подключить S3 через внешнюю обработку

Проанализируем механику работы платформы при программном добавлении хранилища. При использовании внешней обработки вызов метода добавления выглядит следующим образом:


ПараметрыПодключения = Новый ПараметрыПодключенияВнешнегоХранилищаДвоичныхДанныхS3;
// Заполнение параметров доступа (Endpoint, Bucket, Keys)
ВнешниеХранилищаДвоичныхДанных.Добавить(ПараметрыПодключения);

В момент исполнения метода ВнешниеХранилищаДвоичныхДанных.Добавить() (или его англоязычного аналога BinaryDataExternalStorages.Add()) платформа генерирует системную ошибку: «Хранилище двоичных данных недоступно в этой версии продукта». Это происходит потому, что платформа производит глубокую валидацию окружения на уровне ядра:

  1. Проверка свойства корня конфигурации: Платформенный метод ХранилищеДвоичныхДанных.ПолучитьДоступностьХранилищаДвоичныхДанных() анализирует значение свойства Режим хранилища двоичных данных. Если там установлено Не использовать, функция возвращает Ложь, блокируя любые манипуляции с хранилищем на уровне метаданных.
  2. Требование лицензии КОРП: Начиная с версии платформы 8.3.25 функционал встроенных внешних хранилищ двоичных данных переведен в категорию корпоративных функций. Для добавления новых хранилищ и записи данных требуется наличие серверной лицензии 1С:Предприятие 8 КОРП. На лицензиях уровня ПРОФ создание и добавление хранилищ заблокировано платформенно.
  3. Клиент-серверный режим: Хранилище двоичных данных принципиально не функционирует в файловых информационных базах. Механизм предназначен исключительно для клиент-серверного варианта работы под управлением сервера 1С.

Взаимосвязь свойства «Режим хранилища двоичных данных» и режима совместимости

Выясним причину отображения данного свойства в палитре свойств конфигурации. Поведение платформы жестко привязано к свойству Режим совместимости:

  1. Если режим совместимости конфигурации установлен в диапазоне от «Версия 8.3.10» до «Версия 8.3.21», свойство Режим хранилища двоичных данных доступно разработчику. По умолчанию в конфигурациях, созданных на этих версиях, оно находится в значении Не использовать. Переопределить его через механизм расширений невозможно — общие свойства корня конфигурации расширениями не модифицируются.
  2. Если режим совместимости конфигурации поднят до «Версия 8.3.22» и выше (или установлен в значение Не использовать), данное свойство скрывается из палитры свойств. В этом случае метод ХранилищеДвоичныхДанных.ПолучитьДоступностьХранилищаДвоичныхДанных() всегда возвращает Истина по умолчанию.

Способы решения задачи выноса файлов в S3

Рассмотрим подробно варианты действий в зависимости от имеющейся инфраструктуры и ограничений проекта.

Вариант 1. Использование штатного механизма (при наличии лицензий КОРП)

Если сервер работает под лицензией КОРП, необходимо внести изменения в корень конфигурации. Разберем шаги:

  1. Откроем конфигуратор и перейдем в меню Конфигурация — Поддержка — Настройка поддержки.
  2. Включим возможность изменения конфигурации с сохранением поддержки.
  3. В свойствах корня конфигурации переведем свойство Режим хранилища двоичных данных в значение Использовать (либо повысим Режим совместимости до 8.3.22 или выше, если это допустимо для конфигурации).
  4. Сохраним и применим изменения метаданных в информационной базе.
  5. Запустим типовую обработку Управление хранилищем двоичных данных и настроим интеграцию с S3-бакетом.

Вариант 2. Работа с S3 через REST API без снятия конфигурации с замка (ПРОФ и КОРП)

Если конфигурацию нельзя снимать с поддержки или используются стандартные лицензии уровня ПРОФ, подключить S3 штатным менеджером ВнешниеХранилищаДвоичныхДанных не получится. В этом случае задачу решают с помощью собственного расширения конфигурации или внешней обработки, реализующей прямую работу с API объектного хранилища.

Посмотрим на пример отправки файла в S3-совместимое хранилище с использованием стандартного объекта HTTPСоединение:


// Создаем защищенное соединение для отправки данных
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("s3.storage.provider.com", 443, , , , 30, ЗащищенноеСоединение);

// Формируем заголовки авторизации (AWS Signature v4)
Заголовки = Новый Соответствие;
Заголовки.Вставить("Host", "s3.storage.provider.com");
Заголовки.Вставить("x-amz-date", ФорматДатыISO8601);
Заголовки.Вставить("Authorization", СтрокаАвторизации);

Запрос = Новый HTTPЗапрос("/my-bucket/" + ИмяФайла, Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ФайлДвоичныеДанные);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Или Ответ.КодСостояния = 204 Тогда
    // Файл успешно помещен в S3
КонецЕсли;

Такой подход полностью изолирован в расширении, работает на платформе ПРОФ и не зависит от свойства Режим хранилища двоичных данных.

Вариант 3. Монтирование бакета в файловую систему сервера

Разберем еще один надежный вариант, не требующий модификации конфигурации 1С:

  1. На сервере, где запущен кластер 1С:Предприятия, настраивается монтирование S3-бакета в виде локального каталога файловой системы (для Linux используется s3fs или rclone mount, для Windows — специализированные драйверы).
  2. В режиме «1С:Предприятие» в типовой подсистеме Библиотеки стандартных подсистем (БСП) «Работа с файлами» включается хранение файлов в томах на диске.
  3. В качестве пути к тому указывается смонтированная папка S3.

В результате платформа 1С прозрачно сохраняет файлы на диск штатными средствами БСП, а операционная система на лету синхронизирует их с S3-хранилищем, полностью снимая зависимость от типа лицензий платформы 1С.

← На главную