Работа в классических версиях 1С:Предприятия 7.7 часто сопровождается специфическими техническими сложностями, которые обусловлены возрастом платформы и ее взаимодействием с современными операционными системами. Одной из самых неприятных проблем является внезапное «вышибание» одного или нескольких пользователей из базы с сообщением error# :-50 Locking File 1SUSER.DBF. В данной статье мы подробно разберем, почему возникает эта ошибка и как стабилизировать работу системы.
Для начала проанализируем, за что отвечает файл 1SUSER.DBF. В файловом варианте 1С 7.7 этот файл является своего рода списком активных соединений. При каждом входе пользователя программа обращается к нему, чтобы зафиксировать сессию, а при выходе — удаляет соответствующую запись. Ошибка -50 Locking File означает, что движку базы данных (CodeBase) не удалось установить блокировку на этот файл или получить к нему монопольный доступ в нужный момент времени.
Разберем ситуацию: если два пользователя работают стабильно, а третьего «выкидывает» каждые 15-20 минут, проблема, скорее всего, кроется не в самой конфигурации 1С, а в физической среде передачи данных или настройках конкретной рабочей станции.
Одной из наиболее распространенных причин кратковременных обрывов связи является чрезмерная «экономичность» современных сетевых адаптеров. Разберем по шагам, как это проверить и исправить:
Disabled.Эти действия помогут избежать ситуации, когда сетевая карта «засыпает» при кратковременном отсутствии трафика, что для 1С 7.7 является критичным разрывом сессии.
Проанализируем механизм Opportunistic Locking (OpLocks). Этот функционал Windows позволяет клиенту кэшировать файлы локально для ускорения работы. Однако 1С 7.7 требует немедленного отражения изменений в файлах блокировок. Если сервер не успевает вовремя оповестить клиента о необходимости снять блокировку, возникает ошибка -50.
Для решения проблемы на стороне сервера (где лежит база) и на рабочих станциях рекомендуется внести изменения в реестр:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"EnableOplocks"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"UseOpportunisticLocking"=dword:00000000
После внесения изменений обязательна перезагрузка системы. Это заставит Windows работать с файлами в режиме «как есть», без опасного для старых баз кэширования.
Современные версии ОС (Windows 10/11) используют протоколы SMB 2 и SMB 3, которые агрессивно кэшируют информацию о наличии файлов в директориях. Выясним причину: если 1С пытается создать или заблокировать временный файл, а кэш системы говорит, что файл еще занят (хотя это не так), происходит сбой.
Рассмотрим применение следующих настроек в реестре на клиентском компьютере для отключения кэширования каталогов:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"DirectoryCacheLifetime"=dword:00000000
"FileNotFoundCacheLifetime"=dword:00000000
"FileInfoCacheLifetime"=dword:00000000
Это гарантирует, что 1С будет получать актуальную информацию о состоянии 1SUSER.DBF прямо с сервера, не полагаясь на устаревшие данные локального кэша.
Проанализируем ситуацию, когда база данных размещена не на серверной ОС, а на обычной рабочей станции. В Windows 10/11 существует жесткое ограничение на количество одновременных подключений по сети (обычно до 20). Однако важно помнить, что один пользователь 1С 7.7 может открывать десятки файлов .DBF и .CDX одновременно.
Если лимит открытых файлов на «сервере» исчерпан, система начнет принудительно закрывать старые дескрипторы, что приведет к ошибке у одного из пользователей. В этом случае решением будет либо перенос базы на Windows Server, либо использование 1С через RDP (удаленный рабочий стол), чтобы все операции с файлами происходили локально внутри сервера.
Иногда корень проблемы кроется в правах доступа к папке с базой данных. Разберем рекомендации по настройке:
*.dbf и *.cdx в исключения сканирования.1SUSER.DBF.Как показывает практика (сообщение 22 в обсуждении), иногда помогает простой перенос базы в другой каталог. Это может быть связано с тем, что в новом расположении сбрасываются «залипшие» права доступа или очищаются старые дескрипторы файловой системы.
Если ни один из способов не помог, выполним профилактику самой базы данных:
1SUSER.DBF и удалим его (предварительно сделав бэкап). При следующем запуске 1С пересоздаст этот файл автоматически в «чистом» виде..CDX и запустить 1С в монопольном режиме для восстановления индексов.Подведем итог: ошибка -50 в 1С 7.7 почти всегда является следствием нестабильной сетевой среды или конфликта механизмов кэширования Windows с устаревшим методом работы 1С с файлами. Комплексная настройка сетевых карт и параметров реестра позволяет полностью устранить эти вылеты.