Журнал регистрации разросся: выгружаем старые события в архив и чистим базу
Содержание
Архивировать журнал регистрации в 1С 8.3 штатно можно в Конфигураторе: Администрирование → Настройка журнала регистрации → Сократить. Укажите дату, до которой удалить события, и включите сохранение удаляемых событий в файл. Старые записи уйдут в отдельный файл-архив, а рабочий журнал станет меньше.
Есть и второй путь, его любят администраторы серверов: включить разделение журнала по периодам и переносить файлы закрытых периодов в архивную папку скриптом. Оба способа работают в файловом и клиент-серверном вариантах. Это механизм платформы, а не конфигурации: порядок одинаков для Бухгалтерии, ЗУП, УТ и любой другой базы.
Подготовка: где лежит журнал и сколько он весит
Прежде чем что-то чистить, найдите папку журнала и оцените её размер. От этого зависит, какой способ выбрать.
Где искать папку 1Cv8Log:
| Вариант базы | Путь к журналу |
|---|---|
| Файловая | <каталог базы>\1Cv8Log — рядом с файлом 1Cv8.1CD |
| Клиент-серверная | <каталог srvinfo>\reg_1541\<GUID базы>\1Cv8Log на рабочем сервере |
Для серверной базы GUID узнать проще всего в файле 1CV8Clst.lst в папке reg_1541. Там перечислены все базы кластера с их идентификаторами. Найдите имя нужной базы — рядом будет GUID. Каталог srvinfo по умолчанию лежит в папке установки сервера 1С, но его часто переносят на отдельный диск: проверьте параметры запуска службы агента.
Какой у вас формат журнала. Посмотрите на содержимое папки:
- 📄
1Cv8.lgfи много файлов*.lgp— старый (текстовый) формат.lgf— словарь: пользователи, компьютеры, объекты метаданных.lgp— сами события. - 🗄️
1Cv8.lgd— новый формат, база SQLite. Появился в платформе 8.3.5.
Формат важен для архивации. Старый формат удобно ротировать переносом файлов. Новый — один большой файл, его разумнее сокращать штатной командой.
Когда пора архивировать. Чёткой границы нет, но признаки понятны:
- ⏳ журнал открывается минутами, отбор по пользователю «висит»;
- 💾 папка
1Cv8Logвесит десятки гигабайт и съедает диск сервера; - 🐢 резервное копирование каталога базы идёт заметно дольше, чем раньше.
Перед архивацией решите, сколько истории держать «под рукой». Часто хватает 3–6 месяцев в рабочем журнале, остальное — в архиве. Если служба безопасности или аудиторы требуют хранить историю дольше, архив должен лежать на надёжном носителе, а не на том же диске.
Штатный способ: сокращение журнала в Конфигураторе с сохранением в файл
Этот способ доступен любому администратору базы. Нужны права администратора и запуск Конфигуратора.
- Запустите базу в режиме Конфигуратор.
- Откройте
Администрирование → Настройка журнала регистрации. - Нажмите кнопку
Сократить.... - В поле даты укажите границу: события раньше этой даты будут удалены из рабочего журнала.
- Включите флажок сохранения удаляемых событий в файл и выберите путь, например
D:\Archive\1C\Buh\2025-H1. - Нажмите
ОКи дождитесь окончания. На журнале в десятки гигабайт это может занять долго — запускайте в нерабочее время.
Не снимайте флажок сохранения в файл, если история может понадобиться. Без него события удаляются безвозвратно, восстановить их можно будет только из резервной копии каталога базы.
В этом же окне настраивается и уровень регистрации. Он определяет, сколько событий пишется в журнал:
| Уровень | Что пишется | Когда выбирать |
|---|---|---|
| Не регистрировать | Ничего | Почти никогда: теряется вся история |
| Ошибки | Только ошибки | Тестовые и учебные базы |
| Ошибки и предупреждения | + предупреждения | Если диск сильно ограничен |
| Ошибки, предупреждения и информация | + информационные события | Компромиссный вариант |
| Все события | + примечания, в т.ч. изменения данных | Рабочие базы с требованием аудита |
Понижение уровня регистрации уменьшает рост журнала, но вы теряете информацию о том, кто и когда изменил документ. Для бухгалтерской базы это обычно важнее, чем экономия места.
Здесь же включается разделение журнала по периодам. Если включить его, платформа будет начинать новый файл событий через выбранный интервал. Для архивации переносом файлов (о нём ниже) эта настройка обязательна.
Пакетный запуск и выгрузка журнала кодом
Ручное сокращение неудобно, если баз много. Для этого есть два инструмента без сторонних программ.
Сокращение из командной строки
Конфигуратор умеет сокращать журнал в пакетном режиме. Это удобно для скриптов и планировщика:
"C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe" DESIGNER ^
/F "D:\Bases\Buh" /N "Администратор" /P "пароль" ^
/ReduceEventLogSize 2025-07-01 -saveAs "D:\Archive\1C\Buh\to_2025-07-01" -KeepSplitting ^
/Out "D:\Archive\1C\logs\reduce_buh.txt"
Что здесь важно:
/ReduceEventLogSize— дата границы в форматеГГГГ-ММ-ДД;-saveAs— файл, куда уйдут удалённые события;-KeepSplitting— сохранить разделение журнала на файлы по периодам;/Out— файл протокола: по нему потом видно, прошла ли операция.
Для серверной базы вместо /F используется строка /S "сервер\имя_базы". Номер платформы в пути подставьте свой.
Пароль администратора в bat-файле — уязвимость. Держите скрипт в папке, доступной только служебной учётной записи, или используйте отдельного пользователя 1С с правами только на администрирование.
Выгрузка в XML без удаления
Иногда журнал не нужно чистить, а нужно отдать кусок истории аудитору или приложить к разбору инцидента. Для этого есть метод платформы ВыгрузитьЖурналРегистрации. Его вызывают из внешней обработки или регламентного задания в расширении:
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", НачалоДня(ДатаНачалаВыгрузки));
Отбор.Вставить("ДатаОкончания", КонецДня(ДатаОкончанияВыгрузки));
ИмяФайла = "D:\Archive\1C\Buh\event_" + Формат(ДатаНачалаВыгрузки, "ДФ=yyyyMMdd")
+ "_" + Формат(ДатаОкончанияВыгрузки, "ДФ=yyyyMMdd") + ".xml";
ВыгрузитьЖурналРегистрации(ИмяФайла, Отбор);
Код выполняется на сервере, поэтому путь должен быть доступен процессу сервера 1С, а не компьютеру пользователя. Метод только копирует события: рабочий журнал после него не уменьшается.
XML читается любой программой и не зависит от формата журнала. Минус — размер: за месяц активной работы файл легко вырастает до сотен мегабайт. Перед отправкой его стоит упаковать в архив.
Очистка рабочего журнала после выгрузки
Если вы сокращали журнал командой Сократить или /ReduceEventLogSize, очистка уже сделана: события старше даты удалены из рабочего журнала. Остаётся проверить результат.
Как проверить, что всё прошло:
- Сравните размер папки
1Cv8Logдо и после. - Откройте журнал в режиме 1С:Предприятие и установите отбор на период до даты сокращения — событий быть не должно.
- Убедитесь, что архивный файл создан и его размер ненулевой.
- Для пакетного режима прочитайте файл протокола
/Out.
Ротация переносом файлов (старый формат)
В старом формате с разделением по периодам журнал состоит из файлов *.lgp, у каждого в имени дата и время начала периода. Файлы прошлых периодов платформа уже не дописывает. Их можно перенести в архив, не трогая базу.
Порядок:
- Убедитесь, что разделение по периодам включено и файлов
.lgpнесколько. - Определите файлы, которые старше нужной границы, — по дате в имени.
- Скопируйте в архивную папку эти
.lgpвместе с текущим1Cv8.lgf. - Проверьте, что копия открывается (см. следующий раздел), и только потом удалите
.lgpиз рабочей папки.
Файл 1Cv8.lgf из рабочей папки не удаляйте и не переносите. Это словарь всего журнала. Без него платформа не сможет расшифровать оставшиеся события.
Последний (текущий) файл .lgp не трогайте никогда — в него идёт запись прямо сейчас.
Новый формат .lgd
Файл SQLite один, и вырезать из него кусок руками нельзя. Для него пользуйтесь сокращением в Конфигураторе или пакетной командой. Открывать 1Cv8.lgd сторонним редактором SQLite на работающей базе не нужно: можно повредить журнал.
Восстановление из архива и разбор инцидента
Архив бесполезен, если его нельзя быстро открыть. Проверьте это сразу после первой архивации, а не в день проверки.
Открыть архив в копии базы
Самый надёжный приём практиков:
- Создайте пустую файловую базу
на той же конфигурации или загрузите в неё копию рабочей через
.dt. - Закройте её и откройте папку
1Cv8Logэтой копии. - Удалите содержимое папки и положите туда архивные файлы: для старого формата —
.lgpи1Cv8.lgf, сохранённый вместе с ними; для нового — файл.lgd. - Запустите копию и откройте журнал регистрации: в БСП-конфигурациях —
Администрирование → Обслуживание → Журнал регистрации.
Обязательно используйте ту же конфигурацию. Иначе часть событий будет показана с «битыми» ссылками на объекты: метаданные в словаре не совпадут с конфигурацией.
Что искать при разборе инцидента
Типичные вопросы и какие отборы ставить:
- 🗑️ кто удалил документ — отбор по событию «Данные. Удаление» и по метаданным нужного вида документа;
- ✏️ кто изменил проведённый документ — событие «Данные. Изменение» плюс представление данных (номер документа);
- 🔑 кто входил под чужим именем — события сеанса и аутентификации, колонка «Компьютер»;
- ⚙️ когда обновляли конфигурацию — события изменения конфигурации базы данных.
Отбор по событию находится на форме журнала: откройте настройку отбора и выберите события из списка.
Сторонние утилиты
Если архив большой и вопросы повторяются, журнал удобнее загрузить в СУБД. На GitHub есть открытые утилиты, которые читают .lgp и .lgd и складывают события в SQL Server, PostgreSQL или ClickHouse. Там поиск по году истории занимает секунды. Перед использованием проверьте, что утилита поддерживает вашу версию платформы и формат журнала.
Автоматическая ротация журнала регистрации
Ручная архивация раз в полгода превращается в «вспомнили, когда кончился диск». Автоматизируйте её.
Задание в планировщике Windows
- Сохраните пакетную команду из раздела выше в
reduce_buh.bat. Дату вычисляйте в скрипте, например «сегодня минус 180 дней». - Создайте задачу в планировщике: запуск раз в месяц, ночью, от служебной учётной записи.
- Добавьте второй шаг — упаковку архивного файла и перенос его на файловое хранилище.
- Раз в квартал открывайте случайный архив в копии базы.
Пример скрипта PowerShell для старого формата — переносит .lgp старше 180 дней:
$log = "D:\Bases\Buh\1Cv8Log"
$archive = "\\nas\1c-archive\Buh\" + (Get-Date -Format "yyyy-MM")
$border = (Get-Date).AddDays(-180)
New-Item -ItemType Directory -Path $archive -Force | Out-Null
Copy-Item "$log\1Cv8.lgf" $archive
$old = Get-ChildItem $log -Filter *.lgp |
Sort-Object Name |
Select-Object -SkipLast 1 |
Where-Object { $_.LastWriteTime -lt $border }
foreach ($f in $old) {
Copy-Item $f.FullName $archive
if ((Get-Item "$archive\$($f.Name)").Length -eq $f.Length) {
Remove-Item $f.FullName
}
}
Скрипт никогда не трогает последний .lgp и удаляет файл из рабочей папки только после того, как копия с тем же размером появилась в архиве. Select-Object -SkipLast работает в PowerShell 5.0 и новее — в Windows Server 2016 он уже есть.
Регламентное задание внутри 1С
Удалять события из журнала средствами встроенного языка нельзя — только выгружать. Поэтому регламентное задание в расширении подходит для ежемесячной выгрузки в XML для аудита. А чистку оставьте планировщику и пакетному режиму Конфигуратора.
Ошибки при архивации журнала регистрации
- ❌ Перенесли
.lgpбез1Cv8.lgf. Архив открывается, но вместо пользователей и объектов — пустота или неверные значения. Словарь обязан лежать рядом с файлами событий. - ❌ Сократили журнал без сохранения в файл. История удалена. Вернуть её можно только из бэкапа каталога базы, если он делался вместе с
1Cv8Log. - ❌ Архив на том же диске. Диск умер — вместе с базой пропала и вся история изменений.
- ❌ Путь
-saveAsили XML недоступен серверу. Для клиент-серверной базы пишет процесс сервера под своей учётной записью. Сетевая папка должна быть открыта именно ей. - ❌ Бэкап исключает
1Cv8Log. Многие копируют только.1CDили делают дамп СУБД. Журнал серверной базы лежит не в СУБД, а на диске рабочего сервера, и в дамп не попадает.
Частые вопросы об архивации журнала
Сколько места занимает журнал регистрации?
Попадает ли журнал серверной базы в бэкап SQL?
srvinfo на рабочем сервере 1С, а не в базе СУБД. Его копируют отдельно.Можно ли перенести журнал на другой диск?
srvinfo с перерегистрацией службы агента, а архив сразу кладут на другой носитель.Можно ли сменить формат журнала с .lgd на старый?
1Cv8Log целиком: старые события в новом формате не переносятся автоматически.