Конфликт блокировок при выполнении транзакции в 1С 8.3
Сообщение «Конфликт блокировок при выполнении транзакции» в 1С 8.3 — одна из самых частых ошибок в многопользовательских системах. Для бухгалтера это барьер к проведению документа, для администратора — повод оценить производительность сервера и качество конфигурации. В пиковые периоды (закрытие месяца, сдача отчётности) такие ошибки могут парализовать работу целого отдела.
В материале разберём, почему возникают блокировки, как быстро снять конфликт в моменте и устранить его причину навсегда.
Содержание
- 1 Что такое конфликт блокировок
- 2 Зачем вообще нужны блокировки
- 3 Два режима управления блокировками
- 4 Уровни блокировок: S и U/X
- 5 5 главных причин конфликтов
- 6 Диагностика: где смотреть подробности
- 7 Быстрое решение: снять конфликт прямо сейчас
- 8 Долгосрочное решение: перевод на управляемые блокировки
- 9 Оптимизация запросов
- 10 Настройки СУБД
- 11 Профилактика конфликтов
- 12 Типичные сценарии конфликтов
- 13 Часто задаваемые вопросы
- 13.1 Можно ли увеличить тайм-аут блокировок?
- 13.2 Что такое deadlock и чем отличается от обычного конфликта?
- 13.3 Почему конфликт возникает только в одной базе?
- 13.4 Поможет ли увеличение оперативной памяти сервера?
- 13.5 Стоит ли переходить с MS SQL на PostgreSQL?
- 13.6 Как понять, что конфигурация работает в управляемом режиме?
- 13.7 Помогает ли разнесение пользователей по разным сеансам?
- 14 Резюме
Что такое конфликт блокировок
Блокировка в СУБД — механизм защиты данных от одновременного изменения двумя процессами. Когда один пользователь записывает документ, программа блокирует связанные записи в регистрах. Второй пользователь, обратившийся к тем же данным, должен ждать освобождения блокировки.
Конфликт возникает, когда время ожидания превышает заданный лимит. По умолчанию — 20 секунд. После этого транзакция отменяется, а пользователь видит ошибку.
Полный текст ошибки
Стандартное сообщение выглядит так: «Конфликт блокировок при выполнении транзакции: превышено максимальное время ожидания предоставления блокировки». Дополнительно может указываться имя таблицы и тип блокировки.
Зачем вообще нужны блокировки
Без блокировок невозможна корректная работа системы. Представьте, что два кассира одновременно списывают последний товар на складе. Без блокировки оба документа пройдут — и в учёте появится отрицательный остаток. С блокировкой второй кассир получит предупреждение, что товара уже нет.
Что защищают блокировки
- Целостность остатков на складах.
- Правильность расчёта взаиморасчётов.
- Корректность проводок по счетам.
- Уникальность номеров документов.
- Соответствие данных в нескольких регистрах.
Два режима управления блокировками
В 1С 8.3 поддерживаются два режима. Они отличаются принципом работы и нагрузкой на систему.
| Параметр | Автоматический режим | Управляемый режим |
|---|---|---|
| Появился | С 1С 7.7 | С 1С 8.1 |
| Кто блокирует | СУБД автоматически | Платформа 1С на уровне таблиц |
| Уровень блокировки | Сериализуемый (Serializable) | Чтение зафиксированных (Read Committed) |
| Объём блокировок | Большой — блокируются страницы | Минимальный — только нужные записи |
| Производительность | Низкая в нагруженных системах | Высокая |
В современных типовых конфигурациях 1С 8.3 (Бухгалтерия, ЗУП, Управление торговлей, ERP) по умолчанию используется управляемый режим. На старых самописных конфигурациях встречается автоматический.
Уровни блокировок: S и U/X
В управляемом режиме платформа использует два уровня.
Накладывается при чтении данных. Несколько пользователей могут одновременно получать одну и ту же запись для чтения. Конфликт возникает, только если кто-то пытается изменить заблокированные на чтение данные.
Исключительная блокировка (Update/Exclusive, U/X)
Накладывается при изменении или планируемом изменении данных. Только один процесс может держать исключительную блокировку. Все остальные ждут.
В коде запросов исключительная блокировка задаётся фразой ДЛЯ ИЗМЕНЕНИЯ в конце запроса.
5 главных причин конфликтов
1. Одновременная работа с большим объёмом данных
В пиковые часы (утро понедельника, последние дни месяца) сотни пользователей одновременно проводят документы по одним и тем же регистрам. Это объективная причина — её нельзя устранить полностью, только снизить через оптимизацию.
2. Неоптимальные запросы
Неправильно написанный запрос может заблокировать целую таблицу вместо одной строки. Типичные ошибки разработчиков:
- Отсутствие условия по индексу в запросе.
- Использование
ДЛЯ ИЗМЕНЕНИЯбез необходимости. - Чтение остатков без указания периода.
- Использование
ОБЪЕДИНИТЬвместоСОЕДИНИТЬ.
3. Длинные транзакции
Чем дольше длится транзакция, тем дольше держатся блокировки. Транзакции, выполняющие сложные расчёты в одном проведении, — постоянный источник конфликтов.
4. Регламентные операции в рабочее время
«Закрытие месяца», «Восстановление последовательности», обновление информационной базы — операции, которые сами по себе блокируют большие объёмы данных. Запуск во время активной работы пользователей гарантирует конфликты.
5. Устаревшая конфигурация в автоматическом режиме
Конфигурации, не переведённые на управляемые блокировки, в 2026 году считаются критически устаревшими. Они блокируют целые страницы данных там, где управляемый режим заблокировал бы одну запись.
Диагностика: где смотреть подробности
Чтобы понять причину конфликта, нужно собрать данные о блокировке.
Журнал регистрации
В программе откройте Сервис → Журнал регистрации. Установите фильтр по уровню «Ошибка» и времени возникновения проблемы. Журнал покажет:
- Имя пользователя.
- Документ, при проведении которого возник конфликт.
- Имя метода, в котором случилась ошибка.
Технологический журнал
Расширенный инструмент для администраторов. Включается в файле logcfg.xml в каталоге сервера 1С. Записывает все обращения к СУБД, тайминги, события блокировок.
Технологический журнал — основа для серьёзного анализа производительности. Используется специалистами по оптимизации.
Центр управления производительностью (ЦУП)
Платная утилита от фирмы 1С. Анализирует технологический журнал и строит отчёты о проблемах производительности. Подходит для постоянного мониторинга в крупных системах.
Сервис «Мониторинг» в 1С 8.3.18+
Встроенный инструмент, доступный в свежих версиях платформы. Раздел Администрирование → Мониторинг. Показывает текущие сеансы и активные блокировки в реальном времени.
Быстрое решение: снять конфликт прямо сейчас
Когда нужно срочно сдать отчёт, а ошибки мешают — действуйте по одному из двух сценариев.
Сценарий 1. Завершить блокирующий сеанс
Подходит для систем до 50 пользователей.
- Откройте консоль администрирования сервера 1С.
- Найдите активные сеансы.
- Определите сеанс с длительной транзакцией (по времени старта).
- Завершите этот сеанс.
- Заблокированные данные освободятся.
Сценарий 2. Перезагрузка сервера 1С
Радикальный, но быстрый способ. Снимает все активные блокировки одновременно.
- Уведомите пользователей о краткой перезагрузке.
- Через консоль или PowerShell перезапустите службу 1С:Предприятия.
- После запуска (1–2 минуты) пользователи смогут войти заново.
Важно: оба способа — только для аварийных ситуаций. Регулярная необходимость в них означает системную проблему, которую нужно решать.
Долгосрочное решение: перевод на управляемые блокировки
Если конфигурация работает в автоматическом режиме — это первое, что нужно поменять.
Что включает перевод
- Изменение режима в свойствах конфигурации (с «Автоматический» на «Управляемый»).
- Доработка кода всех проведений документов.
- Добавление управляемых блокировок в нужных местах.
- Тестирование всех сценариев работы.
Сколько занимает
В типовой Бухгалтерии 8.3 — уже сделано. В самописных конфигурациях работа специалиста — от 40 до 200 часов в зависимости от сложности.
Оптимизация запросов
Даже в управляемом режиме плохо написанные запросы вызывают конфликты.
Что проверить
- Каждый запрос имеет фильтр по индексируемому полю.
- Условия отбора расположены до соединений (через
ВНУТРЕННЕЕ СОЕДИНЕНИЕ). - Большие запросы разбиты на несколько мелких через временные таблицы.
- Запросы остатков всегда содержат границу периода.
- Конструкция
ДЛЯ ИЗМЕНЕНИЯиспользуется только при реальном намерении изменить данные.
Инструменты анализа
В Конфигураторе встроен «Анализ запросов» в режиме отладки. Показывает план выполнения и время каждого этапа.
Для глубокого анализа применяется SQL Server Profiler (для MS SQL) или pg_stat_statements (для PostgreSQL).
Настройки СУБД
Производительность сервера баз данных напрямую влияет на частоту конфликтов.
PostgreSQL для 1С
Основные параметры в postgresql.conf:
shared_buffers— 25 % от оперативной памяти сервера.work_mem— 64–128 МБ для сложных запросов.maintenance_work_mem— 256 МБ для VACUUM.max_connections— на 20 % больше числа пользователей 1С.lock_timeout— установить в 30000 (30 секунд).
MS SQL Server для 1С
- Включите Read Committed Snapshot Isolation (
READ_COMMITTED_SNAPSHOT ON). - Регулярно выполняйте обслуживание индексов.
- Настройте автоочистку статистики.
- Выделите достаточно оперативной памяти SQL-серверу.
Профилактика конфликтов
Регламент работы
- Запускайте регламентные операции (закрытие месяца, обновление информационной базы) ночью или в выходные.
- Не проводите массовые перепроведения в рабочее время.
- Распределяйте сложные расчёты по разным временным окнам.
Регулярный мониторинг
- Раз в неделю — анализ журнала регистрации на ошибки.
- Раз в месяц — проверка производительности через ЦУП или Мониторинг.
- Раз в квартал — обновление статистики СУБД.
Типичные сценарии конфликтов
Сценарий 1. Конфликт при закрытии месяца
Менеджер пытается провести реализацию, в это время бухгалтер запустил «Закрытие месяца». Закрытие захватывает регистр продаж — реализация ждёт.
Решение: делайте закрытие месяца после окончания рабочего дня.
Сценарий 2. Дублирование номеров
Два пользователя одновременно создают документ. Программа блокирует генератор номеров. Второй пользователь ждёт.
Решение: устраняется автоматически — конфликт длится миллисекунды и не доходит до тайм-аута.
Сценарий 3. Длинный отчёт блокирует учёт
Финансовый директор формирует ОСВ за год. Запрос блокирует регистр бухгалтерии. Бухгалтеры не могут провести документы.
Решение: формируйте тяжёлые отчёты в нерабочее время или используйте копию базы для аналитики.
Часто задаваемые вопросы
Можно ли увеличить тайм-аут блокировок?
Да, через свойства информационной базы в конфигураторе. Но это не решение проблемы — пользователи будут просто дольше ждать. Лучше устранить причину.
Что такое deadlock и чем отличается от обычного конфликта?
Deadlock — это взаимная блокировка. Транзакция А ждёт ресурс Б, транзакция Б ждёт ресурс А. Без вмешательства они блокируют друг друга навсегда. СУБД распознаёт deadlock и принудительно отменяет одну из транзакций.
Почему конфликт возникает только в одной базе?
Видимо, в этой базе самописные доработки или другие данные. Сравните с типовой базой и проверьте, что в ней изменено.
Поможет ли увеличение оперативной памяти сервера?
Косвенно — да. Больше памяти ускоряет работу СУБД, транзакции выполняются быстрее, блокировки держатся меньше. Но это не лечит причину.
Стоит ли переходить с MS SQL на PostgreSQL?
В рамках импортозамещения — да. PostgreSQL официально поддерживается фирмой 1С с 2014 года и в ряде сценариев показывает лучшую производительность. При корректной настройке.
Как понять, что конфигурация работает в управляемом режиме?
В конфигураторе откройте свойства корневого объекта конфигурации. В разделе «Совместимость» проверьте параметр «Режим управления блокировкой данных».
Помогает ли разнесение пользователей по разным сеансам?
Нет. Все пользователи работают с одной базой. Разнесение по сеансам не уменьшает количество блокировок.
Резюме
- Конфликт блокировок в 1С 8.3 — следствие конкуренции за данные. Возникает при превышении 20-секундного тайм-аута ожидания.
- Современные типовые конфигурации работают в управляемом режиме. Самописные базы в автоматическом режиме — главный источник проблем.
- Быстрое решение — завершить блокирующий сеанс или перезапустить сервер. Оба способа — аварийные, постоянное использование недопустимо.
- Долгосрочное решение — оптимизация запросов, перевод на управляемые блокировки, настройка СУБД и регламент запуска тяжёлых операций в нерабочее время.
