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

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

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

Понимание архитектуры хранения файлов

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

Метод 1: Разграничение прав на уровне операционной системы

Самый надежный способ — ограничить доступ на уровне прав пользователей ОС, под которыми работают серверы 1С. Рассмотрите следующие шаги:

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

Метод 2: Программная защита при старте системы

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


// Пример проверки и блокировки
Если Не ЭтоПродуктивнаяБаза() Тогда
    // Можно принудительно переключить путь к томам на локальную папку
    // или установить флаг, запрещающий запись в тома
    Константы.РежимРаботыСФайлами.Установить(Перечисления.РежимыРаботыСФайлами.ТолькоЧтение);
    Предупреждение("Внимание! Это тестовая база. Запись в тома файлов заблокирована во избежание повреждения данных.");
КонецЕсли;

Метод 3: Использование различных томов для тестов

Рассмотрим административный подход: создание выделенного тома для тестовых нужд. Разберем действия по шагам:

  1. В тестовой базе зайдите в Настройка программы — Работа с файлами.
  2. Создайте новый том, физически расположенный на другом диске или в другой папке тестового сервера.
  3. Назначьте этот том основным для добавления новых файлов в тестовой среде.
  4. Для «старых» томов, перенесенных из продуктивной базы, установите статус Только чтение, если это позволяет функционал вашей конфигурации.

Метод 4: Особенности удаления файлов и регламентные задания

Будьте крайне осторожны с регламентными заданиями, которые очищают помеченные на удаление файлы. В 1С есть механизм, когда при пометке объекта на удаление ПутьКФайлу может меняться на путь с добавлением суффикса _remove. Если в тестовой базе запустить процесс удаления, который физически стирает данные или переименовывает файлы, вы рискуете «уронить» доступ к документам в проде.

Проанализируйте код, отвечающий за удаление файлов. Часто можно найти использование конструкции, подобной этой:


// Фрагмент логики обработки удаления
ФайлИлиВерсияОбъект.ПутьКФайлу = ФайлИлиВерсияОбъеку.ПутьКФайлу + "_remove";
УдалитьФайлы(ПутьКФайлу);

Если вы не планируете использовать функционал удаления в копии, рекомендуем полностью отключать регламентные задания по очистке файлов в тестовых базах.

Заключение: чек-лист безопасности

Чтобы избежать проблем с хранилищем файлов при копировании базы, всегда придерживайтесь этих правил:

Помните, что использование томов на диске перекладывает ответственность за целостность данных с SQL-сервера на администратора файловой системы. Будьте внимательны при настройке прав доступа!

← На главную