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

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

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

Проанализируем природу этой неполадки, выясним причину конфликтов совместного доступа и подробно рассмотрим пошаговые методы устранения проблемы.

Почему возникает блокировка и взаимное зависание сеансов

Файловая информационная база 1Cv8.1CD при сетевом доступе через протокол SMB (общие папки Windows) не имеет выделенного сервера приложений. Вся нагрузка по выполнению запросов ложится на клиентские компьютеры, а синхронизация между ними выполняется операционной системой через механизм блокировок диапазонов байтов файла.

Взаимная блокировка сеансов чаще всего вызвана следующими факторами:

  1. Механизм оппортунистических блокировок (Opportunistic Locks / Oplocks) и лизинг SMB: когда первый ПК открывает базу, операционная система хоста предоставляет ему монопольный кэш файла. При подключении второго компьютера сервер SMB пытается отозвать блокировку у первого клиента (происходит так называемый oplock break). Если сетевой стек дает сбой или происходят задержки, системный вызов блокировки зависает по таймауту.
  2. Накопление поврежденного кэша конфигурации: некорректно завершенные сеансы и поврежденные локальные файлы кэша на клиентских машинах провоцируют конфликты при повторной инициализации метаданных.
  3. Фоновое сканирование антивирусом: защитные средства сканируют открываемый по сети файл 1Cv8.1CD или временные служебные файлы блокировок, монопольно перехватывая системный дескриптор.
  4. Ошибки и аппаратные разгрузки сетевых адаптеров: технологии энергосбережения и выгрузки контрольных сумм на сетевой плате могут терять сигналы подтверждения блокировок между ПК.
  5. Остаточные файлы блокировок: аварийно закрытые программы оставляют в каталоге базы служебные файлы синхронизации.

Шаг 1. Очистка пользовательского кэша 1С

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

Выполним очистку на всех клиентских компьютерах:

  1. Полностью закроем все запущенные процессы 1cv8.exe или 1cv8s.exe через Диспетчер задач.
  2. Перейдем в каталоги временных файлов текущего пользователя Windows: %AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8 (или каталоги с соответствующими именами для вашей версии платформы).
  3. Удалим все вложенные папки с длинными буквенно-цифровыми идентификаторами (GUID), в которых хранится кэш метаданных и настроек форм.
  4. Перезапустим клиентскую часть и проверим вход.

Шаг 2. Проверка прав доступа и удаление зависших файлов блокировок

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

Выполним проверку каталога базы данных:

  1. Убедимся, что на вкладках «Доступ» и «Безопасность» для общей папки у всех пользователей выставлены разрешения «Полный доступ» (Full Control).
  2. Попросим всех пользователей выйти из базы данных.
  3. Откроем сетевую папку с файлом 1Cv8.1CD и проверим наличие временных файлов блокировок с расширениями .1CL и .cfl. Если сеансы завершены, а эти файлы все еще присутствуют в каталоге, удалим их вручную.

Шаг 3. Отключение Oplocks и лизинга SMB на сервере/хосте

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

Разберем настройку системного реестра Windows на компьютере-хосте:

  1. Нажмем комбинацию клавиш Win + R, введем regedit и нажмем клавишу Enter.
  2. Перейдем в раздел: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  3. Создадим или изменим параметр типа DWORD (32 бита) с именем EnableOplocks и присвоим ему значение 0.
  4. Для современных версий Windows с протоколами SMBv2 и SMBv3 в этом же разделе создадим параметр типа DWORD (32 бита) с именем DisableLeasing и установим значение 1.
  5. На клиентских рабочих станциях в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters установим в значение 0 параметры кэширования каталогов: DirectoryCacheLifetime, FileInfoCacheLifetime и FileNotFoundCacheLifetime (тип DWORD).
  6. Перезагрузим компьютеры для применения параметров сетевого стека.

Шаг 4. Настройка сетевых адаптеров и антивирусных исключений

Микроразрывы и задержки пакетов сетевых блокировок часто вызваны функциями энергосбережения сетевой карты и сканированием дисковых операций антивирусными мониторами.

Проведем оптимизацию оборудования и защиты:

  1. Откроем Диспетчер устройств на всех компьютерах, найдем используемый сетевой адаптер и откроем его свойства.
  2. На вкладке «Управление электропитанием» снимем флажок с пункта «Разрешить отключение этого устройства для экономии энергии».
  3. На вкладке «Дополнительно» найдем и отключим опции Large Send Offload (LSO), IPv4 Checksum Offload, а также параметры энергосбережения вроде Energy Efficient Ethernet или Green Ethernet.
  4. В настройках антивируса или встроенного Защитника Windows добавим каталог с базой данных, маску *.1CD и исполняемый файл 1cv8.exe в список исключений сканирования на всех рабочих местах.

Шаг 5. Проверка целостности базы утилитой chdbfl.exe

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

Выполним тестирование физической структуры файла:

  1. Обязательно создадим резервную копию файла 1Cv8.1CD, скопировав его в отдельную локальную папку.
  2. Перейдем в каталог установленной платформы (обычно путь выглядит как C:\Program Files\1cv8\номер_версии\bin\).
  3. Запустим утилиту chdbfl.exe.
  4. Укажем путь к файлу базы данных, установим флажок «Исправлять обнаруженные ошибки» и нажмем кнопку «Выполнить».
  5. Дождемся окончания проверки и отчета об исправлении поврежденных таблиц или заголовков.

Альтернативные архитектурные решения

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

  1. Выделенный файловый ресурс на Linux (Samba): перенос базы данных на сетевой диск под управлением Linux с Samba-сервером. В конфигурационном файле smb.conf для общей папки отключаются оппортунистические блокировки директивами oplocks = no и level2 oplocks = no. Это исключает сетевые сбои Windows Oplocks и обеспечивает стабильный одновременный доступ.
  2. Использование терминального доступа (RDP): запуск всех сеансов 1С локально на одном компьютере (сервере) полностью исключает передачу больших массивов данных базы по локальной сети и снимает проблему сетевых блокировок протокола SMB.
← На главную