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

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

1С: кем заблокирован документ и как снять блокировку

Как узнать, кем заблокирован документ в 1С, где посмотреть активные сеансы, как снять блокировку через консоль кластера и что делать, если пользователь уже вышел.

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

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

Как устроена блокировка документов в 1С

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

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

Как узнать, кто заблокировал документ

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

Если сообщение неинформативное, используйте штатные средства администрирования:

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

Попросите коллегу закрыть документ — этого достаточно

Пользователь указан, но он уже вышелЗависший сеанс

Ищите сеанс в консоли кластера и завершайте его

Блокировка появляется периодически у всехФоновое задание или обмен

Проверьте расписание регламентных заданий и синхронизаций

Ошибка только при проведенииТранзакционная блокировка СУБД

Смотрите активные запросы на стороне базы данных

Поиск блокирующего сеанса в консоли кластера

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

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

Порядок действий в консоли кластера
  1. 1
    Откройте оснастку администрирования серверов 1С и нужный кластер
  2. 2
    Перейдите: Информационные базы → ваша база → Сеансы
  3. 3
    Найдите сеанс по имени пользователя из текста ошибки
  4. 4
    Проверьте время последней активности и компьютер
  5. 5
    Свяжитесь с пользователем и попросите закрыть документ штатно
  6. 6
    Если сеанс завис — завершите его через контекстное меню «Удалить»
  7. 7
    Попросите второго пользователя повторить открытие документа

Как безопасно снять блокировку

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

Если сеанс завис, удалите его в консоли кластера: правый клик по сеансу → «Удалить». Сервер освободит все удерживаемые объектом блокировки. Несохранённые данные этого сеанса будут потеряны, но при зависшем сеансе их всё равно невозможно сохранить.

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

Блокировка при проведении: транзакционные конфликты

Ошибка «Конфликт блокировок при выполнении транзакции» при проведении означает, что документ затрагивает те же данные, что и параллельный процесс: остатки по складу, регистры расчётов, последовательности. Частый источник — регламентные задания (пересчёт итогов, обмен данными, загрузка курсов), которые выполняются в момент работы пользователей.

Что сделать: повторите проведение через несколько секунд — кратковременные транзакционные блокировки снимаются сами. Если ошибка повторяется систематически, проверьте расписание фоновых заданий и разведите по времени тяжёлые операции. В клиент-серверном варианте администратор СУБД может посмотреть активные блокировки средствами самой СУБД (например, динамические представления sys.dm_tran_locks в MS SQL).

Маршрут решения

Как выбрать действие

Документ открыт у конкретного коллегиПопросите закрыть форму — блокировка снимется сама
Пользователь вышел, но документ занятЗавершите зависший сеанс в консоли кластера
Ошибка только при проведении и пропадает при повтореЭто транзакционный конфликт — повторите операцию, проверьте фоновые задания
Блокируются сразу много документов у всех пользователейИщите зависший обмен или регламентное задание, при необходимости отключите его на время разбора

Как предотвратить зависшие блокировки

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

Дополнительные меры: договоритесь с пользователями не оставлять документы открытыми на ночь, настройте версионирование объектов (чтобы восстанавливать данные при конфликтах), а тяжёлые регламентные задания перенесите на нерабочие часы. Для разработчиков: в управляемых формах корректно используйте методы ЗаблокироватьДанныеДляРедактирования и РазблокироватьДанныеДляРедактирования, не удерживая блокировку дольше необходимого.

Типичные ошибки
01
Перезагрузка сервера 1С ради одной блокировки — обрываются все сеансы и теряются несохранённые данные всех пользователей
02
Удаление зависшего сеанса без проверки активности — пользователь мог просто отойти, его ввод пропадёт
03
Игнорирование повторяющихся конфликтов при проведении — признак конфликта расписаний фоновых заданий, который сам не исчезнет
04
Отключение режима управляемых блокировок в надежде «убрать ошибку» — это приводит к рассогласованию данных в регистрах

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

Документ заблокирован пользователем, который уже уволился. Что делать?

Такая блокировка — всегда зависший сеанс, потому что реальной работы нет. Найдите сеанс в консоли кластера по имени пользователя и удалите его. Если сеансов нет, а ошибка остаётся, перезапустите службу агента сервера 1С в нерабочее время — это сбросит все остаточные блокировки.

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

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

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

Возможные причины: осталось соединение на уровне СУБД (проверьте раздел «Соединения» в консоли), блокировку держит фоновое задание, либо вы смотрите не ту информационную базу в кластере. Также убедитесь, что пользователь не открыл документ повторно в другом сеансе.

Опасно ли принудительное завершение сеанса для базы данных?

Для целостности базы — нет: платформа и СУБД корректно откатывают незавершённые транзакции. Риск только в потере данных, которые пользователь ввёл, но не записал. Поэтому перед удалением сеанса стоит убедиться, что он действительно завис.

Как понять, что блокировку держит регламентное задание, а не пользователь?

В консоли кластера у фоновых заданий в списке сеансов тип сеанса указан как «Фоновое задание», а в колонке приложения — имя задания. Также косвенный признак: конфликты возникают в одно и то же время суток, совпадающее с расписанием заданий.

Работает ли снятие блокировок через консоль в файловой базе?

Нет, консоль кластера работает только с сервером 1С. Для файловой базы используйте функцию завершения сеансов в разделе «Активные пользователи» (если она есть в конфигурации) или попросите всех выйти из программы и зайти заново.

Итог

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

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