Четыре минуты. Столько ждала главный бухгалтер торговой компании, пока сформируется ежемесячный отчёт по реализации. Четыре минуты на один отчёт. А таких отчётов за день — десяток. Когда она позвонила нам, в голосе было не раздражение, а усталость: «Я уже привыкла, но может это ненормально?».
Нет, это ненормально. Этот же отчёт должен формироваться за 10-15 секунд. И после нашей работы — стал формироваться именно столько.
Почему отчёты тормозят
Прежде чем разбираться с причинами, важно понять одну вещь: отчёт в 1С — это не просто вывод данных на экран. Когда вы нажимаете «Сформировать», 1С отправляет запрос к базе данных, та обрабатывает его, возвращает результат, а потом 1С его оформляет в таблицу. Тормозить может на любом из этих этапов.
Самые частые причины:
Слишком большой период. Оборотка за текущий месяц формируется за 5 секунд. За квартал — за 20. За год — за полторы минуты. А за три года — уже за 5-7 минут. Это нормальное поведение: чем больше данных нужно обработать, тем дольше. Но если оборотка за месяц формируется три минуты — это уже проблема.
Неоптимальный запрос. Некоторые отчёты, особенно нестандартные или доработанные, содержат запросы, которые написаны неэффективно. База данных тратит много времени на обработку таких запросов, хотя тот же результат можно получить в десять раз быстрее. Именно так было в кейсе с четырёхминутным отчётом — запрос делал избыточные соединения таблиц, которые заставляли базу перебирать миллионы строк вместо тысяч.
Раздутая база. Если база весит 40-50 ГБ и не чистилась несколько лет, даже простые запросы будут медленнее. Индексы базы данных работают хуже на больших объёмах. О том, как уменьшить объём базы, мы писали в отдельной статье.
Пользовательские настройки отчёта. Настройки отчётов в 1С — отдельная тема. Бывает, что бухгалтер развернул все группировки, добавил десяток отборов и включил вывод всех субконто. Отчёт честно пытается всё это обработать — и тормозит.
Что можно сделать самостоятельно
Прежде чем звонить специалисту, попробуйте несколько простых вещей:
Сократите период. Если вам нужны данные за март — формируйте отчёт за март, а не за «с начала года». Это самый простой и самый эффективный способ ускорить отчёт.
Уберите лишние группировки. Откройте настройки отчёта (кнопка «Настройки» или «Показать настройки»). Посмотрите, какие группировки включены. Если вам нужен итог по счёту — не нужно разворачивать каждый субсчёт с детализацией по контрагентам. Чем меньше уровней группировки, тем быстрее отчёт.
Не открывайте все уровни сразу. Многие отчёты поддерживают сворачивание. Сформируйте отчёт в свёрнутом виде, а потом разверните только нужный раздел. Это быстрее, чем формировать развёрнутый отчёт целиком.
Используйте стандартные варианты. Если вы или предыдущий бухгалтер когда-то настроили «свой» вариант отчёта и он тормозит — попробуйте сформировать стандартный вариант (кнопка «Выбрать вариант — Основной»). Если стандартный работает быстро, а ваш медленно — проблема в настройках вашего варианта.
Перезайдите в 1С. Звучит как совет из разряда «выключить-включить», но иногда помогает. 1С кэширует данные в оперативной памяти, и если вы работаете без перезапуска неделями, кэш может разрастись и замедлить работу.
Реальный кейс: с 4 минут до 15 секунд
Вернёмся к торговой компании и четырёхминутному отчёту. Это был ежемесячный отчёт по форме 12-ТОРГ — довольно стандартный документ, который формируется из данных регистра продаж.
Подключились, стали разбираться. Первым делом проверили, как именно отчёт строит запрос к базе. Выяснилось, что в запросе есть конструкция с соединением таблиц, где условие фильтрации стоит не в том месте. Технически: условие написано в блоке WHERE вместо блока ON при левом соединении. Для базы данных это радикально разные вещи.
В первом случае база сначала собирает все возможные комбинации строк из двух таблиц (а это миллионы), а потом фильтрует. Во втором — сразу отбрасывает ненужные строки при соединении. Разница в скорости — в десятки раз.
Исправили запрос, разнесли фильтрацию по правильным блокам, добавили промежуточную временную таблицу для предварительной выборки. Итог: отчёт стал формироваться за 12-15 секунд. Бухгалтер не поверила, попросила показать ещё раз. Потом ещё раз. Потом сказала: «Я два года с этим мучилась».
Такие ситуации, к сожалению, типичны. Люди привыкают к медленной работе и перестают считать это проблемой. А между тем, если посчитать: 4 минуты на отчёт, 10 отчётов в день, 20 рабочих дней — это 13 часов в месяц. Почти два рабочих дня бухгалтер просто ждёт, пока 1С думает.
Когда нужен специалист
Если простые шаги не помогли — отчёт тормозит при любых настройках, с коротким периодом, в стандартном варианте — значит, проблема глубже. Возможные причины: неоптимальные индексы базы данных, нехватка ресурсов сервера, устаревшая версия конфигурации с известными ошибками производительности.
В таких случаях нужен анализ: посмотреть план запроса, проверить нагрузку на сервер, измерить время выполнения на каждом этапе. Мы регулярно занимаемся такой диагностикой и обычно находим причину за 2-3 часа. Исправление — от получаса до нескольких дней, в зависимости от масштаба проблемы.
Не миритесь с медленными отчётами. Если 1С тормозит — это не норма, это сигнал. И чаще всего его можно устранить.


