Как сократить журнал регистрации в 1С 8.3, если Конфигуратор зависает

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Многие системные администраторы и разработчики сталкиваются с ситуацией, когда стандартная процедура сокращения журнала регистрации в 1С:Предприятие 8.3 приводит к «зависанию» Конфигуратора. Особенно это актуально для баз данных, где журнал регистрации ведется в «новом» формате SQLite (файл с расширением .lgd). В этой статье мы подробно разберем, почему так происходит, как дождаться завершения процесса и что нужно сделать, чтобы файл лога действительно уменьшился в размере.

Разберем причину «зависания» Конфигуратора

Когда мы нажимаем кнопку «Сократить» в интерактивном режиме, платформа 1С начинает последовательно перебирать записи в базе данных SQLite и удалять те из них, которые предшествуют указанной дате. Если журнал имеет внушительный размер (например, более 5–10 Гб), количество транзакций на удаление исчисляется миллионами.

Проанализируем техническую сторону процесса: SQLite — это файл-серверная база данных. При массовом удалении записей она создает временные файлы (journal-файлы), чтобы обеспечить целостность данных в случае сбоя. Эти операции ввода-вывода создают огромную нагрузку на дисковую подсистему. Конфигуратор при этом перестает отвечать на запросы операционной системы, так как основной поток программы занят ожиданием завершения дисковых операций. Это нормальное поведение для больших объемов данных. Процесс может занимать от нескольких часов до суток в зависимости от скорости дисков и объема лога.

Способ 1: Использование командной строки для сокращения

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

Выполним следующую команду в командной строке (CMD) от имени администратора:


"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /S "ServerName\BaseName" /N "Admin" /P "Password" /Out D:\logs\reduce_log.txt /ReduceEventLogSize 2023-12-31 -saveAs C:\Archive\OldLog.lgd

Разберем параметры этой команды подробнее:

  1. /S "ServerName\BaseName" — адрес вашей информационной базы на сервере.
  2. /N /P — учетные данные администратора 1С.
  3. /Out — путь к текстовому файлу, в который система запишет результат выполнения. Это поможет понять, завершилась ли операция успехом.
  4. /ReduceEventLogSize — ключевой параметр, за которым следует дата, по которую нужно обрезать логи.
  5. -saveAs — необязательный параметр, позволяющий сохранить удаляемые данные в отдельный файл. Если архив старых логов не нужен, этот параметр можно опустить, что немного ускорит процесс.

Способ 2: Физическое сжатие файла (Команда VACUUM)

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

SQLite при удалении данных не отдает место операционной системе сразу. Она просто помечает страницы внутри файла как «пустые» и готовые для записи новых событий. Это сделано для экономии ресурсов в будущем. Чтобы физически уменьшить размер файла и вернуть место на диск, необходимо выполнить дефрагментацию базы данных SQLite.

Для этого нам понадобится официальная утилита sqlite3.exe. Рассмотрим алгоритм действий:

  1. Завершим работу всех пользователей и остановим службу Агент сервера 1С:Предприятия. Это критически важно, так как файл журнала должен быть свободен от блокировок.
  2. Перейдем в каталог с журналом регистрации (обычно это C:\Program Files\1cv8\srvinfo\...\1Cv8Log).
  3. Запустим консоль и выполним команду:

sqlite3 1Cv8.lgd "VACUUM;"

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

Способ 3: Метод «Ручной ротации» (Самый быстрый)

Если время ограничено и вы не можете ждать 6–10 часов, пока платформа обработает 8-гигабайтный файл, рассмотрим альтернативный вариант, который часто применяют системные администраторы.

  1. Остановим службу сервера 1С:Предприятия.
  2. Зайдем в папку 1Cv8Log нужной базы.
  3. Найдем файл 1Cv8.lgd и просто переименуем его, например, в 1Cv8_2023_archive.lgd.
  4. Запустим службу сервера 1С.

При первом же событии, требующем записи в журнал, 1С увидит, что файла 1Cv8.lgd нет, и автоматически создаст новый пустой файл. Это происходит мгновенно. Если вам потребуется просмотреть старые записи, вы всегда сможете открыть переименованный файл через Меню — Файл — Открыть в самом Конфигураторе.

Рекомендации по дальнейшему обслуживанию

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

Таким образом, мы выяснили, что «зависание» при сокращении — это лишь следствие большого объема работы, выполняемого SQLite. Сочетание штатного сокращения и последующей команды VACUUM (или использование метода ручной ротации) позволяет эффективно управлять объемом занимаемого места на сервере.

← На главную