1С зависает и тормозит: ищем узкое место от рабочего места до SQL-сервера

· 11 мин

Содержание

Если висит 1С Предприятие, сначала выясните масштаб: тормозит у одного пользователя или у всех. У одного — почти всегда виноваты кэш клиента, антивирус или слабый компьютер. У всех сразу — блокировки, переполненный журнал регистрации, нагрузка на сервер СУБД или устаревшая статистика в SQL. От ответа на этот вопрос зависит, куда смотреть и что делать дальше.

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

Где именно зависает 1С: диагностика за 10 минут

Прежде чем что-то чистить, соберите факты. Вот вопросы, которые стоит задать пользователю и себе:

  • 👤 Сколько людей жалуются? Один, отдел или все.
  • 🕐 Когда началось? После обновления, после переезда на новый сервер, «всегда так было».
  • 🔁 Что именно тормозит? Запуск, открытие списков, проведение, конкретный отчёт.
  • 🗂 Какой тип базы? Файловая (папка с файлом 1Cv8.1CD) или клиент-серверная (на сервере 1С и СУБД).
  • ⏳ Зависание или ожидание? Висит намертво с «Не отвечает» в заголовке окна или крутится индикатор, а потом всё проходит.

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

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

Рабочее место пользователя: кэш, антивирус и ресурсы компьютера

Когда 1С зависает у одного человека, начинайте с его компьютера. Это самые безопасные действия: данные базы они не трогают.

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

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

  1. Закройте все окна 1С у пользователя.
  2. Запустите базу с параметром /ClearCache. Его можно дописать в поле «Дополнительные параметры запуска» в настройках базы в окне запуска (кнопка Изменить → последний шаг мастера).
  3. Если не помогло, удалите кэш вручную. Откройте папки %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8.
  4. Удалите в них каталоги с длинными именами вида 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 работает медленнее при поиске, чем разбитый по периодам старый формат.

Как сократить журнал регистрации

  1. Откройте базу в Конфигураторе.
  2. Выберите Администрирование → Настройка журнала регистрации.
  3. Задайте уровень регистрации. Для обычной работы хватает «Регистрировать ошибки, предупреждения и информацию». Уровень «Регистрировать все события» оставляйте только на время поиска проблемы.
  4. Там же есть команда сокращения журнала: укажите дату, до которой удалить события. Платформа предложит сохранить удаляемую часть в файл — сохраните, если журнал нужен для проверок или расследований.

Удалённые события восстановить нельзя. Перед сокращением договоритесь с ответственным за безопасность: журнал иногда нужен для разбора, кто и когда менял документы.

Временные файлы и таблицы

  • 🗑 Временные файлы клиента лежат в %TEMP%. Платформа создаёт там файлы с именами вида v8_*.tmp. После аварийных завершений они остаются. Удаляйте их при закрытой 1С.
  • 🗄 У серверной базы временные таблицы запросов живут в СУБД. В MS SQL это база tempdb. Если она лежит на медленном диске или постоянно растёт, тормозят все тяжёлые запросы.
  • 🧹 Для файловой базы раз в квартал полезно проводить «Тестирование и исправление» в Конфигураторе (Администрирование → Тестирование и исправление) с флажками «Реиндексация таблиц информационной базы» и «Сжатие таблиц информационной базы». Режим требует монопольного доступа, поэтому все должны выйти из базы.

Перед тестированием и исправлением сделайте копию каталога базы или выгрузку в .dt. Если процесс прервётся, вы вернётесь к рабочей версии.

Блокировки и монопольный режим: когда 1С зависает из-за коллег

Если ресурсы свободны, а документ не проводится, программа ждёт. Другой сеанс держит блокировку на тех же данных, например на остатках того же склада.

Как распознать

  • ⏱ Проведение висит около 20 секунд, затем появляется ошибка с текстом про превышение времени ожидания захвата блокировки. 20 секунд — стандартный таймаут ожидания управляемой блокировки.
  • 🔒 Ошибка про взаимоблокировку (deadlock) значит, что два сеанса ждали друг друга, и СУБД сняла один из запросов.
  • 🧍 Чаще всего проблема возникает, когда один пользователь запускает долгую операцию: закрытие месяца, перепроведение за квартал, групповую обработку, — а остальные в это время проводят документы.

Что делать

  1. Найдите, кто сейчас работает в базе. В клиент-серверном варианте это видно в консоли администрирования серверов 1С в списке сеансов базы. В конфигурациях на БСП есть список активных пользователей в разделе Администрирование.
  2. Выясните у пользователя долгой операции, сколько ей осталось. Обрывать её посреди проведения — плохая идея.
  3. Тяжёлые операции переносите на вечер. Перепроведение и закрытие месяца лучше запускать, когда в базе никого нет.
  4. Проверьте режим блокировок конфигурации. В свойствах корня конфигурации в Конфигураторе есть «Режим управления блокировкой данных». Современные типовые работают в управляемом режиме, он даёт меньше конфликтов. Если ваша доработанная база осталась в автоматическом режиме, это повод для работы программиста.

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

Монопольный режим

Монопольный доступ нужен для обновления структуры базы, загрузки .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, а размер базы растёт, никакое обновление не заменит переход на клиент-серверный вариант.

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

Почему 1С висит только при запуске, а потом работает нормально?
При первом запуске после обновления конфигурации платформа заново загружает кэш метаданных. Это занимает до нескольких минут. Если медленный старт повторяется каждый раз, проверьте антивирус и сетевой путь к базе.
Нужно ли перезагружать сервер 1С, если всё зависло?
Только в крайнем случае. Перезапуск службы сервера 1С обрывает сеансы всех пользователей без сохранения. Сначала найдите в консоли администрирования сеанс, который грузит рабочий процесс.
Поможет ли добавить памяти серверу?
Поможет, если сервер СУБД или рабочие процессы 1С упираются в память и активно используют файл подкачки. Если упор в блокировки или плохой запрос, память ничего не изменит.
Почему отчёт быстро формируется у администратора и медленно у бухгалтера?
Почти всегда это ограничение доступа на уровне записей. У администратора ограничений нет, и запрос проще.
Сколько ждать, прежде чем считать 1С зависшей?
Если в заголовке окна «Не отвечает» дольше 10–15 минут и процесс не грузит процессор и диск, операция, скорее всего, ждёт блокировку или сеть. Перед снятием процесса убедитесь, что не идёт проведение или обновление базы.