1C-CodeОшибки 1С → Превышено максимальное время ожидания предоставления блокировки

Превышено максимальное время ожидания блокировки в 1С

Сообщение платформы: Превышено максимальное время ожидания предоставления блокировки

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

Отчего это бывает

1. Кто-то долго проводит большой документ

// документ с тысячей строк проводится минуту,
// все остальные ждут его движений по регистру

Чем дольше транзакция, тем длиннее очередь за ней. Это та же болезнь, что и у конфликта блокировок, только проявляется мягче.

2. Групповая обработка в рабочее время

// перепроведение документов за месяц, запущенное в полдень

Такие вещи ставят на ночь регламентным заданием, а не запускают руками посреди рабочего дня.

3. Открытая транзакция, которую забыли закрыть

НачатьТранзакцию();
Если Условие Тогда
	Возврат;          // выход из процедуры мимо фиксации
КонецЕсли;
ЗафиксироватьТранзакцию();

Выход из процедуры в обход фиксации оставляет транзакцию открытой до конца сеанса. Все ждут, а виновник просто сидит в другом окне.

Что сделать

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

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

Открыть тренажёр

Разобраться глубже

Другие частые ошибки

Поле объекта не обнаружено Значение не является значением объектного типа Переменная не определена Метод объекта не обнаружен Индекс находится за границами массива Деление на ноль