Администрирование · 10 мин
Блокировки в 1С: когда они снимаются и что делать, если зависли
Разбираем, когда блокировки в 1С снимаются автоматически, почему они зависают и как безопасно снять блокировку сеанса или информационной базы вручную.
Блокировка в 1С — это механизм, который не даёт двум пользователям или процессам одновременно изменять одни и те же данные. Пока один сеанс проводит документ или редактирует объект, другие сеансы либо ждут, либо получают ошибку «Конфликт блокировок». В норме блокировка снимается автоматически, как только завершается транзакция или закрывается сеанс. Проблемы начинаются, когда сеанс «завис», а блокировка осталась.
Понимание момента снятия блокировки важно и пользователям, и администраторам. Пользователь сталкивается с сообщением «Объект заблокирован» или «Не удалось заблокировать запись», а администратор — с зависшими сеансами, очередями ожидания на СУБД и жалобами на «тормоза» базы. Ниже разбираемся, в какие моменты 1С снимает блокировки, почему они иногда остаются и как безопасно их убрать.
Когда 1С снимает блокировки автоматически
Основное правило: блокировка живёт ровно столько, сколько живёт транзакция или сеанс, который её установил. Как только транзакция зафиксирована или отменена, все управляемые блокировки, установленные внутри неё, снимаются. Это происходит при успешном проведении документа, записи элемента справочника, завершении обработки.
Вторая ситуация — завершение сеанса. Когда пользователь корректно выходит из программы, закрывает тонкий клиент или сеанс завершается по таймауту на сервере, все блокировки этого сеанса освобождаются. То же касается фоновых заданий: как только задание отработало или упало с ошибкой, его блокировки снимаются.
Третий случай — аварийное завершение. Если клиентский процесс «упал», сервер 1С через некоторое время обнаруживает потерю соединения и завершает сеанс, освобождая блокировки. Задержка зависит от настроек кластера и может составлять от нескольких секунд до нескольких минут — именно в этот промежуток пользователи видят «фантомные» блокировки.
Кто держит блокировку — обычно указан пользователь и компьютер в тексте сообщения
Частота ошибки: разовая или массовая у всех пользователей
Консоль кластера — список сеансов, время бездействия
Администрирование — Блокировка работы пользователей, параметр «Код разрешения»
Виды блокировок и момент их снятия
В 1С существует несколько типов блокировок, и снимаются они по-разному. Управляемые блокировки данных устанавливаются платформой при записи объектов и снимаются при завершении транзакции. Блокировка объекта при редактировании в форме («объект редактируется») держится, пока открыта форма, и снимается при её закрытии или завершении сеанса.
Отдельный вид — блокировка соединений с информационной базой, которую администратор включает вручную перед обновлением или обслуживанием. Она не снимается сама: её нужно выключить через функцию «Блокировка работы пользователей» или в консоли кластера. Если администратор забыл это сделать, пользователи не смогут войти, пока блокировку не снимут.
Сравнение вариантов
Снимается автоматически при завершении транзакции или сеанса; ручное вмешательство нужно только при зависании
Снимается при закрытии формы или сеанса; если пользователь ушёл, не закрыв программу, — только завершением сеанса
Снимается только вручную администратором или по расписанию, если задано время окончания
Почему блокировка зависает и не снимается
Чаще всего причина — «мёртвый» сеанс. Пользователь выключил компьютер кнопкой, оборвался VPN или Wi-Fi, клиентский процесс завис. Сервер ещё считает сеанс живым, и блокировки продолжают удерживаться, хотя реально никто не работает. Со временем кластер завершит такой сеанс по таймауту, но ждать можно долго.
Вторая причина — длительная транзакция. Тяжёлая обработка, групповое перепроведение, обмен данными могут держать блокировки десятки минут. Это не ошибка: блокировка снимется, когда обработка завершится. Но если обработка зациклилась или упала на уровне СУБД без корректного завершения сеанса, блокировка останется висеть.
Третья причина — взаимоблокировки (deadlock) и очереди ожидания на СУБД. Два сеанса захватили ресурсы в разном порядке и ждут друг друга. MS SQL Server и PostgreSQL обычно сами выбирают «жертву» и откатывают одну из транзакций, но при неудачной конфигурации ожидание может затягиваться, и пользователи видят массовые ошибки блокировок.
Как найти и снять зависшую блокировку
Первый шаг — определить, кто держит блокировку. В клиент-серверном варианте откройте консоль кластера серверов 1С, найдите информационную базу и посмотрите список сеансов. Обратите внимание на колонку «Время бездействия»: если сеанс неактивен долгое время, а пользователь утверждает, что вышел, — это зависший сеанс.
Далее завершите проблемный сеанс через контекстное меню в консоли кластера. После завершения сеанса все его блокировки снимаются автоматически. Проверьте результат: попросите пользователя повторить операцию, которая выдавала ошибку блокировки.
В файловом варианте инструментов консоли нет. Здесь помогает перезапуск службы агента сервера (если используется) либо завершение процессов 1cv8 на компьютере, где работал пользователь. В крайнем случае — перезагрузка сервера, где лежит база, но это останавливает работу всех пользователей.
- 1Откройте консоль кластера серверов 1С и найдите нужную информационную базу
- 2Сопоставьте пользователя из сообщения об ошибке с сеансом в списке
- 3Проверьте время бездействия сеанса — убедитесь, что он действительно завис
- 4Завершите сеанс через контекстное меню консоли
- 5Попросите пользователя повторить операцию и убедитесь, что ошибка ушла
- 6Если блокировки массовые — проверьте фоновые задания и регламентные операции на СУБД
Как снять блокировку входа в информационную базу
Если при входе появляется сообщение «Работа пользователей с информационной базой блокируется», значит администратор включил блокировку соединений. Снимается она из режима предприятия: раздел «Администрирование» → «Обслуживание» → «Блокировка работы пользователей» — снимите флаг и сохраните. Либо через консоль кластера: свойства информационной базы, параметр «Блокировка регламентных заданий» и сообщение о блокировке.
Если войти в базу невозможно даже администратору, используйте код разрешения, который задавался при установке блокировки, — его вводят в параметре запуска /UC код. Если код утерян, блокировку можно снять через консоль кластера без входа в базу.
"C:\Program Files\1cv8\...\bin\1cv8.exe" ENTERPRISE /F"ПутьКБазе" /N"Администратор" /UC"КодРазрешения"Как предотвратить зависание блокировок
Большинство проблем решается профилактикой. Настройте в свойствах информационной базы в консоли кластера автоматическое завершение спящих сеансов: параметры «Интервал перезапуска» и «Выключенные процессы останавливать через» помогают не копить мёртвые сеансы. Разумный таймаут бездействия — обычно от нескольких часов до суток в зависимости от режима работы компании.
Следите за регламентными и фоновыми заданиями: тяжёлые обработки лучше запускать в нерабочее время, а длительные транзакции в прикладном коде — разбивать на части. На уровне СУБД полезно периодически проверять длительные запросы и ожидания блокировок, чтобы находить проблемные места до жалоб пользователей.
Как проверить результат
Документ проводится, ошибки блокировки нет
Ошибка повторяется — блокировку держит другой сеанс или фоновое задание
Зависший сеанс отсутствует, нет сеансов с аномальным временем бездействия
Сеанс появился снова — клиентский процесс продолжает висеть на компьютере пользователя
Пользователи входят штатно
Сообщение о блокировке осталось — проверьте время окончания блокировки в её настройках
FAQ: частые вопросы о блокировках в 1С
Через какое время зависший сеанс завершится сам?
Точного единого срока нет: он зависит от настроек кластера и сетевых таймаутов. На практике оборванное соединение сервер обнаруживает в течение нескольких минут, но «спящий» сеанс без обрыва связи может жить часами. Если блокировка мешает работе, ждать не стоит — завершите сеанс вручную через консоль кластера.
Опасно ли завершать сеанс другого пользователя?
Если сеанс действительно завис — это безопасно. Если пользователь активно работает, он потеряет несохранённые данные, а незавершённая транзакция откатится. Поэтому перед завершением проверяйте время бездействия сеанса и по возможности предупреждайте пользователя.
Почему ошибка «Конфликт блокировок» возникает у всех сразу?
Массовые конфликты почти всегда означают длительную транзакцию: идёт обмен данными, перепроведение, закрытие месяца или тяжёлое регламентное задание. Найдите в консоли кластера сеанс фонового задания и оцените, сколько он уже работает. Часто правильное решение — дождаться завершения, а не завершать сеанс.
Чем блокировка объекта отличается от конфликта транзакций?
«Объект заблокирован» — это прикладная блокировка формы: кто-то открыл тот же документ на редактирование. Достаточно закрыть форму у другого пользователя. «Конфликт блокировок транзакции» — это конкуренция на уровне СУБД при одновременной записи данных; она снимается завершением одной из транзакций.
Можно ли снять блокировку в файловой базе без консоли кластера?
Да. Найдите компьютер пользователя, чей сеанс завис, и завершите процесс 1cv8.exe через диспетчер задач. Если база опубликована через веб-сервер, перезапустите пул приложений или службу веб-сервера. Как крайняя мера — перезагрузка компьютера, где размещён файл базы.
Что важно запомнить
В норме блокировки 1С снимаются сами: при завершении транзакции, закрытии формы или сеанса. Зависшая блокировка — это почти всегда мёртвый сеанс, который завершают через консоль кластера после проверки времени бездействия. Блокировка входа в базу снимается только вручную администратором. Профилактика — таймауты сеансов и контроль длительных фоновых заданий.