1С зависает и тормозит: ищем узкое место от рабочего места до SQL-сервера
Содержание
Если висит 1С Предприятие, сначала выясните масштаб: тормозит у одного пользователя или у всех. У одного — почти всегда виноваты кэш клиента, антивирус или слабый компьютер. У всех сразу — блокировки, переполненный журнал регистрации, нагрузка на сервер СУБД или устаревшая статистика в SQL. От ответа на этот вопрос зависит, куда смотреть и что делать дальше.
Второй вопрос: зависает всё или одна операция. Если медленно проводится только закрытие месяца или один отчёт, ищите тяжёлый запрос. Если программа «думает» на любом клике, причина в среде: сеть, диск, ресурсы, кэш. Ниже порядок проверок от безопасных к тем, что требуют администратора.
Где именно зависает 1С: диагностика за 10 минут
Прежде чем что-то чистить, соберите факты. Вот вопросы, которые стоит задать пользователю и себе:
- 👤 Сколько людей жалуются? Один, отдел или все.
- 🕐 Когда началось? После обновления, после переезда на новый сервер, «всегда так было».
- 🔁 Что именно тормозит? Запуск, открытие списков, проведение, конкретный отчёт.
- 🗂 Какой тип базы? Файловая (папка с файлом
1Cv8.1CD) или клиент-серверная (на сервере 1С и СУБД). - ⏳ Зависание или ожидание? Висит намертво с «Не отвечает» в заголовке окна или крутится индикатор, а потом всё проходит.
Тип базы виден в списке баз при запуске: у файловой в строке подключения указан путь к каталогу, у серверной — имя сервера и базы.
Рабочее место пользователя: кэш, антивирус и ресурсы компьютера
Когда 1С зависает у одного человека, начинайте с его компьютера. Это самые безопасные действия: данные базы они не трогают.
Очистка кэша клиента 1С
Платформа хранит на компьютере кэш метаданных и настроек. После обновлений конфигурации или сбоев он портится, и программа начинает тормозить на открытии форм.
- Закройте все окна 1С у пользователя.
- Запустите базу с параметром
/ClearCache. Его можно дописать в поле «Дополнительные параметры запуска» в настройках базы в окне запуска (кнопкаИзменить→ последний шаг мастера). - Если не помогло, удалите кэш вручную. Откройте папки
%APPDATA%\1C\1cv8и%LOCALAPPDATA%\1C\1cv8. - Удалите в них каталоги с длинными именами вида GUID. Файлы
ibases.v8iи другие файлы в корне не трогайте: там список баз.
Кэш одного пользователя не влияет на других. Можно чистить днём, пользователь просто дольше будет открывать базу первый раз.
Антивирус и диск
Антивирус проверяет каждое обращение к файлам базы, кэша и временных файлов. Для файловой базы это бывает главной причиной тормозов.
- 🛡 Добавьте в исключения антивируса каталог с файловой базой, каталоги кэша 1С и папку программы 1С (обычно
C:\Program Files\1cv8). - 💽 Посмотрите, на каком диске лежит файловая база. Обычный жёсткий диск с другими задачами даёт задержки, SSD заметно быстрее.
- 🌐 Файловая база по Wi-Fi или через VPN работает медленно и рискует повредиться. Для удалённой работы нужен терминальный доступ, веб-клиент или серверный вариант.
Ресурсы компьютера
Откройте «Диспетчер задач» и найдите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор).
| Что видите | Вероятная причина | Что делать |
|---|---|---|
| Память заполнена на 90–100% | Мало ОЗУ, открыто много окон и браузер | Закрыть лишнее, добавить память |
| Процесс 1С грузит процессор долго | Тяжёлая форма или расчёт на клиенте | Проверить на другом компьютере, искать проблему в базе |
| Диск загружен на 100% | Антивирус, обновление Windows, слабый HDD | Исключения, перенос на SSD |
| Ресурсы свободны, а 1С висит | Ожидание сервера или блокировки | Переходить к проверке сервера |
Если на соседнем компьютере та же операция идёт быстро, проблема точно локальная.
Журнал регистрации и временные файлы: что разрастается и тормозит
Журнал регистрации пишет каждое действие пользователей. За несколько лет он вырастает до десятков гигабайт, и тогда его открытие, а иногда и обычная работа замедляются.
Где лежит и как проверить размер
- 📁 У файловой базы журнал находится в подкаталоге
1Cv8Logвнутри каталога базы. - 🖥 У серверной базы — на сервере 1С, в каталоге кластера
srvinfo, в папке с идентификатором базы и подкаталоге1Cv8Log.
Журнал бывает в двух форматах. Старый — набор файлов .lgf и .lgp. Новый — один файл 1Cv8.lgd (база SQLite). Один большой файл .lgd работает медленнее при поиске, чем разбитый по периодам старый формат.
Как сократить журнал регистрации
- Откройте базу в Конфигураторе.
- Выберите
Администрирование → Настройка журнала регистрации. - Задайте уровень регистрации. Для обычной работы хватает «Регистрировать ошибки, предупреждения и информацию». Уровень «Регистрировать все события» оставляйте только на время поиска проблемы.
- Там же есть команда сокращения журнала: укажите дату, до которой удалить события. Платформа предложит сохранить удаляемую часть в файл — сохраните, если журнал нужен для проверок или расследований.
Удалённые события восстановить нельзя. Перед сокращением договоритесь с ответственным за безопасность: журнал иногда нужен для разбора, кто и когда менял документы.
Временные файлы и таблицы
- 🗑 Временные файлы клиента лежат в
%TEMP%. Платформа создаёт там файлы с именами видаv8_*.tmp. После аварийных завершений они остаются. Удаляйте их при закрытой 1С. - 🗄 У серверной базы временные таблицы запросов живут в СУБД. В MS SQL это база
tempdb. Если она лежит на медленном диске или постоянно растёт, тормозят все тяжёлые запросы. - 🧹 Для файловой базы раз в квартал полезно проводить «Тестирование и исправление» в Конфигураторе (
Администрирование → Тестирование и исправление) с флажками «Реиндексация таблиц информационной базы» и «Сжатие таблиц информационной базы». Режим требует монопольного доступа, поэтому все должны выйти из базы.
Перед тестированием и исправлением сделайте копию каталога базы или выгрузку в .dt. Если процесс прервётся, вы вернётесь к рабочей версии.
Блокировки и монопольный режим: когда 1С зависает из-за коллег
Если ресурсы свободны, а документ не проводится, программа ждёт. Другой сеанс держит блокировку на тех же данных, например на остатках того же склада.
Как распознать
- ⏱ Проведение висит около 20 секунд, затем появляется ошибка с текстом про превышение времени ожидания захвата блокировки. 20 секунд — стандартный таймаут ожидания управляемой блокировки.
- 🔒 Ошибка про взаимоблокировку (deadlock) значит, что два сеанса ждали друг друга, и СУБД сняла один из запросов.
- 🧍 Чаще всего проблема возникает, когда один пользователь запускает долгую операцию: закрытие месяца, перепроведение за квартал, групповую обработку, — а остальные в это время проводят документы.
Что делать
- Найдите, кто сейчас работает в базе. В клиент-серверном варианте это видно в консоли администрирования серверов 1С в списке сеансов базы. В конфигурациях на БСП есть список активных пользователей в разделе
Администрирование. - Выясните у пользователя долгой операции, сколько ей осталось. Обрывать её посреди проведения — плохая идея.
- Тяжёлые операции переносите на вечер. Перепроведение и закрытие месяца лучше запускать, когда в базе никого нет.
- Проверьте режим блокировок конфигурации. В свойствах корня конфигурации в Конфигураторе есть «Режим управления блокировкой данных». Современные типовые работают в управляемом режиме, он даёт меньше конфликтов. Если ваша доработанная база осталась в автоматическом режиме, это повод для работы программиста.
Завершение чужого сеанса через консоль или список пользователей обрывает его работу без сохранения. Предупредите человека и делайте это только когда операция действительно зависла.
Монопольный режим
Монопольный доступ нужен для обновления структуры базы, загрузки .dt, тестирования и исправления. Для обновления конфигурации в типовых на БСП есть блокировка начала новых сеансов в разделе Администрирование → Обслуживание. Если эту блокировку забыли снять, пользователи не могут войти — со стороны это выглядит как «1С висит при запуске». Проверьте её первым делом после ночного обновления.
Сервер СУБД: индексы, статистика и тяжёлые запросы
В клиент-серверной базе большая часть времени уходит на запросы к MS SQL или PostgreSQL. Если 1С тормозит у всех, а сервер 1С не перегружен, смотрите на СУБД.
Регламентное обслуживание MS SQL
Типичная причина «вчера было быстро, а сегодня тормозит» — устаревшая статистика. СУБД выбирает план запроса по ней, и на старых данных выбирает плохо.
| Операция | Как часто | Зачем |
|---|---|---|
| Обновление статистики | Ежедневно ночью | Правильные планы запросов |
| Перестроение или реорганизация индексов | Раз в неделю | Убрать фрагментацию |
| Очистка процедурного кэша после обновления статистики | Вместе со статистикой | Чтобы СУБД пересчитала планы |
| Резервное копирование и контроль размера журнала транзакций | Ежедневно | Чтобы журнал не съел диск |
Эти задачи настраивают в SQL Server Management Studio через планы обслуживания. Обновить статистику вручную можно так:
USE [имя_базы];
EXEC sp_updatestats;
DBCC FREEPROCCACHE;
DBCC FREEPROCCACHE очищает кэш планов всего сервера. Первые минуты после него запросы выполняются чуть медленнее. Запускайте вне рабочего времени.
Для PostgreSQL аналог — VACUUM ANALYZE. Автоочистка (autovacuum) обычно включена, но на больших таблицах регистров она не успевает, и ручной запуск ночью помогает.
Модель восстановления и журнал транзакций
Если у базы модель восстановления «Полная», а резервные копии журнала транзакций не делаются, файл .ldf растёт до размера диска. Когда место кончается, база встаёт полностью. Либо настройте копирование журнала, либо переведите базу в простую модель, если восстановление на момент времени вам не нужно.
Тяжёлые запросы и RLS
- 🐢 Запросы с соединением с виртуальными таблицами без условий в параметрах читают все движения регистра. Это типичная ошибка доработок.
- 👥 Ограничение доступа на уровне записей (RLS) добавляет условия к каждому запросу пользователя с ограничениями. Если тормозит только у бухгалтеров с ограниченными правами, а у администратора быстро, причина часто здесь.
- 🔧 В типовых на БСП есть настройка производительности ограничения доступа. Новые релизы используют более быстрый вариант. Сравните скорость отчёта под пользователем с ограничениями и без них — это быстрая проверка.
Переписывать запросы и менять схему прав — работа программиста. Ваша задача — найти конкретный запрос и показать, где он тормозит.
Технологический журнал: как найти, что именно тормозит
Технологический журнал — это лог платформы, который пишет события сервера и клиента: исключения, блокировки, запросы к СУБД. Он показывает не «программа медленная», а «вот этот запрос из этого модуля шёл 40 секунд».
Как включить
Технологический журнал настраивают файлом logcfg.xml. Его кладут в каталог conf установленной платформы, например C:\Program Files\1cv8\conf\, на той машине, где идёт процесс: на сервере 1С для серверной базы, на компьютере пользователя для файловой. Платформа подхватывает файл без перезапуска.
Пример конфигурации для поиска проблем с блокировками и ошибок:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="TTIMEOUT"/>
</event>
<event>
<eq property="name" value="TDEADLOCK"/>
</event>
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Здесь TTIMEOUT — превышение времени ожидания блокировки, TDEADLOCK — взаимоблокировка, EXCP — исключения. Параметр history="24" хранит логи 24 часа.
Чем опасен и как читать
- ⚠️ Журнал с событиями запросов (
DBMSSQL,SDBL) без фильтра по длительности за час занимает гигабайты. Включайте его на короткое время, на отдельный диск, и ставьте фильтр. - 📂 Логи пишутся в подкаталоги по процессам, внутри — файлы по часам. Каждая строка начинается со времени и длительности события, дальше имя события и свойства.
- 🔍 Для разбора ищите самые долгие события и смотрите свойство
Context— там модуль и строка кода, откуда пришёл запрос.
Не оставляйте технологический журнал включённым навсегда. Закончили разбор — удалите logcfg.xml или переименуйте его.
Если журнал не нужен: замер производительности
Для одного медленного отчёта проще замер. В Конфигураторе запустите отладку, включите Отладка → Замер производительности, выполните медленное действие и остановите замер. Платформа покажет, на каких строках кода ушло больше всего времени.
Обновление платформы и конфигурации как способ ускорить 1С
Иногда 1С зависает из-за известной ошибки, которую уже исправили. Особенно если базу давно не обновляли.
Когда обновлять платформу
- 📌 Для каждого релиза конфигурации указана минимальная и рекомендуемая версия платформы. Номер установленной платформы должен быть не ниже рекомендуемого.
- 🧪 Новую платформу сначала проверяйте на копии базы. Бывают версии с регрессиями производительности, и тогда остаётся откатиться.
- 🖥 На сервере версия платформы сервера 1С и клиентов должна совпадать. Разные версии клиентов и сервера не подключатся.
Когда обновлять конфигурацию
- 🔄 Если база отстала от актуального релиза на год и больше, часть проблем со скоростью уже исправлена разработчиком. В описаниях изменений релизов типовых конфигураций прямо пишут про ускорение проведения и отчётов.
- 🧩 В сильно доработанной базе сначала посмотрите, не тормозят ли сами доработки. Технологический журнал из предыдущего раздела покажет, в общем модуле типовой или в самописной обработке теряется время.
- 📈 Файловая база рассчитана на небольшую нагрузку. Когда пользователей больше 5–10, а размер базы растёт, никакое обновление не заменит переход на клиент-серверный вариант.