1С: Запись заблокирована другим сеансом — Поиск виновника и решение
- Предупреждение при попытке редактирования объекта:
Запись заблокирована другим сеансом. Пользователь: 'Иванов И.И.', Компьютер: 'WS-042'. - Невозможность провести или отменить проведение документа из-за блокировки зависимых записей регистров.
- Фоновые регламентные задания останавливаются с ошибкой эксклюзивного доступа к строке таблицы.
1. Идентификация сеанса-инициатора блокировки
Если в сообщении об ошибке не указан пользователь:
- Откройте Администрирование → Обслуживание → Активные пользователи.
- Проверьте пользователей, работающих с тем же документом или справочником.
- В Консоли администрирования кластера 1С перейдите в Сеансы → Блокировки и найдите блокировку с соответствующим именем таблицы и значением пространства.
2. Завершение зависшего сеанса
Завершите сеанс пользователя, удерживающего блокировку:
# Через утилиту командной строки rac:
rac session --cluster=<CLUSTER_ID> terminate --session=<SESSION_ID>3. Программный обход блокировки с повторными попытками (Retry Logic)
Для автоматических интеграций и очередей сообщений внедрите шаблон повторных попыток записи при коллизиях:
ПопыткаЗаписи = 0;
УспешноЗаписано = Ложь;
Пока ПопыткаЗаписи < 5 И Не УспешноЗаписано Цикл
ПопыткаЗаписи = ПопыткаЗаписи + 1;
Попытка
Объект.Записать();
УспешноЗаписано = Истина;
Исключение
Если ПопыткаЗаписи >= 5 Тогда
ВызватьИсключение "Превышен лимит ожидания разблокировки объекта: " + ОписаниеОшибки();
КонецЕсли;
// Пауза 2 секунды перед повтором
Приостановить(2);
КонецПопытки;
КонецЦикла;4. Сокращение времени удержания транзакции
Убедитесь, что внутри транзакций не вызываются модальные окна, запросы к внешним веб-сервисам и длительные вычисления.
Частые вопросы (FAQ)
Почему возникает блокировка, если указанный пользователь уже закрыл 1С?
Если клиент 1С аварийно завершил работу (снят через Диспетчер задач или пропала сеть), его сеанс и блокировки остаются активными на сервере 1С до истечения таймаута неактивных сеансов (Session Timeout).
Как принудительно отключить пользователя только средствами 1С?
В режиме 1С:Предприятие откройте обработку 'Панель администрирования БСП' -> 'Активные пользователи' и нажмите кнопку 'Удалить' (Завершить сеанс).
Чем отличается блокировка таблицы от блокировки отдельной записи?
Блокировка записи накладывается на конкретный GUID объекта или набор ключевых измерений регистра. Блокировка таблицы накладывается на всю сущность целиком при отсутствии фильтров в транзакции.
Можно ли перехватить ошибку блокировки другим сеансом без показа окна пользователю?
Да, обернув вызов ЗаблокироватьДанныеДляРедактирования() или Записать() в блок Попытка...Исключение.