Как очистить тома хранения файлов в 1С и удалить лишние данные с диска

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

При использовании механизма хранения файлов в томах на диске системные администраторы и разработчики часто сталкиваются с проблемой: после удаления документов или записей в 1С физические файлы на сервере остаются нетронутыми. Со временем это приводит к тому, что объем папок на диске в несколько раз превышает реальный объем данных, используемых в информационной базе. В этой статье мы подробно разберем, как привести состояние томов в соответствие с данными базы 1С, используя стандартные средства Библиотеки стандартных подсистем (БСП).

Анализ механизмов хранения файлов в 1С

Прежде чем приступать к удалению, давайте разберем, почему возникает такая ситуация. В 1С файлы, привязанные к объектам (документам, справочникам), хранятся либо непосредственно в базе данных, либо во внешних томах. При выборе хранения в томах в базе сохраняется только ссылка (путь) на файл. Когда пользователь помечает объект на удаление и затем окончательно удаляет его через «Удаление помеченных объектов», запись в базе исчезает, но физический файл на диске может остаться. Это происходит потому, что непосредственное удаление файла с диска в момент удаления записи из БД — операция рискованная и не всегда автоматизированная.

Использование справочника «Тома хранения файлов»

Рассмотрим основной инструмент очистки, который предусмотрен в большинстве современных конфигураций (УТ 11, БП 3.0, ERP 2, КА 2). Для доступа к нему выполним следующие шаги:

  1. Перейдем в раздел Администрирование — Настройки параметров системы — Работа с файлами.
  2. Откроем гиперссылку Тома хранения файлов.
  3. В открывшемся списке выберем нужный том и откроем его карточку.

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

Процедура проверки целостности

Перед любым удалением мы рекомендуем сначала запустить проверку. Проанализируем, что именно делает эта функция. Она сопоставляет список файлов в папке на диске с записями в регистре сведений ПутиКФайлам. По результатам проверки система формирует отчет, где файлы делятся на категории:

Важный нюанс: в некоторых версиях конфигураций (например, в старых релизах УТ 11.1) кнопка удаления может отсутствовать. Как мы видим из обсуждения, функционал полноценной очистки появился в более поздних версиях БСП (начиная с УТ 11.3.3 и аналогичных). Если кнопки нет, стоит убедиться, что программа обновлена до актуального релиза.

Автоматизация процесса: Регламентное задание

Посмотрим, как избавить себя от рутины и настроить автоматическую очистку. В современных версиях 1С существует регламентное задание ОчисткаНенужныхФайлов. Чтобы его настроить:

  1. Зайдем в Администрирование — Обслуживание — Очистка ненужных файлов.
  2. Здесь мы можем установить правила для различных типов объектов. Например, настроим удаление файлов, которые не используются более 30 дней, или файлов, привязанных к определенным видам документов.
  3. Настроим расписание, чтобы процесс запускался ночью, когда нагрузка на дисковую подсистему минимальна.

Технические требования и права доступа

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

1. Права внутри 1С: Пользователь должен обладать ролями ПолныеПрава или СистемноеАдминистрирование. Без них интерфейсные кнопки управления томами могут быть скрыты.

2. Права в операционной системе: Это критически важный момент. Сервер 1С (процесс rphost) работает под определенной учетной записью (часто это USR1CV8). Эта учетная запись должна иметь права на Удаление в сетевой папке, где расположен том. Если права есть только на чтение и запись, 1С сможет добавлять файлы, но при попытке очистки лишних данных ничего не произойдет, хотя система может не выдать явной ошибки в интерфейсе.

Влияние версионирования объектов

Часто возникает ситуация: объект удален, а файл все равно считается «нужным» и не попадает в категорию лишних. Разберем, почему так происходит. Если в базе включено Версионирование объектов, то 1С хранит историю изменений. Даже если основной документ удален, файл может быть привязан к одной из исторических версий этого документа в регистре ВерсииОбъектов. Для очистки устаревших записей регистра версионирования можно использовать обработку для удаления неактуальных версий объектов.

Чтобы очистить такие файлы, сначала необходимо выполнить очистку истории версий:

  1. Перейдем в Администрирование — Обслуживание — Очистка настроек хранения истории изменений.
  2. Выполним удаление устаревших версий.
  3. Только после этого повторно запустим очистку томов.

Риски ручного удаления и программных обработчиков

Рассмотрим предложение из обсуждения использовать обработчик ПередУдалением для немедленного удаления файла с диска. Проанализируем, почему это плохая практика. Посмотрим на пример кода, который часто пытаются внедрить новички:


Процедура ПередУдалением(Отказ)
    // ОПАСНО: Попытка удаления файла напрямую
    ПутьКФайлу = ПолучитьПутьКФайлуВТоме(ЭтотОбъект);
    ФайлНаДиске = Новый Файл(ПутьКФайлу);
    Если ФайлНаДиске.Существует() Тогда
        УдалитьФайлы(ПутьКФайлу);
    КонецЕсли;
КонецПроцедуры

Почему это опасно? Удаление объекта в 1С происходит внутри транзакции. Если после выполнения кода в ПередУдалением произойдет сбой (например, база заблокирована другим процессом или возникла ошибка в другом месте), транзакция откатится, и объект останется в базе. Но файл на диске уже будет удален физически! В итоге вы получите «битую» ссылку, по которой файл никогда не откроется. Правильный подход — использовать типовые механизмы БСП, которые удаляют файлы только после подтвержденного удаления ссылок в БД.

Особенности работы с сетевыми хранилищами (NAS)

В завершение проанализируем ситуацию с дисковыми квотами. Если вы используете продвинутые системы хранения данных (NAS), место на диске может не освобождаться даже после успешного удаления файлов 1С. Это связано с механизмом Snapshots (снимков системы). Файловая система хранит копию удаленного файла для возможности восстановления. В этом случае для реального освобождения места потребуется вмешательство системного администратора для настройки политики хранения снимков на стороне сетевого хранилища.

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

← На главную