Журнал регистрации в системе 1С:Предприятие является критически важным инструментом для аудита действий пользователей и анализа системных событий. Однако при интенсивной работе база данных журнала может разрастаться до огромных размеров, занимая сотни гигабайт на диске и замедляя работу системы. Оптимальным решением для многих компаний является ограничение глубины хранения логов, например, до трех месяцев. В этой статье мы подробно разберем, как реализовать эту задачу различными способами: от ручного управления до полной автоматизации.
Прежде чем мы перейдем к техническим деталям, давайте проанализируем, почему важно регулярно обслуживать журнал регистрации. Во-первых, это производительность. Чем больше файл журнала, тем медленнее открываются формы просмотра событий. Во-вторых, это дисковое пространство. В современных версиях 1С (начиная с 8.3.5) журнал хранится в формате SQLite (файл 1Cv8.lgd), который может быть весьма требовательным к ресурсам. Сокращение периода до 3 месяцев позволяет соблюсти баланс между необходимостью расследования инцидентов и экономией ресурсов сервера.
Для системных администраторов наиболее эффективным методом является использование параметров запуска исполняемого файла 1С. Разберем синтаксис команды, которая позволяет выполнить сокращение журнала в пакетном режиме.
Основной параметр, который нам потребуется — /ReduceEventLogSize. Рассмотрим его структуру подробнее:
/ReduceEventLogSize [Date] [-saveAs [имя файла]] [-KeepSplitting]
Проанализируем каждый аргумент этой команды:
Date — обязательный параметр. Это новая граница журнала. Все записи, созданные ранее этой даты, будут удалены или перенесены в архив. Формат даты: ГГГГ-ММ-ДД.-saveAs — необязательный, но крайне рекомендуемый параметр. Он указывает путь к файлу (с расширением .xml или .lgp), в который будут выгружены удаляемые записи. Это позволяет сохранить историю для архива на внешнем носителе.-KeepSplitting — этот параметр актуален для старого формата журнала (.lgp), если требуется сохранить разделение на файлы по периодам.Пример использования в командном файле (.bat или .cmd):
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S "Server\Base" /N "Admin" /P "Password" /ReduceEventLogSize 2023-10-01 -saveAs "D:\Archiv\log_old.lgp"
В данном примере мы запускаем конфигуратор под учетной записью администратора и приказываем системе отсечь все данные до 1 октября 2023 года, сохранив их в архивный файл.
Если вам нужно разово очистить журнал и вы не планируете писать скрипты, воспользуемся стандартным интерфейсом платформы. Разберем этот процесс по шагам:
Для более гибкой настройки, например, создания регламентного задания, которое будет запускаться раз в неделю и поддерживать глубину лога ровно в 90 дней, воспользуемся встроенным языком 1С. Выясним, какой метод для этого предназначен.
Для манипуляций с журналом используется глобальный метод УдалитьЗаписиЖурналаРегистрации(). Рассмотрим пример кода, который вычисляет дату 3-месячной давности и производит очистку:
// Определяем дату, до которой будем чистить лог (текущая дата минус 3 месяца)
ДатаОчистки = ДобавитьМесяц(ТекущаяДата(), -3);
// Выполняем удаление
// Можно указать путь к файлу архива вторым параметром
Попытка
УдалитьЗаписиЖурналаРегистрации(ДатаОчистки);
ЗаписьЖурналаРегистрации("Обслуживание", УровеньЖурналаРегистрации.Информация, , , "Журнал регистрации успешно сокращен до " + ДатаОчистки);
Исключение
ЗаписьЖурналаРегистрации("Обслуживание", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка при сокращении журнала: " + ОписаниеОшибки());
КонецПопытки;
Этот код можно разместить в серверном модуле и вызывать через РегламентныеЗадания. Таким образом, обслуживание системы будет происходить полностью в фоновом режиме без участия человека.
Важно учитывать, что в современных версиях платформы 1С используется формат .lgd, базирующийся на SQLite. Это вносит свои коррективы в процесс очистки. Разберем важный нюанс: когда вы удаляете записи через команду сокращения, записи помечаются как удаленные в базе данных SQLite, но физический размер файла на диске не уменьшается сразу.
Чтобы реально освободить место на жестком диске, необходимо выполнить операцию сжатия (Compact). В Конфигураторе это происходит автоматически при нажатии кнопки "Сократить", но при программном удалении или через командную строку может потребоваться дополнительное обслуживание. Специалисты рекомендуют периодически останавливать службу сервера 1С и выполнять команду VACUUM средствами утилит SQLite для файла 1Cv8.lgd, если его размер стал критическим.
Проанализируем риски, связанные с процедурой сокращения. Операция удаления миллионов записей создает серьезную нагрузку на дисковую подсистему и процессор. Поэтому мы рекомендуем придерживаться следующих правил:
1Cv8.lgd или .lgp.-saveAs убедитесь, что на целевом диске достаточно места для создания архивного файла.Таким образом, мы рассмотрели все основные инструменты для управления глубиной хранения данных в 1С. Выбор конкретного метода зависит от ваших задач: для разового действия подойдет Конфигуратор, для регулярного автоматического обслуживания — командная строка или регламентное задание на встроенном языке.