Разберем распространенную и крайне неприятную проблему при совместной работе в файловом режиме: когда один пользователь входит в базу данных, расположенную в сетевой папке, второй пользователь при попытке запуска сталкивается с бесконечным зависанием программы еще до появления диалогового окна выбора пользователя. Более того, в этот же момент начинает «намертво» висеть сеанс и у первого пользователя, а платформа может выдавать системную ошибку: «Ошибка СУБД: не удалось зафиксировать файл базы данных для открытия или изменения».
Проанализируем природу этой неполадки, выясним причину конфликтов совместного доступа и подробно рассмотрим пошаговые методы устранения проблемы.
Файловая информационная база 1Cv8.1CD при сетевом доступе через протокол SMB (общие папки Windows) не имеет выделенного сервера приложений. Вся нагрузка по выполнению запросов ложится на клиентские компьютеры, а синхронизация между ними выполняется операционной системой через механизм блокировок диапазонов байтов файла.
Взаимная блокировка сеансов чаще всего вызвана следующими факторами:
1Cv8.1CD или временные служебные файлы блокировок, монопольно перехватывая системный дескриптор.Начнем диагностику с базовой процедуры, предложенной на форуме. Поврежденный локальный кэш пользователя часто мешает корректному чтению динамических обновлений структуры базы при старте сеанса.
Выполним очистку на всех клиентских компьютерах:
1cv8.exe или 1cv8s.exe через Диспетчер задач.%AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8 (или каталоги с соответствующими именами для вашей версии платформы).Для корректной работы файловой базы каждый подключенный пользователь должен обладать полными правами на чтение, запись, изменение и удаление файлов в сетевом каталоге.
Выполним проверку каталога базы данных:
1Cv8.1CD и проверим наличие временных файлов блокировок с расширениями .1CL и .cfl. Если сеансы завершены, а эти файлы все еще присутствуют в каталоге, удалим их вручную.Главная техническая причина ошибки фиксации файла базы при одновременном открытии — некорректная работа оппортунистических блокировок SMB. Отключим их на компьютере, где физически размещена расшаренная папка с базой данных.
Разберем настройку системного реестра Windows на компьютере-хосте:
Win + R, введем regedit и нажмем клавишу Enter.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\ParametersEnableOplocks и присвоим ему значение 0.DisableLeasing и установим значение 1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters установим в значение 0 параметры кэширования каталогов: DirectoryCacheLifetime, FileInfoCacheLifetime и FileNotFoundCacheLifetime (тип DWORD).Микроразрывы и задержки пакетов сетевых блокировок часто вызваны функциями энергосбережения сетевой карты и сканированием дисковых операций антивирусными мониторами.
Проведем оптимизацию оборудования и защиты:
*.1CD и исполняемый файл 1cv8.exe в список исключений сканирования на всех рабочих местах.Если из-за постоянных зависаний внутренняя структура базы данных повредилась, ее необходимо восстановить штатными средствами платформы.
Выполним тестирование физической структуры файла:
1Cv8.1CD, скопировав его в отдельную локальную папку.C:\Program Files\1cv8\номер_версии\bin\).chdbfl.exe.Если специфика рабочих мест или сетевого оборудования не позволяет полностью избавиться от сетевых коллизий Windows, рассмотрим альтернативные методы организации общего доступа:
smb.conf для общей папки отключаются оппортунистические блокировки директивами oplocks = no и level2 oplocks = no. Это исключает сетевые сбои Windows Oplocks и обеспечивает стабильный одновременный доступ.