Почему 1С тормозит и что с этим делать: железо, файловая база, SQL, запросы и обслуживание
Содержание
Чтобы ускорить 1С, сначала найдите узкое место, а потом лечите именно его. Чаще всего базу данных тормозят медленный диск, сетевой доступ к файловой базе, раздутый кэш клиента и СУБД без регулярного обслуживания. Перевод базы на SSD, очистка кэша и обновление статистики на SQL-сервере дают заметный прирост за один вечер и ничего не стоят, кроме времени.
Дальше — способы оптимизации от простых настроек рабочего места до глубокой работы с запросами и конфигурацией. Каждый блок помечен, кому он по силам: бухгалтеру, администратору или программисту.
Где тормозит 1С: найти узкое место и проверить железо
Не меняйте всё подряд. Сначала ответьте на три вопроса:
- 🖥️ Тормозит у всех пользователей или у одного? Если у одного — смотрите его компьютер и кэш.
- 📄 Тормозит вся программа или одна операция (проведение, отчёт, открытие списка)? Одна операция — почти всегда запрос или доработка.
- ⏰ Тормозит всегда или в определённое время? Пик в 10 утра или в конце месяца — это нагрузка и блокировки, а не железо.
Во время тормозов откройте Диспетчер задач на компьютере, где лежит база или работает сервер. Посмотрите вкладку «Производительность»:
| Что видите | Вероятная причина | Что делать |
|---|---|---|
| Диск загружен на 100%, процессор низкий | Медленный HDD | Перенести базу на SSD |
Процессор 100% у процесса rphost или 1cv8 | Тяжёлый запрос или фоновое задание | Искать операцию замером |
| Память занята почти целиком | Не хватает ОЗУ, СУБД забрала всю память | Ограничить память СУБД, добавить ОЗУ |
| Сеть загружена, у удалённых пользователей хуже | Файловая база по сети | Терминал, веб-публикация или клиент-сервер |
Что даёт апгрейд оборудования
1С 8.3 сильно зависит от частоты одного ядра процессора: большая часть кода выполняется в одном потоке. Процессор с высокой частотой полезнее, чем процессор с большим числом медленных ядер.
Приоритет вложений:
- 💾 SSD вместо HDD. Самый ощутимый эффект и для файловой базы, и для сервера СУБД. NVMe лучше SATA SSD.
- 🧠 Оперативная память. Для рабочего места — от 8 ГБ, для сервера СУБД — столько, чтобы база помещалась в память целиком или почти целиком.
- ⚙️ Частота процессора. Для сервера 1С частота важнее количества ядер.
- 🌐 Сеть. Между сервером 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
- Ограничьте память. В свойствах сервера задайте
Maximum server memory. Оставьте операционной системе и серверу 1С (если он на той же машине) хотя бы 4–8 ГБ. Без ограничения SQL Server забирает всю память, и сервер 1С начинает работать с файлом подкачки. - Модель восстановления. Если не нужен откат на любой момент времени, переведите базу в модель
Simple. В моделиFullбез резервного копирования журнала транзакций файл.ldfрастёт до размеров диска. - Статистика и индексы. Это главный приём. Устаревшая статистика заставляет 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 включают оптимизацию работы с СУБД, памятью и клиентом. Работа на платформе, которой несколько лет, — частая причина тормозов, которую никто не связывает с версией.
Порядок действий:
- Узнайте версию: в пользовательском режиме
Справка → О программе. - Сверьте её с минимальной версией, которую требует текущий релиз вашей конфигурации. Требование указано в описании релиза.
- Обновите платформу на сервере и на всех клиентах до одной версии. В клиент-серверном варианте номер версии клиента и сервера должен совпадать.
- Обновите конфигурацию до актуального релиза. В типовых конфигурациях регулярно ускоряют проведение и отчёты.
Режим совместимости в свойствах типовой конфигурации не меняйте вручную. Его выставляет разработчик конфигурации при выпуске релиза.
Не ставьте самую свежую платформу в день выхода на рабочую базу. Сначала проверьте её на копии: в новых версиях бывают ошибки, которые исправляют следующим выпуском.
Терминальный доступ, 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С: количество сеансов, память рабочих процессов.
- 📝 Технологический журнал с записью запросов дольше заданного порога.
Запишите «нормальные» значения, пока база работает быстро. Когда начнутся жалобы, будет с чем сравнить.