Почему 1С тормозит и что с этим делать: железо, файловая база, SQL, запросы и обслуживание

· 11 мин

Содержание

Чтобы ускорить 1С, сначала найдите узкое место, а потом лечите именно его. Чаще всего базу данных тормозят медленный диск, сетевой доступ к файловой базе, раздутый кэш клиента и СУБД без регулярного обслуживания. Перевод базы на SSD, очистка кэша и обновление статистики на SQL-сервере дают заметный прирост за один вечер и ничего не стоят, кроме времени.

Дальше — способы оптимизации от простых настроек рабочего места до глубокой работы с запросами и конфигурацией. Каждый блок помечен, кому он по силам: бухгалтеру, администратору или программисту.

Где тормозит 1С: найти узкое место и проверить железо

Не меняйте всё подряд. Сначала ответьте на три вопроса:

  • 🖥️ Тормозит у всех пользователей или у одного? Если у одного — смотрите его компьютер и кэш.
  • 📄 Тормозит вся программа или одна операция (проведение, отчёт, открытие списка)? Одна операция — почти всегда запрос или доработка.
  • ⏰ Тормозит всегда или в определённое время? Пик в 10 утра или в конце месяца — это нагрузка и блокировки, а не железо.

Во время тормозов откройте Диспетчер задач на компьютере, где лежит база или работает сервер. Посмотрите вкладку «Производительность»:

Что видитеВероятная причинаЧто делать
Диск загружен на 100%, процессор низкийМедленный HDDПеренести базу на SSD
Процессор 100% у процесса rphost или 1cv8Тяжёлый запрос или фоновое заданиеИскать операцию замером
Память занята почти целикомНе хватает ОЗУ, СУБД забрала всю памятьОграничить память СУБД, добавить ОЗУ
Сеть загружена, у удалённых пользователей хужеФайловая база по сетиТерминал, веб-публикация или клиент-сервер

Что даёт апгрейд оборудования

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

Приоритет вложений:

  1. 💾 SSD вместо HDD. Самый ощутимый эффект и для файловой базы, и для сервера СУБД. NVMe лучше SATA SSD.
  2. 🧠 Оперативная память. Для рабочего места — от 8 ГБ, для сервера СУБД — столько, чтобы база помещалась в память целиком или почти целиком.
  3. ⚙️ Частота процессора. Для сервера 1С частота важнее количества ядер.
  4. 🌐 Сеть. Между сервером 1С и сервером СУБД — гигабит и минимальная задержка, лучше на одной машине или в одной стойке. Wi-Fi для файловой базы — плохая идея.

На сервере и рабочих станциях включите схему электропитания «Высокая производительность». В режиме «Сбалансированный» процессор сбрасывает частоту, и 1С это заметно.

Добавьте папку с базой, каталог кэша и каталоги сервера 1С в исключения антивируса. Проверка каждого обращения к файлу базы сильно замедляет работу. Согласуйте это со службой безопасности: исключения ослабляют защиту.

Диагностика: выберите симптом

Как ускорить файловую базу 1С

Файловая база — это один файл 1Cv8.1CD в каталоге. Её скорость упирается в диск и сеть. Пока пользователей двое-трое и база лежит на локальном SSD, она работает быстро. При 5–10 одновременных пользователях и доступе по сети начинаются задержки и ожидания.

Очистка кэша клиента

Кэш хранится в профиле пользователя, в папках с длинными именами вида GUID:

  • %APPDATA%\1C\1cv8\
  • %LOCALAPPDATA%\1C\1cv8\

Самый простой способ — один раз запустить базу с параметром /ClearCache. В окне запуска выделите базу, нажмите «Изменить», дойдите до последней страницы и впишите параметр в поле дополнительных параметров запуска. После запуска параметр удалите.

Для администратора — скрипт PowerShell, который удаляет только папки кэша и не трогает настройки и список баз:

