Почему обнуляется файл базы данных 1CD при работе по сети и как это исправить?

Системный администратор 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

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

Причины обнуления файла 1CD в сетевом режиме

Проанализируем, почему файловый режим 1С при размещении базы в расшаренной сетевой папке на базе протокола SMB оказывается уязвимым к сбоям:

  1. Отсутствие журналов транзакций (WAL) в файловом движке. Файловая СУБД 1С использует страничную организацию данных (блоки по 4 КБ). Если в момент перезаписи нулевой страницы (заголовка базы данных) происходит кратковременный обрыв сетевого соединения или крах процесса 1С на клиентском ПК, заголовок файла повреждается. При следующем запуске платформа считает базу неинициализированной и может сформировать пустую структуру.
  2. Агрессивное кэширование протоколов SMB2/SMB3. Службы Windows активно кэшируют метаданные и операции записи локально на клиенте (механизмы Opportunistic Locks и Directory Caching). При некорректном разрыве сетевой сессии или некоординированном сбросе кэша разных ПК размер файла на сервере может зафиксироваться как нулевой.
  3. Энергосбережение сетевых карт. Если на ПК пользователя включена функция отключения сетевого адаптера для экономии энергии, при проигрывании простоя сетевая карта отключается. Платформа теряет активный хэндл файла 1CD, что ведет к повреждению структуры при попытке переподключения.
  4. Человеческий фактор и запуск Конфигуратора. Если у пользователей есть доступ к файлу базы или права на запуск в режиме Конфигуратора, неквалифицированные действия (загрузка не того файла .dt или копирование пустой базы в папку с рабочей ИБ) приведут к полному перетиранию данных.

Варианты решения проблемы

Рассмотрев причины, перейдем к техническим решениям. Для гарантированной сохранности данных рекомендуется отказаться от прямого открывания файла 1CD по протоколу SMB.

Способ 1. Переход на клиент-серверный режим (Мини-сервер 1С)

Это наиболее надежный путь решения проблемы. В клиент-серверном режиме клиентские машины не имеют прямого доступа к файловой системе сервера, а все операции с СУБД выполняет служба сервера 1С.

  1. Для небольших рабочих групп (до 5 пользователей) оптимальным выбором является Лицензия на сервер 1С:Предприятие 8 (мини-сервер на 5 подключений).
  2. В качестве СУБД можно использовать бесплатную СУБД PostgreSQL.
  3. В такой архитектуре обрыв сети у пользователя приводит лишь к завершению его сеанса, но не может повредить целостность базы данных.

Способ 2. Использование терминального сервера (RDP)

Если бюджет не предусматривает покупку лицензий сервера 1С, переведем работу пользователей в терминальный режим:

  1. База данных размещается локально на сервере приложений.
  2. Пользователи подключаются к серверу по протоколу RDP и запускают 1С внутри терминальной сессии.
  3. Файл 1CD обрабатывается локальной файловой системой сервера без участия SMB-сети, что полностью исключает сетевые рассинхронизации и повреждения заголовка базы.

Способ 3. Публикация файловой базы на веб-сервере (IIS / Apache)

Платформа 1С позволяет опубликовать файловую базу данных на веб-сервере. В этом случае клиенты подключаются через тонкий или толстый клиент по веб-адресу (например, http://server/base):

  1. С файлом 1CD взаимодействует только веб-сервер (IIS или Apache), установленный на машине с базой.
  2. Пользователи не имеют прямого доступа к файлу по сети, что изолирует базу данных от сбоев клиентских ПК.

Пошаговая настройка локальной сети (если переход на RDP/SQL временно невозможен)

Если необходимо временно сохранить работу по сетевой папке, выполним ряд обязательных системных настроек для снижения рисков:

1. Отключение автономных файлов на сервере и клиентах
В свойствах сетевой папки с базой данных на сервере необходимо полностью отключить механизм «Автономные файлы» (Offline Files), чтобы Windows не пыталась синхронизировать локальный кэш при разрывах связи.

2. Настройка параметров кэширования SMB в реестре Windows
На клиентских компьютерах разберем отключение задержки кэша метаданных. Для этого в ветке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters создадим или изменим следующие параметры типа DWORD (32-bit) со значением 0:

  1. DirectoryCacheLifetime = 0
  2. FileInfoCacheLifetime = 0
  3. FileNotFoundCacheLifetime = 0

3. Отключение энергосбережения сетевых карт
В Диспетчере устройств на рабочих станциях откроем свойства сетевого адаптера, перейдем на вкладку «Управление электропитанием» и снимем флажок «Разрешить отключение этого устройства для экономии энергии». Также в дополнительных свойствах адаптера отключим функции Green Ethernet и Energy Efficient Ethernet.

4. Ограничение прав доступа и запуск аудита
Проанализируем права пользователей на папку с базой данных:

  1. Удалим у обычных пользователей права на запуск Конфигуратора в самой программе 1С.
  2. Закроем доступ к просмотру сетевой папки через Проводник, оставив только права на запись/изменение файлов в каталоге базы без возможности удаления самого каталога.
  3. Настроим аудит событий файловой системы Windows на сервере или используем утилиты системного мониторинга (например, Process Monitor или Sysmon) для отслеживания процесса, выполняющего операции с файлом 1Cv8.1CD.
← На главную