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

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

Как удалить зависшую блокировку в 1С

Пошаговая инструкция, как найти и удалить зависшую блокировку в 1С: через консоль кластера, конфигуратор, журнал регистрации и СУБД. Способы без остановки работы.

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

Способ снятия зависшей блокировки зависит от режима работы информационной базы: файловый или клиент-серверный. В файловом варианте блокировки обслуживает сама платформа и файл 1Cv8.1CD, в клиент-серверном — сервер 1С:Предприятия и СУБД (MS SQL Server, PostgreSQL и другие). Путать эти сценарии нельзя: действия, безопасные для файловой базы, в клиент-серверной могут привести к потере данных.

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

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

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

Дополнительная проверка — журнал регистрации. Откройте его в конфигураторе («Администрирование → Журнал регистрации») и отфильтруйте события с ошибками по нужному пользователю или объекту. Там видно, когда сеанс фактически перестал работать: последняя активность давно, а сеанс в списке активных числится до сих пор.

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

Ошибка «Конфликт блокировок»Кто-то держит объект

Уточнить у указанного пользователя, работает ли он сейчас

Сеанс без активностиВероятный «мёртвый» сеанс

Время последнего обращения в консоли кластера

Пользователь вышел, блокировка естьБлокировка не снялась

Список активных пользователей в конфигураторе

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

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

Откройте конфигуратор под учётной записью с правами администратора и перейдите в «Администрирование → Активные пользователи». В списке найдите сеанс «потерянного» пользователя, выделите его и нажмите «Удалить» (или кнопку завершения сеанса). После этого блокировки, установленные этим сеансом, снимаются, и объект становится доступен.

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

Порядок действий для файловой базы
  1. 1
    Попросите пользователей корректно выйти из 1С и подождите 5–10 минут
  2. 2
    Откройте конфигуратор: Администрирование → Активные пользователи
  3. 3
    Найдите зависший сеанс и завершите его кнопкой удаления
  4. 4
    Проверьте, что объект открывается и проводится без ошибки
  5. 5
    Если не помогло — завершите процессы 1cv8.exe на проблемных ПК

Удаление блокировки через консоль кластера (клиент-серверный вариант)

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

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

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

Что делать, если сеанс не завершается штатно

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

Порядок действий: предупредите пользователей о плановом перерыве, дождитесь завершения важных операций (обменов, закрытия периода), затем на сервере откройте services.msc, найдите службу «Агент сервера 1С:Предприятия» и выполните перезапуск. После старта службы пользователи подключаются заново.

cmd
net stop "1C:Enterprise 8.3 Server Agent" && net start "1C:Enterprise 8.3 Server Agent"

Если и перезапуск агента не снимает блокировку — проблема, скорее всего, на уровне СУБД: транзакционная блокировка осталась в MS SQL Server или PostgreSQL. В MS SQL Server откройте Activity Monitor в Management Studio, найдите зависший процесс (spid) по базе данных и выполните команду KILL для него. В PostgreSQL зависшие сессии завершают функцией pg_terminate_backend(pid). Такие операции должен выполнять администратор СУБД, понимающий последствия: принудительное завершение процесса СУБД откатывает его транзакцию.

Профилактика: как снизить число зависших блокировок

Полностью исключить зависшие сеансы нельзя, но их количество заметно сокращают настройки инфраструктуры. В свойствах информационной базы в консоли кластера есть параметры «Интервал перезапуска» и «Допустимый объём памяти» для рабочих процессов — их разумная настройка предотвращает накопление «зомби»-процессов. Также полезен параметр «Выключенные процессы останавливать через».

На стороне пользователей помогают простые меры: корректное завершение работы 1С в конце дня, стабильная сеть (зависшие сеансы часто появляются при обрывах Wi-Fi и VPN), отказ от принудительного выключения компьютеров с открытой 1С. Для терминальных сессий настройте автоматическое завершение отключённых сеансов по таймауту в групповых политиках или настройках RDS.

Типичные ошибки при снятии блокировок

Типичные ошибки
01
Удаление сеанса активного пользователя по первому сообщению об ошибке — человек теряет несохранённые данные, а транзакция откатывается
02
Перезагрузка сервера 1С в разгар рабочего дня без предупреждения — массовый обрыв сеансов и риск повреждения незавершённых операций
03
Попытка «починить» блокировку удалением файлов базы или файла 1Cv8.1CD — прямой путь к разрушению данных
04
Завершение процессов СУБД (sqlservr, postgres) вместо конкретного зависшего процесса — останавливается работа всех баз на сервере
05
Игнорирование повторяющихся зависаний — если блокировки зависают регулярно, причина в нестабильной сети или коде конфигурации, а не в самих блокировках

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

Проверка результата

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

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

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

Повторная операция пользователем
Норма

Документ проводится, объект открывается

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

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

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

Зависшего сеанса нет

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

Сеанс снова появился без активности

Раздел «Блокировки» консоли
Норма

Нет записей по проблемному объекту

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

Блокировка осталась — смотреть на уровне СУБД

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

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

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

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

Через какое время зависший сеанс удалится сам?

Точного гарантированного срока нет: платформа периодически очищает неактивные соединения, но на практике «мёртвые» сеансы могут висеть часами, особенно при обрыве сети. Ждать самоочистки в рабочее время обычно нецелесообразно — быстрее завершить сеанс вручную.

Опасно ли перезапускать службу агента сервера 1С?

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

Чем управляемая блокировка отличается от транзакционной?

Управляемая блокировка устанавливается кодом конфигурации и хранится на сервере 1С — она снимается при завершении сеанса. Транзакционная создаётся автоматически СУБД при изменении данных и живёт до конца транзакции — её можно убрать только завершением процесса на уровне СУБД.

Почему после удаления сеанса ошибка о блокировке осталась?

Скорее всего, блокировка находится на уровне СУБД, а не сервера 1С. Проверьте активные процессы в MS SQL Server (Activity Monitor) или PostgreSQL и завершите процесс, держащий транзакцию. Либо блокировку успел установить другой сеанс — проверьте раздел «Блокировки» в консоли кластера ещё раз.

Как заблокировать вход пользователей на время обновления?

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

Итог

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

Зависшая блокировка снимается завершением «мёртвого» сеанса: через «Активные пользователи» в файловой базе или консоль кластера в клиент-серверной. Перед удалением убедитесь, что сеанс действительно неактивен. Если штатные способы не помогают — перезапуск агента сервера 1С, в крайнем случае — работа с процессами СУБД. Регулярные зависания — повод проверить сеть и код конфигурации.