Администрирование · 9 мин
1С: кем заблокирован документ и как снять блокировку
Как узнать, кем заблокирован документ в 1С, где посмотреть активные сеансы, как снять блокировку через консоль кластера и что делать, если пользователь уже вышел.
При попытке открыть или провести документ в 1С пользователь нередко видит сообщение вида «Конфликт блокировок при выполнении транзакции» или «Объект заблокирован пользователем Иванов И.И.». Это штатный механизм платформы: 1С защищает данные от одновременного изменения двумя сеансами, чтобы не потерять информацию. Проблема возникает тогда, когда блокировка «зависает» — сеанс завершён аварийно, а документ остаётся недоступным.
Причины бывают разные: пользователь открыл документ и отошёл, программа закрылась с ошибкой, оборвалось соединение с сервером, либо фоновое задание удерживает объект. Прежде чем что-то снимать принудительно, нужно точно определить, кто и каким сеансом держит блокировку — иначе можно потерять несохранённые данные коллеги.
Как устроена блокировка документов в 1С
Платформа 1С:Предприятие использует два вида блокировок. Объектная (прикладная) блокировка возникает, когда пользователь открывает документ на редактирование в управляемом режиме: пока форма открыта, другой сеанс не сможет изменить тот же объект. Транзакционная блокировка накладывается СУБД на время записи или проведения и снимается сразу после завершения транзакции.
В файловом варианте базы блокировки обслуживает сама платформа на уровне файла данных, в клиент-серверном — сервер 1С совместно с СУБД (MS SQL, PostgreSQL и др.). Поэтому инструменты диагностики отличаются: для файловой базы доступен ограниченный набор средств, для серверной — полноценная консоль кластера.
Как узнать, кто заблокировал документ
Первый и самый простой источник — текст самого сообщения об ошибке. В большинстве типовых конфигураций при конфликте блокировок платформа показывает имя пользователя, компьютер и номер сеанса. Запишите эти данные до закрытия окна ошибки.
Если сообщение неинформативное, используйте штатные средства администрирования:
- Консоль кластера серверов 1С — ветка «Сеансы» показывает всех подключённых пользователей, время начала сеанса, компьютер и текущую активность. В ветке «Соединения» видно, какие соединения удерживают ресурсы.
- Обработка «Активные пользователи» (в типовых конфигурациях: Администрирование → Обслуживание → Активные пользователи) — список работающих сейчас сотрудников с возможностью завершить сеанс при наличии прав.
- Журнал регистрации — позволяет восстановить хронологию: кто открывал и изменял документ до возникновения конфликта.
Попросите коллегу закрыть документ — этого достаточно
Ищите сеанс в консоли кластера и завершайте его
Проверьте расписание регламентных заданий и синхронизаций
Смотрите активные запросы на стороне базы данных
Поиск блокирующего сеанса в консоли кластера
Консоль кластера (оснастка «Администрирование серверов 1С:Предприятия») доступна на компьютере, где установлен сервер 1С, либо удалённо у администратора. Откройте нужный кластер, раскройте информационную базу и перейдите в раздел «Сеансы».
Найдите сеанс пользователя, указанного в сообщении об ошибке. Обратите внимание на колонки «Начало сеанса», «Последняя активность» и «Спящий сеанс»: если активности нет давно, а пользователь утверждает, что вышел, — это зависший сеанс. В разделе «Блокировки» (при наличии в версии платформы) можно увидеть, какие объекты удерживает конкретное соединение.
- 1Откройте оснастку администрирования серверов 1С и нужный кластер
- 2Перейдите: Информационные базы → ваша база → Сеансы
- 3Найдите сеанс по имени пользователя из текста ошибки
- 4Проверьте время последней активности и компьютер
- 5Свяжитесь с пользователем и попросите закрыть документ штатно
- 6Если сеанс завис — завершите его через контекстное меню «Удалить»
- 7Попросите второго пользователя повторить открытие документа
Как безопасно снять блокировку
Правильный способ — штатный: пользователь, открывший документ, закрывает форму или записывает изменения. Блокировка снимается мгновенно, данные не теряются. Всегда начинайте с этого варианта.
Если сеанс завис, удалите его в консоли кластера: правый клик по сеансу → «Удалить». Сервер освободит все удерживаемые объектом блокировки. Несохранённые данные этого сеанса будут потеряны, но при зависшем сеансе их всё равно невозможно сохранить.
В файловой базе консоли кластера нет. Здесь помогает завершение сеанса через «Активные пользователи» (если конфигурация это поддерживает), либо перезапуск самого клиентского приложения на проблемном компьютере. В крайнем случае — организованный выход всех пользователей и повторный вход.
Блокировка при проведении: транзакционные конфликты
Ошибка «Конфликт блокировок при выполнении транзакции» при проведении означает, что документ затрагивает те же данные, что и параллельный процесс: остатки по складу, регистры расчётов, последовательности. Частый источник — регламентные задания (пересчёт итогов, обмен данными, загрузка курсов), которые выполняются в момент работы пользователей.
Что сделать: повторите проведение через несколько секунд — кратковременные транзакционные блокировки снимаются сами. Если ошибка повторяется систематически, проверьте расписание фоновых заданий и разведите по времени тяжёлые операции. В клиент-серверном варианте администратор СУБД может посмотреть активные блокировки средствами самой СУБД (например, динамические представления sys.dm_tran_locks в MS SQL).
Как выбрать действие
Как предотвратить зависшие блокировки
Большинство проблем решается настройкой, а не ручным снятием. В свойствах информационной базы в консоли кластера есть параметры «Интервал перезапуска» и «Завершать спящие сеансы»: настройте автоматическое завершение сеансов, не проявляющих активность заданное время. Это избавит от блокировок после аварийных закрытий и ухода компьютеров в сон.
Дополнительные меры: договоритесь с пользователями не оставлять документы открытыми на ночь, настройте версионирование объектов (чтобы восстанавливать данные при конфликтах), а тяжёлые регламентные задания перенесите на нерабочие часы. Для разработчиков: в управляемых формах корректно используйте методы ЗаблокироватьДанныеДляРедактирования и РазблокироватьДанныеДляРедактирования, не удерживая блокировку дольше необходимого.
Частые вопросы
Документ заблокирован пользователем, который уже уволился. Что делать?
Такая блокировка — всегда зависший сеанс, потому что реальной работы нет. Найдите сеанс в консоли кластера по имени пользователя и удалите его. Если сеансов нет, а ошибка остаётся, перезапустите службу агента сервера 1С в нерабочее время — это сбросит все остаточные блокировки.
Можно ли узнать, кто заблокировал документ, без прав администратора?
Да, частично. Текст сообщения о конфликте обычно содержит имя пользователя и компьютер. Кроме того, во многих типовых конфигурациях список активных пользователей доступен рядовым сотрудникам в режиме просмотра. Для завершения чужого сеанса права администратора потребуются в любом случае.
Почему блокировка не снимается даже после удаления сеанса?
Возможные причины: осталось соединение на уровне СУБД (проверьте раздел «Соединения» в консоли), блокировку держит фоновое задание, либо вы смотрите не ту информационную базу в кластере. Также убедитесь, что пользователь не открыл документ повторно в другом сеансе.
Опасно ли принудительное завершение сеанса для базы данных?
Для целостности базы — нет: платформа и СУБД корректно откатывают незавершённые транзакции. Риск только в потере данных, которые пользователь ввёл, но не записал. Поэтому перед удалением сеанса стоит убедиться, что он действительно завис.
Как понять, что блокировку держит регламентное задание, а не пользователь?
В консоли кластера у фоновых заданий в списке сеансов тип сеанса указан как «Фоновое задание», а в колонке приложения — имя задания. Также косвенный признак: конфликты возникают в одно и то же время суток, совпадающее с расписанием заданий.
Работает ли снятие блокировок через консоль в файловой базе?
Нет, консоль кластера работает только с сервером 1С. Для файловой базы используйте функцию завершения сеансов в разделе «Активные пользователи» (если она есть в конфигурации) или попросите всех выйти из программы и зайти заново.
Что важно запомнить
Имя блокирующего пользователя почти всегда есть в тексте ошибки. Сначала просите коллегу закрыть документ штатно, при зависшем сеансе — завершайте его в консоли кластера. Повторяющиеся конфликты при проведении лечатся настройкой расписания фоновых заданий, а профилактика — автоматическим завершением спящих сеансов.