# Перед запуском закройте все сеансы 1С на этом компьютере
$paths = "$env:APPDATA\1C\1cv8", "$env:LOCALAPPDATA\1C\1cv8"
Get-ChildItem $paths -Directory -ErrorAction SilentlyContinue |
  Where-Object { $_.Name -match '^[0-9a-f]{8}-[0-9a-f]{4}-' } |
  Remove-Item -Recurse -Force

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

Сжатие и проверка базы

Со временем в файле копятся пустые страницы, и он растёт. Помогает «Тестирование и исправление» в Конфигураторе: Администрирование → Тестирование и исправление. Отметьте «Реиндексация таблиц информационной базы» и «Сжатие таблиц информационной базы», режим — «Тестирование и исправление».

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

Если база не открывается или падает при тестировании, сначала проверьте физическую целостность утилитой chdbfl.exe. Она лежит в каталоге bin установленной платформы.

Сеть и доступ к файлу

  • 📁 Размещайте базу на компьютере с SSD, к которому подключено меньше всего «лишней» нагрузки. NAS начального уровня часто медленнее обычного ПК.
  • 🔌 Подключайте рабочие места кабелем.
  • 🌍 Опубликуйте файловую базу на веб-сервере (Apache или IIS на той же машине). Тогда клиенты работают через тонкий клиент по HTTP, а с файлом общается один процесс на сервере. Для удалённых пользователей это часто быстрее, чем открытие базы через общую папку.

Когда пора переходить на клиент-сервер

Признаки, что файловый вариант исчерпан:

  • одновременно работают больше 10–15 человек;
  • база выросла до десятков гигабайт;
  • пользователи регулярно ждут друг друга при проведении;
  • нужны регламентные задания по расписанию без открытого сеанса.

Переход делают выгрузкой в .dt и загрузкой в новую базу на сервере. Нужны лицензия на сервер 1С и СУБД. PostgreSQL бесплатна, MS SQL Server платный (кроме редакции Express с ограничениями по размеру базы и памяти).

Клиент-серверная база: настройка сервера 1С и SQL

В клиент-серверном варианте скорость определяет связка «сервер 1С — СУБД». Типичные проблемы здесь не в 1С, а в том, что СУБД поставили «по умолчанию» и не обслуживают.

MS SQL Server

  1. Ограничьте память. В свойствах сервера задайте Maximum server memory. Оставьте операционной системе и серверу 1С (если он на той же машине) хотя бы 4–8 ГБ. Без ограничения SQL Server забирает всю память, и сервер 1С начинает работать с файлом подкачки.
  2. Модель восстановления. Если не нужен откат на любой момент времени, переведите базу в модель Simple. В модели Full без резервного копирования журнала транзакций файл .ldf растёт до размеров диска.
  3. Статистика и индексы. Это главный приём. Устаревшая статистика заставляет SQL Server выбирать плохие планы запросов, и отчёт, который вчера строился 5 секунд, сегодня строится 3 минуты.

Минимальный ежедневный сценарий в плане обслуживания:

USE [имя_базы];
EXEC sp_updatestats;
DBCC FREEPROCCACHE;

DBCC FREEPROCCACHE сбрасывает кэш планов, чтобы запросы перестроились по свежей статистике. Раз в неделю добавьте реорганизацию или перестроение индексов — через мастер планов обслуживания в SQL Server Management Studio.

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

PostgreSQL

  • Используйте сборку PostgreSQL с патчами для 1С, а не «чистую» версию из репозитория дистрибутива.
  • Увеличьте shared_buffers (ориентир — около четверти ОЗУ) и effective_cache_size (около половины и больше). Значения по умолчанию рассчитаны на минимальное железо.
  • Следите, чтобы работал autovacuum, а после крупной загрузки данных выполните VACUUM ANALYZE.

Сервер 1С

  • 🐞 Убедитесь, что служба агента запущена без ключа -debug. Режим отладки на рабочем сервере замедляет выполнение кода.
  • 🔄 В свойствах рабочего сервера и кластера есть настройки перезапуска рабочих процессов и допустимого объёма памяти. Плавный перезапуск раз в сутки помогает, если процессы rphost со временем «распухают».
  • 📋 Проверьте список сеансов в консоли кластера: зависшие сеансы и фоновые задания, которые крутятся часами, тянут ресурсы.

