К статье
Практический материал

Администрирование · 10 мин

Блокировка 1С: как снять и не допустить повторения

Как снять блокировку в 1С: завершение сеансов, удаление сеансовых блокировок, работа с консолью кластера и SQL. Причины блокировок и способы их устранения.

Сообщение «Ошибка разделенного доступа к базе данных» или «Конфликт блокировок при выполнении транзакции» — одна из самых частых проблем в работе с 1С. Блокировка появляется, когда база данных или отдельные её объекты заняты другим процессом: сеансом пользователя, регламентным заданием или обновлением конфигурации.

Способ снятия блокировки зависит от её типа и от режима работы базы — файлового или клиент-серверного. В файловом варианте чаще всего достаточно завершить «зависший» сеанс, в клиент-серверном может потребоваться работа с консолью кластера серверов 1С или с СУБД.

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

Как определить тип и источник блокировки

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

Признак транзакционной блокировки — ошибка «Конфликт блокировок при выполнении транзакции» у конкретного пользователя во время проведения документа или записи элемента. При этом остальные пользователи могут работать нормально. Если же не может войти никто, а сообщение говорит о разделённом доступе или блокировке сеансов — искать нужно на уровне всей базы.

Не может войти никтоБлокировка сеансов базы

Проверьте свойства информационной базы в консоли кластера

Ошибка у одного пользователяТранзакционная блокировка

Найдите зависший сеанс или регламентное задание

Сообщение о разделённом доступеМонопольный режим

Кто-то занял базу монопольно — обновление или тестирование

Файловая база, ошибка при входеФайл блокировки 1Cv8.1CL

Проверьте каталог базы после завершения всех сеансов

Снятие блокировки сеансов через консоль кластера

Если база работает в клиент-серверном режиме и вход в неё запрещён, откройте консоль управления серверами 1С (оснастка «Администрирование серверов 1С Предприятия»). Разверните дерево «Кластеры» → нужный кластер → «Информационные базы», найдите свою базу и откройте её свойства двойным щелчком или через контекстное меню.

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

После снятия флажка пользователи смогут войти сразу, перезапуск служб не требуется. Если флажок не установлен, а войти нельзя — проверьте, не запущено ли обновление конфигурации базы данных: в этот момент вход тоже блокируется, и прерывать процесс опасно.

Порядок действий в консоли кластера
  1. 1
    Откройте оснастку «Администрирование серверов 1С Предприятия»
  2. 2
    Найдите информационную базу и откройте её свойства
  3. 3
    Снимите флажок «Блокировка начала сеансов включена»
  4. 4
    Сохраните изменения и проверьте вход под обычным пользователем
  5. 5
    Если вход всё ещё закрыт — посмотрите список сеансов и активные фоновые процессы

Завершение зависших сеансов

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

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

Проверьте также раздел «Соединения» и активные фоновые задания: регламентные операции (обмен данными, расчёт итогов, полнотекстовое индексирование) тоже могут удерживать блокировки длительное время. Если обмен «завис», его сеанс завершают так же, после чего задание запустится по расписанию заново.

Снятие блокировки в файловой базе

В файловом режиме информация о блокировках хранится в служебном файле 1Cv8.1CL в каталоге базы. Если все пользователи вышли, а база сообщает, что занята, — этот файл остался от аварийно завершённого сеанса. Порядок действий прост: попросите всех пользователей закрыть 1С, убедитесь, что база никем не используется, и удалите файл 1Cv8.1CL из каталога базы.

Файл создаётся заново автоматически при следующем входе и не содержит данных — его удаление безопасно, но только при условии, что в базе действительно никто не работает. Если удалить файл во время активного сеанса, у работающего пользователя возможна ошибка и потеря несохранённых данных.

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

Блокировки на уровне СУБД

В клиент-серверном варианте блокировки могут «зависать» и на уровне СУБД, если сеанс 1С завершён, а транзакция на SQL-сервере осталась открытой. Признак — конфликт блокировок сохраняется даже после удаления всех сеансов в консоли кластера.

Для Microsoft SQL Server активные блокировки смотрят через Activity Monitor или запросом к системным представлениям sys.dm_tran_locks и sys.dm_exec_sessions. Зависший процесс завершают командой KILL с номером session_id. Для PostgreSQL используют представление pg_locks и функцию pg_terminate_backend.

sql
SELECT session_id, status, host_name, login_name FROM sys.dm_exec_sessions WHERE database_id = DB_ID('ИмяБазы') AND status = 'sleeping';

Работа на уровне СУБД требует прав администратора баз данных и понимания, какой процесс завершается. Если у вас нет опыта администрирования SQL, ограничьтесь перезапуском службы агента сервера 1С — это сбросит все соединения и блокировки, но на время остановит работу всех баз кластера.

Частые ошибки и ограничения

Типичные ошибки
01
Удаление файла 1Cv8.1CL при работающих пользователях — потеря несохранённых данных и ошибки у активных сеансов
02
Прерывание обновления конфигурации, приняв его за зависший сеанс — риск повреждения структуры базы
03
Перезагрузка сервера как первое действие — потеря времени и обрыв работы всех пользователей вместо точечного решения
04
Отключение управляемых блокировок в настройках ради устранения конфликтов — рост ошибок и потеря контроля целостности данных
05
Снятие блокировки сеансов до завершения регламентных заданий — повторный конфликт через несколько минут

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

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

Как проверить, что блокировка снята

Контрольные точки

Как проверить результат

Вход в базу под обычным пользователем
Норма

Пользователь входит без сообщений о блокировке

Тревожный признак

Сообщение о разделённом доступе сохраняется

Проведение документа, вызывавшего ошибку
Норма

Документ проводится штатно

Тревожный признак

Ошибка конфликта блокировок повторяется

Список сеансов в консоли кластера
Норма

Нет зависших сеансов с давним временем бездействия

Тревожный признак

Старые сеансы появляются снова — ищите источник

Регламентные задания
Норма

Задания выполняются по расписанию без ошибок

Тревожный признак

Задание «висит» в состоянии выполнения часами

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

Итог

Что важно запомнить

Сначала определите тип блокировки: сеансовая снимается в свойствах базы в консоли кластера, транзакционная — завершением зависшего сеанса, в файловой базе помогает удаление 1Cv8.1CL при закрытых сеансах. Не прерывайте обновление конфигурации и не удаляйте файлы базы при работающих пользователях. Повторяющиеся блокировки — повод пересмотреть расписание регламентных заданий.

Частые вопросы

Что означает ошибка «Конфликт блокировок при выполнении транзакции»?

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

Как войти в базу, если включена блокировка начала сеансов?

Если при установке блокировки был задан код разрешения, запустите 1С с параметром командной строки /UC и укажите этот код. Администратор таким способом попадает в базу, не снимая блокировку для остальных пользователей — это удобно при обновлении.

Опасно ли удалять файл 1Cv8.1CL?

Нет, если все пользователи вышли из базы: файл содержит только служебную информацию о блокировках и создаётся заново при следующем входе. Опасно удалять его при активных сеансах и путать с файлом 1Cv8.1CD, который является самой базой данных.

Помогает ли перезагрузка сервера 1С при блокировках?

Перезапуск службы агента сервера 1С снимает все сеансы и блокировки, но это грубый метод: обрывается работа всех пользователей всех баз кластера, несохранённые данные теряются. Используйте его только когда точечные способы не помогли или список сеансов недоступен.

Почему блокировки возникают каждый день в одно и то же время?

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

Можно ли снять блокировку без прав администратора?

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