Как исправить ошибку открытия файла блокировок в 1С:Предприятие при работе по сети

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

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

Разберем механику проблемы: что такое файл блокировок

Прежде всего, проанализируем ситуацию: в файловой базе 1С за управление доступом отвечают специальные служебные файлы. Когда первый пользователь заходит в базу, система создает в папке с данными файл 1Cv8.lcl (Lock File). Этот файл служит сигналом для всех остальных клиентских приложений: «база занята, работаем в многопользовательском режиме».

Если по какой-то причине следующий пользователь не может прочитать или изменить этот файл, возникает та самая ошибка. Особый случай, описанный в теме — когда один пользователь «выкидывает» другого. Это происходит из-за конфликта прав на уровне файловой системы или сетевого протокола, когда операционная система отдает приоритет одному дескриптору файла, закрывая остальные. Выясним, как с этим бороться.

Шаг 1. Проверка прав доступа и сетевой шары

Рассмотрим ситуацию с правами. Часто администраторы полагают, что прав «Чтение» и «Запись» достаточно. Однако для корректной работы механизма блокировок 1С пользователям требуются полные права на папку с базой данных.

  1. Проверим права на уровне NTFS: пользователи должны иметь права на «Изменение» и «Удаление». Это необходимо, так как файлы 1Cv8.lcl и 1Cv8.cfl постоянно создаются, модифицируются и удаляются в процессе сессии.
  2. Пересоздадим сетевую шару. Как было замечено в обсуждении, иногда «протухает» кэш дескрипторов самой операционной системы. Создание новой сетевой папки и переподключение пользователей к ней часто решает проблему без глубокой настройки сервера.
  3. Проанализируем количество подключений. Если сервер — это обычная Windows 10/11, помните об ограничении в 20 одновременных подключений по SMB. Каждое окно 1С может открывать несколько файловых сессий.

Шаг 2. Единообразие версий платформы

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

Разберем, почему это важно: разные релизы 1С (например, 8.3.22 и 8.3.23) или разная разрядность (32-бит и 64-бит клиент) могут по-разному использовать системные вызовы для блокировки файлов. Если один клиент заблокировал файл методом, который не понимает другой клиент, возникнет конфликт. Все пользователи должны работать на строго одинаковом релизе платформы.

Шаг 3. Настройка протокола SMB и отключение Oplocks

Посмотрим на более глубокие настройки сервера. Одной из скрытых причин является механизм SMB Opportunistic Locking (опортунистические блокировки). Этот механизм позволяет клиенту кэшировать части файла локально для ускорения работы. В случае с 1С это приводит к тому, что один компьютер «захватывает» файл блокировок 1Cv8.lcl и не отдает информацию о нем серверу вовремя.

Для стабилизации работы рекомендуется отключить Oplocks на стороне сервера. Это можно сделать через реестр Windows (путь HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters), установив параметр EnableOplocks в значение 0. Также стоит попробовать принудительно использовать протокол SMB 2.0 вместо 3.0, если сетевое оборудование работает нестабильно.

Шаг 4. Очистка временных файлов и «зависших» сессий

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

  1. Попросим всех пользователей выйти из программы.
  2. Зайдем на сервер в раздел «Управление компьютером» -> «Общие папки» -> «Открытые файлы».
  3. Если там отображаются файлы из папки базы (особенно 1Cv8.1CD или 1Cv8.lcl), принудительно закроем эти сессии. Это эффективнее простого ребута, так как позволяет точечно сбросить зависшее соединение.
  4. Удалим из папки базы все файлы, кроме основного — 1Cv8.1CD. Все остальные файлы (*.lcl, *.cfl, *.log в некоторых случаях) будут пересозданы автоматически.

Шаг 5. Исключение влияния антивирусов и энергосбережения

Рассмотрим внешние факторы, которые могут блокировать доступ к файлам. Антивирусное ПО часто сканирует файлы в момент их открытия или изменения. Поскольку 1С обращается к файлу блокировок сотни раз в минуту, даже мимолетная задержка от антивируса приведет к ошибке.

Добавим в исключения антивируса (и на сервере, и на рабочих станциях) следующие расширения:

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

Резюме

Мы проанализировали основные причины ошибки открытия файла блокировок. Чаще всего проблема решается перезагрузкой сервера или сбросом открытых сессий в консоли управления сервером. Однако для долгосрочной стабильности крайне важно обеспечить единообразие версий 1С на всех ПК и корректно настроить права доступа «Full Control» для пользователей в сетевой папке. Помните, что файловый режим 1С очень чувствителен к микро-разрывам сети и качеству работы протокола SMB.

← На главную