Принудительное завершение рабочего процесса или остановка службы 1С обрывает сеансы пользователей без сохранения. Делайте это после предупреждения или вне рабочего времени.

Оптимизация запросов и доработок конфигурации

Если тормозит одна операция, железо почти никогда ни при чём. Причина — запрос или код в модуле.

Как найти медленное место

В Конфигураторе запустите отладку, затем включите Отладка → Замер производительности. Выполните медленную операцию в пользовательском режиме и остановите замер. Платформа покажет строки кода, отсортированные по времени выполнения. Обычно 1–3 строки занимают 80–90% времени.

Для сервера есть технологический журнал: файл logcfg.xml в каталоге conf платформы. В нём включают запись долгих запросов и блокировок. Журнал быстро растёт, поэтому включайте его на время диагностики и с фильтром по длительности.

Типичные причины медленного кода

  • 🔁 Запрос в цикле. Для каждой строки документа отдельно выбираются цены или остатки. Правильно — один пакетный запрос с временной таблицей.
  • 🔗 Обращение «через точку». Документ.Контрагент.ГоловнойКонтрагент.ИНН в цикле — это скрытый запрос на каждое обращение.
  • 🗂️ Виртуальные таблицы без параметров. Отбор по Остатки или Обороты в секции ГДЕ вместо параметров виртуальной таблицы заставляет СУБД считать остатки по всем данным.
  • 🔒 Автоматический режим блокировок в доработанных конфигурациях. Типовые конфигурации давно работают в управляемом режиме; если у вас старая самописная — это повод к переработке.

Пример замены запроса в цикле на один запрос:

// Медленно: запрос на каждую строку
// Быстро: один запрос по всем номенклатурам сразу
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	Цены.Номенклатура,
|	Цены.Цена
|ИЗ
|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура В (&Список)) КАК Цены";
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Список", Товары.ВыгрузитьКолонку("Номенклатура"));
Выборка = Запрос.Выполнить().Выбрать();

Доработки типовых конфигураций держите в расширениях. Так проще найти, чья доработка тормозит: отключите расширение и повторите замер.

Кэш, фоновые и регламентные задания

Регламентные задания выполняются по расписанию и могут нагружать базу в рабочее время. В Бухгалтерии 3.0 список открывается через Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.

Что проверить:

  • 🔍 Обновление индекса полнотекстового поиска . На большой базе тяжёлое. Если поиском почти не пользуются, его можно отключить в общих настройках программы. Если нужен — перенесите обновление на ночь.
  • 📥 Загрузка классификаторов и курсов, обмены. Частота «каждые 5 минут» редко нужна. Раз в час или раз в сутки — обычно достаточно.
  • 🧹 Задания, которые падают с ошибкой. Упавшее задание перезапускается снова и снова и грузит сервер впустую. Откройте журнал регистрации с отбором по ошибкам и устраните причину.

В файловой базе регламентные задания выполняет сеанс пользователя, если он открыт. В клиент-серверной — сервер 1С. Проверьте в консоли кластера, что у базы не стоит флажок блокировки регламентных заданий, если они нужны, и наоборот.

Журнал регистрации

Журнал регистрации пишет каждое действие пользователей. На большой базе за несколько лет он разрастается до десятков гигабайт и замедляет работу с ним. В Конфигураторе: Администрирование → Настройка журнала регистрации. Там можно уменьшить уровень детализации и сократить журнал, удалив старые записи (с выгрузкой в файл, если записи нужны для разбора).

Обновление платформы и конфигурации

Новые версии платформы 8.3 включают оптимизацию работы с СУБД, памятью и клиентом. Работа на платформе, которой несколько лет, — частая причина тормозов, которую никто не связывает с версией.

Порядок действий:

  1. Узнайте версию: в пользовательском режиме Справка → О программе.
  2. Сверьте её с минимальной версией, которую требует текущий релиз вашей конфигурации. Требование указано в описании релиза.
  3. Обновите платформу на сервере и на всех клиентах до одной версии. В клиент-серверном варианте номер версии клиента и сервера должен совпадать.
  4. Обновите конфигурацию до актуального релиза. В типовых конфигурациях регулярно ускоряют проведение и отчёты.

