Администрирование · 11 мин
Как удалить зависшую блокировку в 1С
Пошаговая инструкция, как найти и удалить зависшую блокировку в 1С: через консоль кластера, конфигуратор, журнал регистрации и СУБД. Способы без остановки работы.
Зависшая блокировка в 1С — одна из самых частых причин жалоб пользователей: документ не проводится, справочник не открывается на редактирование, а на экране появляется сообщение «Конфликт блокировок при выполнении транзакции» или «Объект заблокирован другим пользователем». Проблема возникает, когда сеанс, установивший блокировку, аварийно завершился (обрыв сети, сбой клиентского компьютера, перезагрузка сервера), а сама блокировка осталась активной.
Способ снятия зависшей блокировки зависит от режима работы информационной базы: файловый или клиент-серверный. В файловом варианте блокировки обслуживает сама платформа и файл 1Cv8.1CD, в клиент-серверном — сервер 1С:Предприятия и СУБД (MS SQL Server, PostgreSQL и другие). Путать эти сценарии нельзя: действия, безопасные для файловой базы, в клиент-серверной могут привести к потере данных.
Прежде чем что-либо удалять, важно убедиться, что блокировка действительно «мёртвая», а не принадлежит работающему пользователю. Принудительное снятие блокировки с активного сеанса прервёт его транзакцию и может оставить данные в несогласованном состоянии. Ниже разобраны все основные способы — от штатного завершения сеанса до работы на уровне СУБД.
Как определить, что блокировка действительно зависла
Признак зависшей блокировки — сообщение о конфликте блокировок повторяется длительное время, хотя объект никто осознанно не редактирует. В тексте ошибки обычно указан пользователь или сеанс, который держит блокировку. Если этот пользователь подтверждает, что у него программа закрыта (или его компьютер выключен), а блокировка не снимается — ситуация типовая для «зависшего» сеанса.
Дополнительная проверка — журнал регистрации. Откройте его в конфигураторе («Администрирование → Журнал регистрации») и отфильтруйте события с ошибками по нужному пользователю или объекту. Там видно, когда сеанс фактически перестал работать: последняя активность давно, а сеанс в списке активных числится до сих пор.
В клиент-серверном варианте полезно посмотреть консоль кластера: раздел «Сеансы» показывает время последнего обращения каждого сеанса. Сеанс без активности десятки минут или часы при живой блокировке — кандидат на принудительное завершение.
Уточнить у указанного пользователя, работает ли он сейчас
Время последнего обращения в консоли кластера
Список активных пользователей в конфигураторе
Снятие блокировки в файловой базе
В файловом варианте блокировки хранятся в самой базе и снимаются при корректном завершении сеансов. Самый простой способ — попросить всех пользователей выйти из программы и подождать несколько минут: платформа периодически очищает устаревшие блокировки сама. Если пользователь не может выйти (компьютер завис или выключен), сеанс завершают принудительно.
Откройте конфигуратор под учётной записью с правами администратора и перейдите в «Администрирование → Активные пользователи». В списке найдите сеанс «потерянного» пользователя, выделите его и нажмите «Удалить» (или кнопку завершения сеанса). После этого блокировки, установленные этим сеансом, снимаются, и объект становится доступен.
Если завершение сеанса через конфигуратор не помогает или список активных пользователей не открывается, остаётся радикальный вариант: завершить процессы 1cv8.exe на компьютерах пользователей через диспетчер задач, а при общем доступе по сети — перезапустить компьютер, на котором лежит файл базы. Перед этим убедитесь, что все сохранили работу.
- 1Попросите пользователей корректно выйти из 1С и подождите 5–10 минут
- 2Откройте конфигуратор: Администрирование → Активные пользователи
- 3Найдите зависший сеанс и завершите его кнопкой удаления
- 4Проверьте, что объект открывается и проводится без ошибки
- 5Если не помогло — завершите процессы 1cv8.exe на проблемных ПК
Удаление блокировки через консоль кластера (клиент-серверный вариант)
В клиент-серверной архитектуре основной инструмент администратора — консоль кластера серверов 1С:Предприятия (оснастка «Серверы 1С:Предприятия»). Откройте её на сервере или с рабочего места администратора, разверните нужный кластер и перейдите в раздел «Сеансы». Здесь видны все подключения с указанием пользователя, приложения, времени начала и последнего обращения.
Найдите сеанс, который держит блокировку: ориентируйтесь на имя пользователя из текста ошибки и на давнее время последнего обращения. Выделите сеанс и выберите «Удалить» в контекстном меню. Сеанс завершится принудительно, транзакция откатится, управляемые блокировки снимутся. Пользователь при этом увидит сообщение о разрыве соединения и сможет перезайти.
Дополнительно полезен раздел «Блокировки» в консоли кластера — он показывает управляемые блокировки по информационным базам. Там можно увидеть, какой сеанс держит конкретную блокировку, и подтвердить, что завершаете именно нужный сеанс, а не случайного пользователя.
Что делать, если сеанс не завершается штатно
Иногда сеанс «залипает» настолько, что консоль кластера не может его удалить, либо блокировка остаётся даже после удаления сеанса. В этом случае применяют перезапуск службы агента сервера 1С:Предприятия. Это грубый, но надёжный способ: все сеансы кластера завершаются, все управляемые блокировки снимаются.
Порядок действий: предупредите пользователей о плановом перерыве, дождитесь завершения важных операций (обменов, закрытия периода), затем на сервере откройте services.msc, найдите службу «Агент сервера 1С:Предприятия» и выполните перезапуск. После старта службы пользователи подключаются заново.
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.
Типичные ошибки при снятии блокировок
Отдельная ошибка — путать блокировку данных с блокировкой соединения с информационной базой. Если пользователь видит сообщение «Соединение с информационной базой запрещено» или «вход в базу заблокирован», это не зависший сеанс, а установленная администратором блокировка соединений (например, на время обновления). Снимается она в консоли кластера в свойствах информационной базы — снимите флажок «Блокировка начала сеансов включена» или дождитесь окончания регламентных работ.
Проверка результата
После снятия блокировки убедитесь, что проблема решена полностью, а не частично. Попросите пользователя повторить операцию, которая вызывала ошибку: документ должен проводиться, справочник — открываться на редактирование без сообщений о конфликте. В консоли кластера проверьте, что зависшего сеанса больше нет в списке, а в разделе «Блокировки» нет «висящих» записей по тому же объекту.
Как проверить результат
Документ проводится, объект открывается
Ошибка конфликта блокировок повторяется
Зависшего сеанса нет
Сеанс снова появился без активности
Нет записей по проблемному объекту
Блокировка осталась — смотреть на уровне СУБД
Если блокировки зависают регулярно у разных пользователей, проблема системная: проверьте стабильность сети между клиентами и сервером, настройки таймаутов кластера, а также код конфигурации — длительные транзакции и блокировки в циклах частая причина массовых конфликтов. В такой ситуации имеет смысл включить технологический журнал и проанализировать события TLOCK и TDEADLOCK.
Частые вопросы
Можно ли снять блокировку без прав администратора?
Нет. Завершение чужого сеанса и доступ к консоли кластера требуют административных прав. Рядовой пользователь может только выйти из программы сам и сообщить администратору текст ошибки с указанием, кто держит блокировку.
Через какое время зависший сеанс удалится сам?
Точного гарантированного срока нет: платформа периодически очищает неактивные соединения, но на практике «мёртвые» сеансы могут висеть часами, особенно при обрыве сети. Ждать самоочистки в рабочее время обычно нецелесообразно — быстрее завершить сеанс вручную.
Опасно ли перезапускать службу агента сервера 1С?
При предупреждённых пользователях и завершённых регламентных операциях — безопасно: транзакции откатываются корректно, данные в СУБД не повреждаются. Опасен перезапуск «внезапно», во время проведения больших документов, обменов или закрытия периода.
Чем управляемая блокировка отличается от транзакционной?
Управляемая блокировка устанавливается кодом конфигурации и хранится на сервере 1С — она снимается при завершении сеанса. Транзакционная создаётся автоматически СУБД при изменении данных и живёт до конца транзакции — её можно убрать только завершением процесса на уровне СУБД.
Почему после удаления сеанса ошибка о блокировке осталась?
Скорее всего, блокировка находится на уровне СУБД, а не сервера 1С. Проверьте активные процессы в MS SQL Server (Activity Monitor) или PostgreSQL и завершите процесс, держащий транзакцию. Либо блокировку успел установить другой сеанс — проверьте раздел «Блокировки» в консоли кластера ещё раз.
Как заблокировать вход пользователей на время обновления?
В консоли кластера откройте свойства информационной базы и установите флажок «Блокировка начала сеансов включена», при необходимости задайте время начала и окончания. Существующие сеансы это не завершит — их нужно удалить вручную в разделе «Сеансы».
Что важно запомнить
Зависшая блокировка снимается завершением «мёртвого» сеанса: через «Активные пользователи» в файловой базе или консоль кластера в клиент-серверной. Перед удалением убедитесь, что сеанс действительно неактивен. Если штатные способы не помогают — перезапуск агента сервера 1С, в крайнем случае — работа с процессами СУБД. Регулярные зависания — повод проверить сеть и код конфигурации.