Часто в работе с учетными системами мы сталкиваемся с вопросом: стоит ли хранить тяжелые объекты непосредственно в теле информационной базы? Распространено мнение, что это приводит к критическому замедлению системы и раздуванию размера файла базы данных. Давайте разберемся, как реализовать этот процесс правильно, опираясь на архитектурные возможности Библиотеки стандартных подсистем (БСП), которая лежит в основе современных конфигураций, таких как 1С:Розница.
Когда данные хранятся непосредственно в структуре БД, каждое обращение к записи заставляет систему считывать полный объем информации. В файловом режиме работы (особенно при использовании РИБ) это создает ощутимые задержки, так как при синхронизации данных между узлами каждый объект передается целиком. Чтобы избежать раздувания .1CD файла и снижения производительности при обмене данными, мы должны использовать профессиональный подход — хранение файлов в томах.
Современные конфигурации на базе БСП содержат встроенный функционал для управления файлами. Вместо того чтобы сохранять контент в поля таблицы БД, система записывает его в специально отведенную директорию (том), а в базе оставляет лишь ссылку (путь) и хеш-сумму для проверки целостности. Разберем по шагам, как это активировать:
Настройки работы с файлами.Хранить файлы в томах на диске.Важное примечание: При работе в облаке на Linux обязательно убедитесь, что у пользователя usr1cv8, от имени которого работает процесс 1С, есть полные права на чтение и запись в целевой каталог. Если права настроены некорректно, система не сможет сохранить данные, что приведет к ошибкам записи.
Рассмотрим, как правильно подготовить контент перед тем, как отправлять его в систему. Даже если мы выносим данные во внешние тома, избыточный вес файлов негативно сказывается на времени формирования отчетов. Мы рекомендуем:
Когда данные лежат в томах, мы можем формировать отчеты, обращаясь к ним напрямую. Проанализируем пример подхода к выводу информации в отчет:
При формировании печатной формы или отчета, система обращается к объекту ПрисоединенныеФайлы. Если файл находится во внешнем томе, платформа динамически считывает его из файловой системы. Это позволяет избежать блокировок основной таблицы базы данных, которые возникали бы при чтении BLOB-объектов.
В коде 1С работа с файлами осуществляется через стандартизированные функции. Например, для получения данных файла можно использовать конструкцию:
// Пример логики получения данных для отчета
ДанныеФайла = ПрисоединенныеФайлы.ПолучитьДанныеФайла(СсылкаНаФайл);
Если ДанныеФайла <> Неопределено Тогда
// Получаем двоичные данные или путь к файлу
ПутьКФайлу = ПолучитьИмяФайлаВТоме(СсылкаНаФайл);
КонецЕсли;
Разберем причины, почему метод хранения в томах предпочтительнее иных «самописных» схем:
.1CD не вырастает до критических размеров, что избавляет от необходимости частого обслуживания и «сжатия» базы.РИБ файлы в томах не передаются при каждой итерации обмена, так как они не являются частью метаданных объекта, а лишь ссылочными данными. Это в разы ускоряет работу магазинов.Таким образом, мы видим, что проблема «тормозов» вызвана не самим фактом наличия контента, а способом его хранения. Внедряя тома хранения, мы превращаем систему в гибкий и быстрый инструмент, готовый к работе с любым объемом данных.