Режим совместимости в свойствах типовой конфигурации не меняйте вручную. Его выставляет разработчик конфигурации при выпуске релиза.

Не ставьте самую свежую платформу в день выхода на рабочую базу. Сначала проверьте её на копии: в новых версиях бывают ошибки, которые исправляют следующим выпуском.

Терминальный доступ, RDP и облако

Если пользователи работают удалённо или из филиалов, никакая оптимизация файловой базы через VPN не поможет: канал слишком узкий. Решения:

СпособКогда подходитМинусы
Терминальный сервер (RDP, RemoteApp)Филиалы, удалёнка, слабые компьютеры у пользователейЛицензии Windows RDS, мощный сервер
Веб-публикация + тонкий клиентУдалённые пользователи без терминалаНужна настройка веб-сервера и защиты
Облачная 1С (аренда)Нет своего админа и сервераОграничения на доработки, ежемесячная плата

Через RDP по сети передаётся только картинка экрана, а база работает рядом с сервером на быстром диске. Для RemoteApp публикуют 1cv8.exe или 1cestart.exe, и у пользователя 1С открывается как обычное окно.

Ориентир по аренде облачной 1С — примерно от 1 000 до 2 500 ₽ в месяц за пользователя, в зависимости от конфигурации и провайдера.

Регулярное обслуживание и мониторинг базы

Ускорение 1С, сделанное один раз, через полгода сходит на нет, если базу не обслуживать. Минимальный регламент:

ДействиеКак частоВариант базы
Обновление статистики СУБДЕжедневно ночьюКлиент-сервер
Реорганизация или перестроение индексовРаз в неделюКлиент-сервер
Резервное копированиеЕжедневноОба
Тестирование и исправление, сжатиеРаз в 1–3 месяцаФайловая
Очистка кэша клиентовПри симптомах или после обновленияОба
Сокращение журнала регистрацииРаз в полгода–годОба
Проверка регламентных заданий на ошибкиРаз в месяцОба

Для мониторинга достаточно встроенных средств:

  • 📈 Счётчики производительности Windows (perfmon): загрузка диска, очередь диска, свободная память.
  • 🖧 Консоль кластера 1С: количество сеансов, память рабочих процессов.
  • 📝 Технологический журнал с записью запросов дольше заданного порога.

Запишите «нормальные» значения, пока база работает быстро. Когда начнутся жалобы, будет с чем сравнить.

Ночной регламент для клиент-серверной базы
Выполнено: 0 / 5

Частые вопросы

Поможет ли переход с толстого клиента на тонкий?
Да, особенно для удалённых пользователей. Тонкий клиент передаёт меньше данных и выполняет большую часть кода на сервере. Типовые конфигурации на управляемых формах рассчитаны именно на него.
Сколько оперативной памяти нужно серверу для 1С?
Ориентир для сервера СУБД — объём, сопоставимый с размером базы, плюс запас для системы. Для сервера 1С на 20–30 пользователей обычно хватает 16–32 ГБ, но точнее покажет мониторинг памяти процессов rphost.
Почему после обновления конфигурации 1С стала работать медленнее?
Чаще всего после обновления выполняются отложенные обработчики: они пересчитывают данные в фоне несколько часов или дней. Проверьте их состояние и дождитесь завершения. Если тормоза остаются — обновите статистику СУБД.
Ускорит ли работу удаление старых документов?
Само по себе — редко. Объём данных мешает меньше, чем плохие запросы и устаревшая статистика. Свёртка базы оправдана, когда она занимает сотни гигабайт и нужно сократить время резервного копирования.
Можно ли ускорить 1С на Mac или Linux?
Принципы те же: SSD, достаточная память, тонкий клиент, работа с сервером через веб-публикацию или терминал. Файловую базу по сети с macOS лучше не открывать — задержки там заметнее.