1С: «Конфликт блокировок при выполнении транзакции»

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

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

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Быстрое снятие
  5. Поиск источника
  6. Исправление кода

#Что означает ошибка

Сообщение
Конфликт блокировок при выполнении транзакции

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

Для решения нужно выяснить, кто блокирует и какой ресурс. Не перезапускайте сервер: проблема вернётся.

Сначала зафиксируйте конфликт и его источник в журналах; завершение сеанса — рискованная мера после согласования.

Конфликт может возникать при ожидании блокировки и взаимоблокировке; устраняется анализом транзакций, а не обязательным завершением пользователей.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Зависший сеанс пользователяСеанс действительно удерживает блокировку по журналуДоговоритесь с пользователем о штатном завершении, принудительно только в крайнем случае.
Одновременное проведение документовОдновременно проводятся документы, изменяющие общие регистрыИзучите конкурирующие транзакции, длительность и порядок обращения.
Регламентные заданияРегламентное задание совпадает по времени с конфликтомСверьте расписание, при необходимости согласуйте время выполнения.
Нехватка ресурсов сервераПри нагрузке увеличивается длительность транзакцийПроверьте СУБД и медленные операции; оптимизируйте после измерений.

#Пошаговое решение

  1. Найдите блокирующий сеансЕсли 1С сообщает о конфликте блокировок, сохраните точный текст, время и название действия (проведение документа, обмен, отчёт). Обычный пользователь закрывает только свою операцию и сообщает администратору; сервер не перезапускает. Администратор кластера 1С открывает средство администрирования серверов своей версии, выбирает нужную информационную базу и смотрит сеансы/соединения; сопоставляет пользователя и время с сообщением. Наличие долгого сеанса само по себе ещё не означает, что он блокировщик — нужны журналы и признаки ожидания.
  2. Завершите зависший сеансЕсли по журналам подтверждён зависший конкретный сеанс, свяжитесь с его владельцем и попросите сохранить документы и завершить работу самостоятельно. Принудительное завершение из консоли кластера допустимо только администратору при согласованном простое; оно может отменить транзакцию и уничтожить несохранённые изменения. После действия проверьте, что другой пользователь может повторить операцию. Не завершайте все сеансы или все процессы 1С из Диспетчера задач ради одной блокировки.
  3. Включите технологический журналДля повторяющегося конфликта администратор настраивает технологический журнал 1С через logcfg.xml в фактическом каталоге конфигурации платформы; имя, место и доступные события зависят от версии. На тестовом контуре включите только нужные события и ограничьте сбор по времени: подробный журнал может быстро занять диск и содержать чувствительную информацию. Ищите события блокировок, ожиданий и взаимоблокировок (например, TLOCK/TTIMEOUT/TDEADLOCK, если поддерживаются версией); сохраните связку сеанс — ресурс — время для разработчика.
  4. ПроанализируйтеЕсли используется клиент-серверная база PostgreSQL или SQL Server, дополнительно проверьте блокировки на стороне именно этой СУБД в её штатных средствах. PostgreSQL: в psql доступны pg_stat_activity, pg_blocking_pids(pid); SQL Server: представления sys.dm_tran_locks и sys.dm_exec_requests с соответствующими правами. Таблица блокировок не показывает автоматически исходный код 1С: сопоставьте время и SQL с журналом 1С. Не запускайте скрипты массового завершения запросов.
  5. Исправьте кодРазработчик конфигурации после воспроизведения на тестовой базе проверяет длительность транзакций, порядок записи регистров/объектов, вложенные вызовы и внешние сетевые операции. Уменьшайте время удержания блокировок, выбирайте единый порядок обращения к объектам, затем проведите тест одновременной работы нескольких пользователей. Увеличение тайм-аутов или перезапуск сервера без анализа лишь скрывает причину. Пользователь рабочего места не должен самостоятельно менять обработчики конфигурации.

#Быстрое снятие

Администратор кластера сопоставляет конкретные сеансы с временем и журналами блокировки; долгий сеанс не равен зависшему. Принудительное завершение допускается лишь после согласования с владельцем сеанса и осознания риска потери незаписанных документов; массово останавливать 1С нельзя.

#Поиск источника

Технологический журнал 1С включается администратором после проверки версии платформы, места расположения logcfg.xml, свободного места и требований конфиденциальности. События и способы анализа различаются; при SQL Server либо PostgreSQL можно параллельно изучить блокирующие процессы штатными диагностическими запросами, не завершая их.

#Исправление кода

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

SQLКоманда
Показывает, какие сеансы удерживают блокировки и кто ожидает.
-- MS SQL: текущие блокировки
SELECT request_session_id, resource_type, request_mode, request_status
FROM sys.dm_tran_locks;

Так эту ошибку тоже называют

Источники и обновления

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