← База знаний

Оптимизация 1С:ERP при большом потоке заказов: устранение блокировок и ускорение работы

Если при 200+ одновременных заказах 1С:ERP начинает зависать, выдавать ошибки блокировок или проведение документов занимает минуты — это сигнал к технической оптимизации. Проблема не в железе, а в архитектуре запросов и настройках СУБД.

Почему 1С:ERP тормозит при большом потоке заказов

При сотнях одновременных заказов в день ERP-система начинает работать медленно из-за нескольких ключевых проблем:

  • Конкурентные блокировки (Deadlocks): При массовом проведении документов несколько потоков одновременно обращаются к одним таблицам регистров накопления. SQL-сервер фиксирует взаимоблокировку и откатывает транзакции, что приводит к ошибкам и повторным попыткам проведения.
  • Неоптимальные индексы СУБД: Таблицы регистров остатков товаров _AccumReg разрастаются до десятков миллионов строк. Без правильных составных индексов каждый запрос выполняет полное сканирование таблицы.
  • Тяжёлые регламентные задания: Расчёт себестоимости, формирование планов закупок и обмен с маркетплейсами запускаются параллельно с оперативной работой пользователей, создавая пиковые нагрузки.
  • Некорректные расширения: Кастомные доработки без учёта управляемых блокировок добавляют избыточные запросы в транзакции проведения документов.

Диагностика: как найти узкое место

Перед оптимизацией необходимо точно локализовать проблему. Инструменты диагностики:

  1. Технологический журнал 1С (ТЖ): Настраиваем сбор событий TLOCK, DEADLOCK, EXCP длительностью более 1000 мс. Анализируем, какие объекты блокируются чаще всего.
  2. Центр производительности 1С (КИП): Замеряем вызовы с максимальным временем выполнения, выявляем «тяжёлые» запросы на уровне встроенного языка.
  3. SQL Server Profiler / pg_stat_statements: Смотрим планы выполнения SQL-запросов, находим Table Scan вместо Index Seek, дорогие сортировки и временные таблицы.
  4. sys.dm_exec_requests (MS SQL): Видим активные транзакции в реальном времени — кто кого блокирует и как долго ждёт.

Методы оптимизации при высоком потоке заказов

После диагностики применяю комплекс мер:

  • Переход на управляемые блокировки: В конфигурации включаем режим управляемых блокировок. Это позволяет 1С самостоятельно управлять гранулярностью блокировок — не на уровне всей таблицы, а на уровне конкретных записей.
  • Разделение итогов регистров: Для регистров с высокой конкурентностью (остатки товаров, взаиморасчёты) включаем разделение итогов. СУБД хранит частичные итоги по разделителям, что в разы снижает конфликты блокировок.
  • Оптимизация индексов SQL: Добавляем составные индексы на колонки измерений регистров накопления. Для MS SQL используем INCLUDE для покрытия частых выборок.
  • Вынос тяжёлых заданий в ночное окно: Расчёт себестоимости, обновление агрегатов, обмен с внешними системами переносим на 02:00–06:00.
  • Рефакторинг кастомных расширений: Убираем лишние запросы из обработчиков проведения документов, заменяем синхронные вызовы на асинхронные фоновые задания.
Результат: После оптимизации время проведения одного заказа снижается с 3–10 секунд до 200–500 мс. Система выдерживает нагрузку в 5–10 раз выше без ошибок блокировок.

Стоимость и сроки оптимизации 1С:ERP

Задача Трудозатраты
Диагностика и анализ узких мест (ТЖ + SQL) от 3 часов
Оптимизация индексов и разделение итогов от 4 часов
Переход на управляемые блокировки + тестирование от 8 часов
Рефакторинг кастомных расширений от 10 часов

1С:ERP тормозит при пиковой нагрузке?

Подключусь к вашей системе, проведу диагностику через Технологический журнал и SQL Profiler, найду точное узкое место и устраню его. Работаю с базами любого размера.

Заказать оптимизацию ERP →