Как реализовать хранение картинок и файлов на диске в 1С:Управление торговлей 11?

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

В процессе эксплуатации 1С:Управление торговлей (УТ 11) база данных может стремительно разрастаться из-за хранения изображений товаров, сканов документов и других файлов непосредственно в таблицах SQL или файловом хранилище базы. Это приводит к замедлению резервного копирования и снижению общей производительности системы. Оптимальным решением является вынос файлов во внешние тома на диске. Давайте подробно разберем, как это настроить, какие программные методы использовать и о каких нюансах системного администрирования важно помнить.

Зачем переносить файлы из базы данных в тома на диске?

Прежде чем мы перейдем к технической реализации, проанализируем преимущества такого подхода. Во-первых, размер базы данных (файла .1CD или SQL-базы) существенно уменьшается. Это упрощает обслуживание индексов и ускоряет выполнение регламентных операций. Во-вторых, работа с файлами через файловую систему ОС зачастую происходит быстрее, чем извлечение бинарных данных из СУБД. В-третьих, это позволяет использовать разные типы носителей: саму базу хранить на быстрых NVMe-дисках, а архивы картинок — на более емких и дешевых HDD или сетевых хранилищах (NAS). Для дополнительного сокращения объема занимаемого дискового пространства полезно использовать обработку для сжатия изображений без внешних компонент.

Шаг 1. Настройка параметров администрирования

Рассмотрим процесс включения возможности хранения файлов вне базы данных. Для этого нам необходимо зайти в раздел НСИ и администрирование, далее выбрать пункт Настройка параметров системы и перейти в подраздел Работа с файлами.

В открывшемся окне выполним следующие действия:

  1. Установим переключатель в положение В томах на диске.
  2. Перейдем по гиперссылке Тома хранения файлов.
  3. В открывшемся списке создадим новый том. Нам потребуется указать его наименование (для идентификации внутри 1С) и полный путь к папке.

Важный момент: путь к тому необходимо указывать в формате UNC (например, \\ServerName\1C_Files), даже если папка находится на том же сервере, где установлен сервер приложений 1С. Это обеспечит корректный доступ к данным в клиент-серверном варианте работы.

Шаг 2. Настройка прав доступа учетной записи службы 1С

Проанализируем ситуацию, с которой часто сталкиваются начинающие администраторы: после настройки тома 1С выдает ошибку доступа. Выясним причину: если ваша база работает в клиент-серверном режиме, запись в папку осуществляет не текущий пользователь Windows, а служба Агент сервера 1С:Предприятия. По умолчанию эта служба может быть запущена от имени системной учетной записи LocalSystem, у которой нет прав на сетевые ресурсы.

Рекомендуем следующий алгоритм настройки:

Шаг 3. Программное взаимодействие с файлами

Если вы разрабатываете собственный функционал или дорабатываете существующий, вам потребуется использовать методы встроенного языка 1С. Посмотрим на пример того, как правильно добавлять файл в систему, чтобы он гарантированно попал в созданный нами том. В типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем), к которым относится и УТ 11, за это отвечает общий модуль РаботаСФайлами.

Рассмотрим пример кода для добавления нового файла:


// Подготовим структуру параметров для добавления файла
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.ТекущийПользователь();
ПараметрыФайла.ВладелецФайла = СсылкаНаОбъект; // Например, Ссылка на Номенклатуру
ПараметрыФайла.ИмяБезРасширения = "Изображение_Товара_01";
ПараметрыФайла.Расширение = "jpg";

// Добавляем файл из временного хранилища
НоваяСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВоВременномХранилище);

Если ЗначениеЗаполнено(НоваяСсылка) Тогда
    Сообщить("Файл успешно сохранен в том на диске.");
КонецЕсли;

Обратите внимание на использование функции РаботаСФайлами.ДобавитьФайл. Именно она инкапсулирует в себе логику проверки настроек: если в системе включено хранение в томах, файл будет автоматически записан на диск, а в базе данных будет создана запись в справочнике Файлы (или НоменклатураПрисоединенныеФайлы), указывающая на этот физический объект. Для интеграции этого функционала в собственные документы через расширение пригодится готовый пример добавления присоединенных файлов без изменения конфигурации.

Шаг 4. Перенос существующих данных в новые тома

Допустим, в вашей базе уже накоплено несколько гигабайт изображений. После включения настройки "В томах на диске" новые файлы будут сохраняться на диск, но старые останутся внутри базы. Выясним, как их перенести. В типовой конфигурации УТ 11 предусмотрена регламентная обработка для этих целей.

Разберем порядок действий:

  1. Перейдите в НСИ и администрирование — Обслуживание — Регламентные операции.
  2. Найдите и запустите регламентное задание Перенос файлов в тома.
  3. Процесс может занять длительное время, поэтому его лучше запускать в периоды минимальной нагрузки на сервер. Система будет последовательно считывать бинарные данные из таблиц и записывать их в текущий активный том, удаляя оригинал из базы данных.

Шаг 5. Структура хранения и лимиты

Проанализируем структуру папок, которую создает 1С. Система не сваливает все тысячи картинок в одну директорию. Для оптимизации доступа на уровне ОС создается иерархия подпапок вида 00/ab/f1/.... Сами файлы переименовываются в уникальные идентификаторы GUID. Это позволяет избежать проблем с дублированием имен и ограничений файловых систем на количество файлов в одной папке.

Также важно помнить об ограничении MAX_PATH в Windows (260 символов). Рекомендуем выбирать максимально короткий путь к корню тома (например, D:\1C_Data), чтобы вложенные структуры подпапок 1С не привели к превышению этого лимита при записи файлов с длинными именами.

Шаг 6. Обслуживание и резервное копирование

Критически важный момент: с момента перехода на тома, обычная выгрузка базы в формат .dt или бэкап SQL-базы перестают быть полными. Картинки в них больше не входят. Теперь ваша стратегия резервного копирования должна включать два синхронизированных этапа:

  1. Создание бэкапа базы данных. При регулярном обслуживании информационных баз этот процесс можно автоматизировать с помощью программы для автоматического архивирования и обновления 1С.
  2. Копирование содержимого папок всех томов хранения.

Если восстановить базу из архива вчерашним числом, а папку с файлами оставить сегодняшней, может возникнуть рассинхронизация. Для исправления таких ситуаций используйте отчет Проверка целостности томов. Он позволяет найти "лишние" файлы (которые есть на диске, но нет в базе) и "битые ссылки" (запись в базе есть, а файла на диске физически не существует).

Таким образом, мы детально рассмотрели процесс перехода на внешнее хранение файлов. Это комплексная задача, требующая внимания как со стороны программиста (для корректного использования методов БСП), так и со стороны системного администратора (для настройки прав доступа и регламентов резервного копирования).

← На главную