Ускорение работы 1С 8: топ-10 ошибок программистов, замедляющих систему
Чаще всего 1С тормозит не из-за «железа», а из-за ошибок в коде. Один неудачный запрос в цикле может замедлить работу в 100 раз. Разбираем 10 самых распространённых ошибок 1С-разработчиков и как их исправить.
🔴 Ошибка 1: Запрос в цикле
Самая частая и разрушительная ошибка. Вместо одного запроса, который возвращает все данные, программист делает отдельный запрос для каждой строки таблицы.
✅ Хорошо: Один запрос с временной таблицей → 1 запрос к СУБД (0.3 секунды)
Как найти: Технологический журнал, событие SDBL — смотрите повторяющиеся однотипные запросы.
🔴 Ошибка 2: Неиндексированные реквизиты в условиях запросов
Запрос фильтрует данные по реквизиту, который не индексирован. СУБД вынуждена сканировать всю таблицу.
🔴 Ошибка 3: Получение реквизитов через точку в запросе
Конструкция Документ.Контрагент.Наименование в запросе генерирует LEFT JOIN с
большой таблицей.
Решение: Используйте явные соединения (ЛЕВОЕ СОЕДИНЕНИЕ) вместо обращений через точку.
🔴 Ошибка 4: Использование РАЗЛИЧНЫЕ без необходимости
Оператор РАЗЛИЧНЫЕ (DISTINCT) заставляет СУБД сортировать весь результат для удаления дубликатов. Если данных много — это очень дорого.
Решение: Убедитесь, что РАЗЛИЧНЫЕ действительно нужен. Часто его ставят «на всякий случай», хотя дубликатов нет.
🔴 Ошибка 5: Избыточные блокировки
Управляемые блокировки установлены слишком широко. Один пользователь блокирует данные при записи — остальные ждут.
Решение: Сузьте область блокировки до конкретного склада, организации или номенклатуры. Используйте управляемые блокировки вместо автоматических.
🔴 Ошибки 6–10: Краткий обзор
- 6. Загрузка всех данных на клиент — выборка 100 000 строк в таблицу формы. Используйте динамический список с отбором
- 7. Подписки на события без фильтрации — подписка срабатывает при каждом проведении любого документа, хотя нужна только для одного типа
- 8. Неправильное использование временных таблиц — создание временных таблиц без индексов на ключевых полях
- 9. Синхронные вызовы внешних сервисов — HTTP-запрос к API в процедуре проведения. Если сервис недоступен — 1С зависает
- 10. Отсутствие пакетных запросов — 5 отдельных запросов вместо одного пакетного. Каждый запрос — отдельное обращение к СУБД
Нужен аудит кода 1С?
Проведу ревью вашего кода и найду «узкие места». Оптимизация одного неудачного запроса может ускорить систему в 10 раз.
Заказать аудит кода →