1С Ошибка: Превышено максимальное время ожидания предоставления блокировки
- Диалоговое окно
Превышено максимальное время ожидания предоставления блокировкипри попытке записи или проведения документа. - В журнале регистрации фиксируется аварийное прерывание сеанса по таймауту.
- Падение производительности в моменты выполнения регламентных процедур (закрытие месяца, расчет себестоимости).
- Пользователи жалуются на зависание интерфейса на 20-60 секунд с последующим выбросом ошибки.
1. Анализ таймаута ожидания блокировок в 1С
По умолчанию таймаут ожидания управляемой блокировки в платформе 1С составляет 20 секунд. Если за это время блокирующий процесс не завершил транзакцию, ожидающий поток падает с ошибкой.
2. Настройка технологического журнала для выявления виновника (Lock Blocker)
Создайте конфигурацию logcfg.xml:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log history="12" location="C:\1c_logs\tlock">
<event>
<eq property="name" value="TLOCK"/>
<ge property="WaitConnections" value="1"/>
</event>
<event>
<eq property="name" value="TTIMEOUT"/>
</event>
<property name="all"/>
</log>
</config>В логе событие TTIMEOUT покажет номер блокирующего соединения (WaitConnections) и точную строку кода модуля 1С.
3. Временное увеличение таймаута в коде BSL (для тяжелых обработок)
Блокировка = Новый БлокировкаДанных;
// Увеличение таймаута ожидания до 60 секунд для массовой пакетной обработки
Блокировка.Таймаут = 60;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Хозрасчетный");
Блокировка.Заблокировать();4. Оптимизация уровня изоляции СУБД PostgreSQL
Для PostgreSQL под 1С отредактируйте postgresql.conf:
# Задержка проверки взаимных блокировок
deadlock_timeout = 1000ms
# Максимальное время ожидания блокировки строки
lock_timeout = 25000ms Частые вопросы (FAQ)
Почему простое увеличение таймаута блокировок не решает проблему?
Увеличение таймаута лишь маскирует симптом. Очередь ожидающих пользователей вырастет, интерфейс будет зависать не на 20, а на 60 секунд, что приведет к еще большей деградации работы всей компании.
Как в консоли кластера 1С найти сеанс, который держит блокировку?
Откройте 'Блокировки' в консоли кластера серверов 1С, найдите объект с типом блокировки Exclusive и по номеру сеанса/соединения завершите зависший процесс.
Влияют ли антивирусы на появление таймаутов блокировок?
Да. Сканирование антивирусом файлов баз данных (.mdf/.ldf/.1CD) и папок кластера srvinfo приводит к микрозадержкам I/O, кратно увеличивая время удержания SQL-транзакций.
Как решить проблему таймаутов при партионном учете?
Переходите на методику проведения документов 'Списание партий при проведении — Выключено' с переносом распределения себестоимости в отдельное ночное фоновое задание.