Свертка информационной базы — это сложная процедура, направленная на сокращение объема данных и увеличение производительности системы. Однако при использовании механизма хранения файлов во внешних томах (на диске) возникает серьезный риск безвозвратной потери данных. Разберем детально, как взаимосвязаны объекты базы данных и физические файлы на сервере, и почему стандартная свертка может привести к очистке папок с документами.
Для начала проанализируем, как 1С работает с прикрепленными файлами. В современных конфигурациях на базе Библиотеки стандартных подсистем (БСП) файлы могут храниться либо непосредственно в информационной базе (в виде двоичных данных), либо в томах на диске. Рассмотрим второй вариант, так как он наиболее уязвим. Когда мы прикрепляем скан-образ к документу, в базе создается запись в справочнике ПрисоединенныеФайлы (например, РеализацияТоваровУслугПрисоединенныеФайлы). Эта запись содержит ссылку на путь к физическому файлу в сетевой папке или локальном каталоге.
Важно понимать: сама свертка базы (создание документов ввода остатков и пометка на удаление старых документов) файлы не удаляет. Проблемы начинаются на следующих этапах:
ОчисткаНенужныхФайлов. Именно оно является тем механизмом, который физически стирает файлы с диска, если на них больше нет ссылок в базе данных.Выясним причину самой опасной ситуации: когда системный администратор делает копию базы для тестов или свертки, а файлы исчезают из основной рабочей среды. Это происходит из-за того, что копия базы сохраняет настройки подключения к тем же самым томам хранения. Рассмотрим цепочку событий:
Invoice_123.pdf больше нет, значит, он мусорный».Invoice_123.pdf из сетевой папки.Проанализируем шаги, которые необходимо предпринять для безопасного проведения свертки. Мы должны полностью изолировать среду свертки от физических данных.
Шаг 1: Блокировка регламентных заданий. Перед любыми манипуляциями в копии базы необходимо убедиться, что выполнение регламентных заданий заблокировано. Это можно сделать через консоль администрирования кластера 1С или программно.
// Пример программной установки блокировки регламентных заданий
Блокировка = НовыеДанныеБлокировкиСеансов();
Блокировка.УстановитьБлокировкуРегламентныхЗаданий(Истина);
УстановитьБлокировкуСеансов(Блокировка);
Шаг 2: Изменение путей к томам в копии. Сразу после создания копии базы, до запуска свертки и удаления помеченных объектов, необходимо зайти в настройки работы с файлами и изменить пути к томам. Мы можем либо очистить пути, либо указать пустые временные папки. Рассмотрим программный способ проверки путей:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТомаХраненияФайлов.Ссылка КАК Том,
| ТомаХраненияФайлов.ПолныйПутьWindows,
| ТомаХраненияФайлов.ПолныйПутьLinux
|ИЗ
| Справочник.ТомаХраненияФайлов КАК ТомаХраненияФайлов";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
// Здесь необходимо изменить пути на безопасные
ОбъектТома = Результат.Том.ПолучитьОбъект();
ОбъектТома.ПолныйПутьWindows = "C:\TEMP\DummyFiles\";
ОбъектТома.Записать();
КонецЦикла;
Разберем подробнее, как работает это задание в типовых конфигурациях. Оно анализирует записи в регистрах сведений и справочниках файлов. Если файл помечен как «неиспользуемый», система может удалить его не сразу, а по истечении срока хранения, указанного в настройках.
Обратите внимание: В некоторых версиях БСП наблюдались ошибки, когда задание ОчисткаНенужныхФайлов могло ошибочно идентифицировать файлы как лишние. Поэтому рекомендуется устанавливать настройку «Хранить файлы в томах» с осторожностью и всегда иметь свежий архив самих томов (файловой системы), а не только базы данных.
Чтобы избежать потери данных, придерживайтесь следующих правил совместной работы:
.dt файла базы, но и всего каталога томов хранения файлов. Свертка базы без бэкапа файлов — это огромный риск.Если вы обнаружили пропажу файлов после свертки, алгоритм действий должен быть следующим:
ОчисткаНенужныхФайлов во всех базах-копиях.Подведем итог: свертка базы — это не просто удаление строк из таблиц. В современной архитектуре 1С это процесс, затрагивающий внешние ресурсы. Свертка базы может удалить внешние файлы, если не принять меры по изоляции копии базы от рабочих томов хранения. Всегда проверяйте настройки регламентных заданий и права доступа к файловой системе перед началом масштабных очисток данных.