← База знаний

Ускорение работы 1С 8: топ-10 ошибок программистов, замедляющих систему

Чаще всего 1С тормозит не из-за «железа», а из-за ошибок в коде. Один неудачный запрос в цикле может замедлить работу в 100 раз. Разбираем 10 самых распространённых ошибок 1С-разработчиков и как их исправить.

🔴 Ошибка 1: Запрос в цикле

Самая частая и разрушительная ошибка. Вместо одного запроса, который возвращает все данные, программист делает отдельный запрос для каждой строки таблицы.

❌ Плохо: Цикл по 1000 строкам → 1000 запросов к СУБД (30 секунд)
✅ Хорошо: Один запрос с временной таблицей → 1 запрос к СУБД (0.3 секунды)

Как найти: Технологический журнал, событие SDBL — смотрите повторяющиеся однотипные запросы.

🔴 Ошибка 2: Неиндексированные реквизиты в условиях запросов

Запрос фильтрует данные по реквизиту, который не индексирован. СУБД вынуждена сканировать всю таблицу.

Решение: В конфигураторе установите у реквизита свойство «Индексировать» = «Индексировать» или «Индексировать с дополнительным упорядочиванием». Или добавьте индекс через SQL Management Studio.

🔴 Ошибка 3: Получение реквизитов через точку в запросе

Конструкция Документ.Контрагент.Наименование в запросе генерирует LEFT JOIN с большой таблицей.

Цена ошибки: Каждая «точка» — это дополнительный JOIN. Три точки = три JOIN на таблицы, которые могут содержать миллионы строк.

Решение: Используйте явные соединения (ЛЕВОЕ СОЕДИНЕНИЕ) вместо обращений через точку.

🔴 Ошибка 4: Использование РАЗЛИЧНЫЕ без необходимости

Оператор РАЗЛИЧНЫЕ (DISTINCT) заставляет СУБД сортировать весь результат для удаления дубликатов. Если данных много — это очень дорого.

Решение: Убедитесь, что РАЗЛИЧНЫЕ действительно нужен. Часто его ставят «на всякий случай», хотя дубликатов нет.

🔴 Ошибка 5: Избыточные блокировки

Управляемые блокировки установлены слишком широко. Один пользователь блокирует данные при записи — остальные ждут.

Признаки: Пользователи жалуются на «конфликт блокировок» или «ожидание блокировки». Один менеджер проводит документ — остальные зависают.

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

🔴 Ошибки 6–10: Краткий обзор

  • 6. Загрузка всех данных на клиент — выборка 100 000 строк в таблицу формы. Используйте динамический список с отбором
  • 7. Подписки на события без фильтрации — подписка срабатывает при каждом проведении любого документа, хотя нужна только для одного типа
  • 8. Неправильное использование временных таблиц — создание временных таблиц без индексов на ключевых полях
  • 9. Синхронные вызовы внешних сервисов — HTTP-запрос к API в процедуре проведения. Если сервис недоступен — 1С зависает
  • 10. Отсутствие пакетных запросов — 5 отдельных запросов вместо одного пакетного. Каждый запрос — отдельное обращение к СУБД

Нужен аудит кода 1С?

Проведу ревью вашего кода и найду «узкие места». Оптимизация одного неудачного запроса может ускорить систему в 10 раз.

Заказать аудит кода →

📚 Связанные статьи