Администрирование · 9 мин
Как снять блокировки 1С: зависшие сеансы, блокировки базы и ошибки доступа
Как снять блокировки 1С: завершение зависших сеансов, удаление блокировок СУБД и файловой базы, работа с консолью кластера и журналом регистрации.
Блокировка в 1С — это механизм, который не даёт нескольким пользователям одновременно изменять одни и те же данные. В норме блокировки ставятся и снимаются автоматически, но при аварийном завершении сеанса, разрыве сети или ошибке в коде они могут «зависнуть»: пользователь видит сообщение «Конфликт блокировок при выполнении транзакции», «Объект заблокирован» или не может войти в базу вовсе.
Порядок действий зависит от типа развёртывания: файловая база, клиент-серверный вариант на MS SQL, PostgreSQL или Oracle, либо работа через веб-сервер. В файловой базе блокировки хранятся в служебном файле и чаще всего снимаются завершением процессов, а в клиент-серверной архитектуре управление идёт через консоль кластера и средства СУБД.
Прежде чем что-либо снимать, определите, что именно заблокировано: отдельный объект (документ, справочник), вся информационная база (монопольный режим, запрет сеансов) или соединение на уровне СУБД. От этого зависит, достаточно ли завершить один сеанс или потребуется перезапуск служб.
Определите тип блокировки и её источник
Текст ошибки подсказывает, где искать проблему. Сообщение «Конфликт блокировок при выполнении транзакции» означает, что два сеанса конкурируют за одни данные — обычно достаточно подождать или найти сеанс, который держит объект. Ошибка «Ошибка разделенного доступа к базе» в файловом варианте говорит о том, что кто-то открыл базу монопольно или база уже занята другим процессом.
Если пользователи не могут войти с сообщением о запрете установки соединений, значит администратор (или регламентная операция) включил блокировку сеансов в свойствах базы. Это не сбой, а штатный режим, который снимается через консоль кластера или параметр блокировки в конфигураторе.
Найти сеанс, держащий объект, в консоли кластера или журнале регистрации
Проверить, не запущен ли конфигуратор или обновление в монопольном режиме
Снять флаг блокировки в свойствах базы в консоли кластера
Завершить сеанс принудительно в консоли кластера
Снимите блокировку в файловой базе
В файловом варианте все блокировки живут в оперативной памяти процессов и в служебном файле блокировок. Если программа закрылась аварийно, файл может остаться и мешать входу. Порядок действий: попросите всех пользователей выйти из базы, убедитесь, что на компьютерах не осталось процессов 1cv8.exe, 1cv8c.exe и дизайнера, затем проверьте каталог базы.
Если после выхода всех пользователей вход всё равно запрещён, найдите в папке базы файл 1Cv8.1CL — это файл блокировок. Его можно удалить только при гарантированном отсутствии работающих сеансов: иначе оставшиеся процессы потеряют связь с данными и возможна порча информации. После удаления файла запустите базу заново и проверьте вход.
Завершите зависшие сеансы в клиент-серверной базе
Откройте консоль администрирования серверов 1С (оснастка «Администрирование серверов 1С Предприятия»), разверните кластер, найдите нужную информационную базу и перейдите на вкладку «Сеансы». Здесь видно, кто подключён, когда сеанс начался, когда была последняя активность и какой компьютер его держит.
Зависший сеанс обычно узнаваем по давнему времени бездействия при том, что пользователь уже вышел или его компьютер выключен. Выделите такой сеанс и выберите «Удалить» — кластер завершит его, и удерживаемые блокировки снимутся. Если блокировка держится на уровне СУБД, а сеанс в консоли не отображается, проверьте активные процессы на стороне сервера баз данных.
- 1Откройте консоль администрирования серверов 1С и подключитесь к агенту кластера
- 2Разверните ветку «Информационные базы» и выберите нужную базу
- 3Перейдите на вкладку «Сеансы» и отсортируйте по времени бездействия
- 4Найдите зависший сеанс по пользователю, компьютеру или времени простоя
- 5Выделите сеанс и выберите «Удалить» для принудительного завершения
- 6Попросите пользователя войти заново и проверьте, снялась ли блокировка
Снимите блокировку сеансов всей информационной базы
Блокировку входа, которую ставят перед обновлением или регламентными работами, снимают там же, где ставили. В консоли кластера откройте свойства информационной базы и снимите флаг «Блокировка начала сеансов включена», при необходимости очистив код разрешения и сообщение пользователям. Если блокировка ставилась через конфигуратор («Администрирование» → «Блокировка установки соединений»), снимите её там же.
Учтите, что консоль кластера управляет только новыми соединениями: уже работающие сеансы блокировкой не завершаются. Если нужно выгнать всех, сначала включите блокировку новых сеансов, затем завершите активные сеансы на вкладке «Сеансы» — либо дождитесь таймаута завершения, заданного в свойствах базы.
Проверьте блокировки на уровне СУБД
Если сеанс завершён в консоли кластера, а ошибка конфликта блокировок повторяется, проблема может быть на стороне СУБД: «зависшая» транзакция держит строки таблиц. В MS SQL активные блокировки видны через представление sys.dm_tran_locks и активность в Activity Monitor, в PostgreSQL — через представление pg_locks и pg_stat_activity.
SELECT * FROM pg_locks l JOIN pg_stat_activity a ON l.pid = a.pid WHERE NOT l.granted;Завершать процессы на уровне СУБД (KILL в MS SQL, pg_terminate_backend в PostgreSQL) стоит только после того, как вы убедились, что это именно зависшая транзакция, а не активная работа пользователя или регламентное задание. Принудительное прерывание обновления или проведения крупного документа оставит транзакцию откаченной, но при больших объёмах откат сам по себе может занять заметное время.
Найдите виновника и предотвратите повторение
Журнал регистрации помогает понять, кто держал объект в момент конфликта. Откройте его из конфигуратора или из меню «Администрирование» в режиме предприятия, отфильтруйте по времени ошибки и пользователю. Если конфликты возникают регулярно на одних и тех же документах, причина обычно не в «глюках», а в длительных транзакциях: интерактивном проведении больших документов, обменах, длительных отчётах, работающих в одной транзакции с записью.
Для снижения числа конфликтов в клиент-серверных базах проверьте, что включён управляемый режим блокировок и на СУБД разрешён версионированный уровень изоляции (для MS SQL это READ_COMMITTED_SNAPSHOT). Также настройте таймауты завершения спящих сеансов в свойствах базы — освобождение лицензий и блокировок произойдёт автоматически, без ручной чистки.
Часто задаваемые вопросы
Можно ли снять блокировку, не имея доступа к консоли кластера?
Частично. Администратор с полными правами может завершить сеансы через функциональность типовых конфигураций (раздел «Администрирование» → «Активные пользователи»), если она включена. Блокировки на уровне СУБД и кластера без консоли или доступа к серверу снять нельзя — нужен администратор сервера.
Что делать, если ошибка «Конфликт блокировок» возникает у одного пользователя постоянно?
Проверьте, не запущено ли у него два экземпляра программы, и не выполняет ли он длительную операцию (проведение большого документа, обмен) параллельно с попыткой записи. Также посмотрите зависшие сеансы этого пользователя в консоли кластера — возможно, его старый сеанс не завершился и держит объект.
Опасно ли принудительно завершать сеанс пользователя?
Незавершённые транзакции будут откачены, несохранённые данные сеанса потеряются. Записанные в базу данные при этом не пострадают. Опасно завершать сеанс, в котором идёт обновление конфигурации базы данных или тестирование и исправление — эти процессы лучше дождаться.
Как автоматически избавляться от зависших сеансов?
В свойствах информационной базы в консоли кластера задайте интервал «Завершать спящие сеансы через» и «Выключать спящие сеансы через». Кластер будет сам переводить неактивные сеансы в спящие и затем завершать их, освобождая блокировки и лицензии.
Почему после снятия блокировки вход всё равно невозможен?
Проверьте, не включена ли блокировка сеансов на уровне базы, не остался ли код разрешения без вашего ведома, а в файловом варианте — не держит ли базу сторонний процесс (антивирус, программа резервного копирования). Также убедитесь, что служба агента сервера 1С или доступ к сетевому каталогу работают штатно.
Что важно запомнить
Сначала определите тип блокировки по тексту ошибки, затем действуйте точечно: завершите зависший сеанс в консоли кластера, снимите флаг блокировки сеансов или удалите файл 1Cv8.1CL только при полностью выведенных пользователях. Перед любыми принудительными действиями делайте резервную копию, а повторяющиеся конфликты разбирайте через журнал регистрации.