В процессе эксплуатации 1С:Управление торговлей (УТ 11) база данных может стремительно разрастаться из-за хранения изображений товаров, сканов документов и других файлов непосредственно в таблицах SQL или файловом хранилище базы. Это приводит к замедлению резервного копирования и снижению общей производительности системы. Оптимальным решением является вынос файлов во внешние тома на диске. Давайте подробно разберем, как это настроить, какие программные методы использовать и о каких нюансах системного администрирования важно помнить.
Прежде чем мы перейдем к технической реализации, проанализируем преимущества такого подхода. Во-первых, размер базы данных (файла .1CD или SQL-базы) существенно уменьшается. Это упрощает обслуживание индексов и ускоряет выполнение регламентных операций. Во-вторых, работа с файлами через файловую систему ОС зачастую происходит быстрее, чем извлечение бинарных данных из СУБД. В-третьих, это позволяет использовать разные типы носителей: саму базу хранить на быстрых NVMe-дисках, а архивы картинок — на более емких и дешевых HDD или сетевых хранилищах (NAS). Для дополнительного сокращения объема занимаемого дискового пространства полезно использовать обработку для сжатия изображений без внешних компонент.
Рассмотрим процесс включения возможности хранения файлов вне базы данных. Для этого нам необходимо зайти в раздел НСИ и администрирование, далее выбрать пункт Настройка параметров системы и перейти в подраздел Работа с файлами.
В открывшемся окне выполним следующие действия:
Важный момент: путь к тому необходимо указывать в формате UNC (например, \\ServerName\1C_Files), даже если папка находится на том же сервере, где установлен сервер приложений 1С. Это обеспечит корректный доступ к данным в клиент-серверном варианте работы.
Проанализируем ситуацию, с которой часто сталкиваются начинающие администраторы: после настройки тома 1С выдает ошибку доступа. Выясним причину: если ваша база работает в клиент-серверном режиме, запись в папку осуществляет не текущий пользователь Windows, а служба Агент сервера 1С:Предприятия. По умолчанию эта служба может быть запущена от имени системной учетной записи LocalSystem, у которой нет прав на сетевые ресурсы.
Рекомендуем следующий алгоритм настройки:
USR1CV8_Service).Если вы разрабатываете собственный функционал или дорабатываете существующий, вам потребуется использовать методы встроенного языка 1С. Посмотрим на пример того, как правильно добавлять файл в систему, чтобы он гарантированно попал в созданный нами том. В типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем), к которым относится и УТ 11, за это отвечает общий модуль РаботаСФайлами.
Рассмотрим пример кода для добавления нового файла:
// Подготовим структуру параметров для добавления файла
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.ТекущийПользователь();
ПараметрыФайла.ВладелецФайла = СсылкаНаОбъект; // Например, Ссылка на Номенклатуру
ПараметрыФайла.ИмяБезРасширения = "Изображение_Товара_01";
ПараметрыФайла.Расширение = "jpg";
// Добавляем файл из временного хранилища
НоваяСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВоВременномХранилище);
Если ЗначениеЗаполнено(НоваяСсылка) Тогда
Сообщить("Файл успешно сохранен в том на диске.");
КонецЕсли;
Обратите внимание на использование функции РаботаСФайлами.ДобавитьФайл. Именно она инкапсулирует в себе логику проверки настроек: если в системе включено хранение в томах, файл будет автоматически записан на диск, а в базе данных будет создана запись в справочнике Файлы (или НоменклатураПрисоединенныеФайлы), указывающая на этот физический объект. Для интеграции этого функционала в собственные документы через расширение пригодится готовый пример добавления присоединенных файлов без изменения конфигурации.
Допустим, в вашей базе уже накоплено несколько гигабайт изображений. После включения настройки "В томах на диске" новые файлы будут сохраняться на диск, но старые останутся внутри базы. Выясним, как их перенести. В типовой конфигурации УТ 11 предусмотрена регламентная обработка для этих целей.
Разберем порядок действий:
Проанализируем структуру папок, которую создает 1С. Система не сваливает все тысячи картинок в одну директорию. Для оптимизации доступа на уровне ОС создается иерархия подпапок вида 00/ab/f1/.... Сами файлы переименовываются в уникальные идентификаторы GUID. Это позволяет избежать проблем с дублированием имен и ограничений файловых систем на количество файлов в одной папке.
Также важно помнить об ограничении MAX_PATH в Windows (260 символов). Рекомендуем выбирать максимально короткий путь к корню тома (например, D:\1C_Data), чтобы вложенные структуры подпапок 1С не привели к превышению этого лимита при записи файлов с длинными именами.
Критически важный момент: с момента перехода на тома, обычная выгрузка базы в формат .dt или бэкап SQL-базы перестают быть полными. Картинки в них больше не входят. Теперь ваша стратегия резервного копирования должна включать два синхронизированных этапа:
Если восстановить базу из архива вчерашним числом, а папку с файлами оставить сегодняшней, может возникнуть рассинхронизация. Для исправления таких ситуаций используйте отчет Проверка целостности томов. Он позволяет найти "лишние" файлы (которые есть на диске, но нет в базе) и "битые ссылки" (запись в базе есть, а файла на диске физически не существует).
Таким образом, мы детально рассмотрели процесс перехода на внешнее хранение файлов. Это комплексная задача, требующая внимания как со стороны программиста (для корректного использования методов БСП), так и со стороны системного администратора (для настройки прав доступа и регламентов резервного копирования).