Журнал регистрации в 1С:Предприятие — это системный инструмент, который фиксирует все события: от ошибок до действий пользователей. Со временем он разрастается до гигантских размеров, замедляя работу базы и усложняя поиск актуальной информации. Но просто так удалить записи нельзя: неверные манипуляции могут привести к потере критичных данных или нарушению целостности системы.
В этой статье разберём все безопасные способы очистки журнала регистрации — от ручных методов через конфигуратор до автоматизированных обработок. Особое внимание уделим нюансам для разных версий платформы (1С 8.3, 1С 8.2) и типам баз (файловые, клиент-серверные). Также выясним, какие записи можно удалять без риска, а какие лучше архивировать.
Зачем очищать журнал регистрации 1С?
Основная причина — производительность. Журнал с миллионами записей тормозит:
- 🔍 Поиск по событиям (запросы выполняются дольше на 30-50%)
- 💾 Резервное копирование (увеличивается размер бэкапа)
- 🖥️ Работу клиент-серверных баз (нагрузка на SQL-сервер)
- 📊 Генерацию отчётов по логам (например, для аудита)
Вторая причина — безопасность. В журнале могут храниться:
- 🔑 Логины и пароли (если включена детализация авторизации)
- 📄 Конфиденциальные данные (номера документов, суммы операций)
- 🚨 Следы несанкционированных действий (если база была взломана)
⚠️ Внимание: Удаление журналов регистрации может быть расценено как фальсификация данных при аудите или судебных разбирательствах. Всегда сохраняйте архивные копии перед очисткой!
Третья причина — удобство администрирования. Например:
- 📂 Освобождение места на диске (журнал может весить десятки гигабайт)
- 🔄 Упрощение миграции базы на новый сервер
- 🛠️ Диагностика актуальных проблем (без шума от старых записей)
Что можно удалять, а что — нет?
Не все записи одинаково полезны. Безопасно удалять:
- 📅 События старше 1 года (если нет требований по хранению)
- ⚠️ Ошибки без критичных последствий (например, "Не найден файл отчёта")
- 🔄 Служебные сообщения (регламентные задания, тестовые соединения)
- 📤 Логи обмена данными (если интеграция работает стабильно)
Категорически нельзя удалять (или делать это с осторожностью):
- 🔐 Записи о изменении прав доступа (может потребоваться для расследования инцидентов)
- 💰 События, связанные с финансовыми операциями (аудит, налоговая проверка)
- 🚨 Критические ошибки (например, падение базы или сбои транзакций)
- 📝 Действия привилегированных пользователей (администраторы, бухгалтеры)
| Тип записи | Можно удалять? | Рекомендации |
|---|---|---|
| Ошибки подключения к базе | Да | Если проблема решена и не повторяется |
| Изменения документов (создание, редактирование) | Частично | Оставлять записи за последний квартал |
| Регламентные задания | Да | Исключение: задания, связанные с выгрузкой в ФНС |
| Ошибки обмена с внешними системами | Нет | Могут понадобиться для отладки интеграций |
| Действия пользователей с правами "Администратор" | Нет | Требуются для внутреннего аудита |
Важно: В клиент-серверных базах 1С журнал регистрации хранится в таблице _EventLog на SQL-сервере. Его очистка требует прямых прав на базу данных!
Способ 1: Очистка через Конфигуратор (ручной метод)
Самый простой способ — использовать встроенные инструменты 1С:Предприятия. Подходит для файлового и клиент-серверного вариантов работы.
Пошаговая инструкция:
- Закройте все сеансы работы с базой (включая фоновые задания).
- Запустите Конфигуратор от имени администратора.
- Перейдите в меню
Администрирование → Журнал регистрации. - В открывшемся окне нажмите
Действия → Очистить журнал регистрации. - Укажите период, за который нужно удалить записи (например, "до 01.01.2023").
- Подтвердите действие и дождитесь завершения операции.
Закрыть все пользовательские сеансы|Сделать резервную копию базы|Проверить права доступа (нужны права администратора)|Убедиться, что нет активных транзакций|Запустить Конфигуратор от имени администратора-->
Ограничения метода:
- 🕒 Медленная работа при большом объёме данных (может занять часы)
- 🔄 Нет возможности выборочного удаления (только по дате)
- 📂 Не очищает физическое место на диске (требуется сжатие базы)
⚠️ Внимание: В 1С 8.3.20+ при очистке журнала через Конфигуратор автоматически создаётся резервная копия удаляемых записей в папке %APPDATA%\1C\1Cv8\Log. Проверьте, хватает ли места на диске!
После очистки рекомендуется:
- Выполнить тестовое подключение к базе.
- Проверить работу регламентных заданий.
- Сжать базу данных (для файлового варианта:
Администрирование → Тестирование и исправление).
Способ 2: Программная очистка (1С и SQL)
Для опытных администраторов и разработчиков доступны более гибкие методы:
Вариант A: С помощью встроенного языка 1С
Можно написать обработку, которая удалит записи по заданным критериям. Пример кода:
Процедура ОчиститьЖурналРегистрации(ДатаГраница)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЖурналРегистрации.Ссылка КАК Ссылка
|ИЗ
| ЖурналРегистрации КАК ЖурналРегистрации
|ГДЕ
| ЖурналРегистрации.ДатаМомент < &ДатаГраница";
Запрос.УстановитьПараметр("ДатаГраница", ДатаГраница);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Удалить();
КонецЦикла;
КонецПроцедуры
Преимущества метода:
- 🎯 Выборочное удаление (можно фильтровать по типу события, пользователю и т.д.)
- 📅 Гибкость в настройке периода
- 🔄 Возможность автоматизации (например, ежемесячный запуск)
Недостатки:
- 🛠️ Требует знания 1С:Предприятие 8 и языка запросов
- 🐢 Медленнее прямого SQL-запроса
- 🔒 Нужны права на изменение конфигурации
Вариант B: Прямой SQL-запрос (для клиент-серверных баз)
Для Microsoft SQL Server или PostgreSQL можно выполнить запрос напрямую. Пример для MS SQL:
USE [YourDatabaseName]
DELETE FROM _EventLog
WHERE EventDate < '2023-01-01'
GO
Для PostgreSQL:
DELETE FROM "_eventlog" WHERE "eventdate" < '2023-01-01';
⚠️ Внимание: Прямые SQL-запросы могут нарушить целостность базы, если в журнале регистрации есть ссылки из других таблиц. Всегда делайте бэкап перед выполнением!
Перед массовым удалением сделайте тестовый запрос с SELECT COUNT(*), чтобы оценить объём удаляемых данных и избежать блокировок таблицы.
Способ 3: Использование обработок от 1С и партнёров
Если не хочется писать код самостоятельно, можно воспользоваться готовыми решениями:
Официальные обработки от 1С
- 📌 "Очистка журнала регистрации" (поставляется с дистрибутивом платформы)
- 📌 "Управление журналами регистрации" (для 1С:ERP и комплексных решений)
Где искать:
- В каталоге шаблонов конфигуратора (
Файл → Открыть → Шаблоны) - На портале 1С:ИТС в разделе "Обработки"
- В комплекте поставки вашей конфигурации (папка
ExtForms)
Сторонние обработки
Популярные решения от партнёров 1С:
- 🛠️ "Универсальная очистка логов" (от компании "Инфостарт")
- 📊 "Анализ и очистка журналов" (от "1С-Софт")
- 🔍 "LogCleaner" (для глубокой очистки с архивацией)
| Обработка | Поддержка версий | Особенности | Стоимость |
|---|---|---|---|
| Очистка журнала регистрации (1С) | 8.2 — 8.3.22 | Базовая функциональность, без архивации | Бесплатно |
| Универсальная очистка логов | 8.3.6+ | Фильтрация по типам событий, архивация в XML | от 1500 руб. |
| LogCleaner | 8.3.10+ | Работа с SQL-базами, сжатие после очистки | от 2500 руб. |
Преимущества готовых обработок:
- 🎛️ Интуитивный интерфейс (не нужно писать код)
- 📦 Дополнительные функции (архивация, отчёты, фильтры)
- 🛡️ Проверенная стабильность (тестируется на тысячах баз)
Недостатки:
- 💰 Платные решения требуют лицензии
- 🔄 Может не поддерживать кастомные конфигурации
- 📥 Требует установки (не всегда возможно на защищённых системах)
Готовые обработки — оптимальный выбор для регулярной очистки, особенно если в штате нет опытного 1С-разработчика.
Способ 4: Архивация перед удалением
Перед массовым удалением записей рекомендуется создать архив. Это поможет:
- 📂 Восстановить данные при необходимости
- 🔍 Провести ретроспективный анализ
- 📊 Подтвердить действия при аудите
Как архивировать журнал регистрации:
Вариант A: Выгрузка в файл
- В Конфигураторе откройте
Администрирование → Журнал регистрации. - Установите фильтр по дате (например, "с 01.01.2020 по 31.12.2022").
- Нажмите
Файл → Сохранить как...и выберите формат (MXL, TXT, DBF). - Сохраните файл в надёжном месте (например, на сетевом диске).
Вариант B: SQL-дамп (для клиент-серверных баз)
Для MS SQL Server:
-- Создание резервной копии таблицы
SELECT * INTO _EventLog_Backup_2023
FROM _EventLog
WHERE EventDate < '2023-01-01'
Для PostgreSQL:
-- Экспорт в CSV
COPY (SELECT * FROM "_eventlog" WHERE "eventdate" < '2023-01-01')
TO '/backup/eventlog_2023.csv' WITH CSV HEADER;
Хранение архивов:
- 🗄️ На отдельном сервере (не вместе с рабочей базой)
- 🔐 С ограниченным доступом (только для администраторов)
- 📅 С указанием периода (например,
Journal_2020-2022.zip)
Как сжать архив журналов для экономии места?
Используйте утилиты с высокой степенью сжатия, например:
- 7-Zip с алгоритмом LZMA2 (коэффициент сжатия ~90% для текстовых логов)
- RAR с параметром -m5 (максимальное сжатие)
- Для SQL-дампов: pg_dump --compress=9 (PostgreSQL)
Пример команды для 7-Zip:
7z a -tzip -mx=9 -mfb=64 -md=32m Journal_2022.zip Journal_2022.*
Ошибки при очистке журнала и как их избежать
Даже опытные администраторы сталкиваются с проблемами. Рассмотрим типичные ошибки и решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Зависание Конфигуратора при очистке | Слишком большой объём данных или блокировки таблиц | Разбить очистку на части (по месяцам) или использовать SQL |
| "Недостаточно прав для операции" | Текущий пользователь не имеет роли "Администратор" | Запустить Конфигуратор от имени администратора 1С |
| Ошибка "Таблица заблокирована" | Активные сеансы пользователей или фоновые задания | Закрыть все соединения, остановить регламентные задания |
| После очистки журнал не уменьшился | Физическое место не освобождено (особенно в файловом варианте) | Выполнить сжатие базы (Тестирование и исправление) |
| Исключение при выполнении SQL-запроса | Нарушение целостности данных или синтаксическая ошибка | Проверять запрос на тестовой базе, использовать транзакции |
Дополнительные рекомендации:
- 🕐 Очищайте журнал в нерабочее время (ночью или в выходные).
- 📡 Проверяйте стабильность соединения с базой перед началом.
- 📋 Ведите журнал очисток (даты, объёмы, ответственные лица).
⚠️ Внимание: В 1С:ERP и 1С:Управление холдингом журнал регистрации интегрирован с подсистемой аудита. Его очистка может нарушить работу отчётов по СОД (система внутреннего контроля). Перед манипуляциями проверьте документацию вашей конфигурации!
Автоматизация очистки: регламентные задания
Чтобы не очищать журнал вручную, можно настроить автоматическое выполнение. Для этого:
Шаг 1. Создание обработки
Используйте одну из готовых обработок (см. Способ 3) или напишите свою. Пример простой обработки:
Процедура ОчиститьСтарыеЗаписиЖурнала() Экспорт
ДатаГраница = ТекущаяДата() - 365; // Удаляем записи старше года
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ЖурналРегистрации.Ссылка КАК Ссылка
ИЗ ЖурналРегистрации КАК ЖурналРегистрации
ГДЕ ЖурналРегистрации.ДатаМомент < &ДатаГраница";
Запрос.УстановитьПараметр("ДатаГраница", ДатаГраница);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Попытка
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Удалить();
Исключение
ЗаписатьЖурналРегистрации(НСтр("ru = 'Ошибка при удалении записи журнала'"),
УровеньЖурналаРегистрации.Ошибка);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Шаг 2. Настройка регламентного задания
- В Конфигураторе откройте
Общие → Регламентные задания. - Создайте новое задание с типом "Выполнение кода".
- Укажите период выполнения (например, "Каждый месяц, 1-е число, 3:00").
- В поле "Код" вставьте вызов вашей процедуры:
ОчиститьСтарыеЗаписиЖурнала(); - Сохраните и активируйте задание.
Шаг 3. Мониторинг выполнения
Чтобы отслеживать результаты автоматической очистки:
- 📧 Настройте оповещения по email (через
Планы обменаили внешние скрипты). - 📊 Создайте отчёт с статистикой удалённых записей.
- 📁 Проверяйте логи регламентных заданий (
Администрирование → Журнал регламентных заданий).
Пример кода для логгирования результатов:
Процедура ЗаписатьРезультатОчистки(КоличествоУдалено)
ТекстСообщения = НСтр("ru = 'Удалено записей журнала регистрации: '") + КоличествоУдалено;
ЖурналРегистрации.ЗаписатьСобытие(
НСтр("ru = 'Автоочистка журнала'"),
УровеньЖурналаРегистрации.Информация,
,
,
ТекстСообщения
);
КонецПроцедуры
Автоматическая очистка сокращает рутинную работу, но требует тщательного тестирования. Всегда проверяйте результаты первых запусков вручную!
FAQ: Частые вопросы по очистке журнала регистрации 1С
Можно ли полностью отключить ведение журнала регистрации?
Технически да, но крайне не рекомендуется. Журнал регистрации — это:
- 🔍 Основной инструмент диагностики проблем
- 📊 Источник данных для аудита
- 🛡️ Защита от несанкционированных действий
Если необходимо уменьшить нагрузку, лучше:
- 📅 Сократить период хранения записей
- 🔄 Отключить логирование некритичных событий
- 🗃️ Настроить архивацию старых данных
Для отключения ведения журнала:
- В Конфигураторе откройте
Администрирование → Настройки программы. - Снимите флажок "Вести журнал регистрации".
- Перезапустите сервер 1С.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:ERP) отключение журнала может нарушить работу подсистемы внутреннего контроля.
Как очистить журнал регистрации в облачной версии 1С (1С:Fresh)?
В 1С:Fresh прямой доступ к журналу регистрации ограничен. Доступные варианты:
- Через личный кабинет:
- Перейдите в раздел "Администрирование".
- Выберите "Журналы и логи".
- Используйте кнопку "Очистить" (доступно не для всех тарифов).
- Создайте заявку в техническую поддержку с указанием периода очистки.
- Приложите подтверждение прав на базу (если запрашиваете очистку критичных данных).
Ограничения:
- 📅 Минимальный период хранения — 3 месяца (нельзя удалить свежие записи).
- 🔄 Очистка выполняется в фоновом режиме (может занять до 24 часов).
- 📂 Архивы не предоставляются (данные удаляются безвозвратно).
Для корпоративных клиентов возможна настройка автоматической очистки через API 1С:Fresh.
Сколько места освободится после очистки журнала?
Объём освобождаемого места зависит от:
- 📅 Периода хранения: за год может накопиться от 100 МБ до 10 ГБ.
- 📊 Интенсивности использования: в базах с 50+ пользователями журнал растёт быстрее.
- 🗃️ Типа базы:
- Файловый вариант: место освобождается после сжатия (
Тестирование и исправление). - Клиент-серверный: место освобождается сразу, но может потребоваться сжатие SQL-базы.
- Файловый вариант: место освобождается после сжатия (
Примерные цифры:
| Тип базы | Количество пользователей | Объём журнала за год | Освобождаемое место |
|---|---|---|---|
| Файловая | 1-5 | 100-500 МБ | до 80% |
| Клиент-серверная (MS SQL) | 10-50 | 1-5 ГБ | до 90% |
| Клиент-серверная (PostgreSQL) | 50+ | 5-20 ГБ | до 95% |
Чтобы точно оценить эффект:
- Посмотрите текущий размер файла базы (
.1CDдля файлового варианта). - Оцените размер таблицы
_EventLogв SQL (запрос:sp_spaceused '_EventLog'). - После очистки выполните сжатие и сравните показатели.
Как восстановить случайно удалённые записи журнала?
Восстановление возможно, если:
- 📁 Есть резервная копия базы (восстановите её в тестовом режиме и экспортируйте нужные записи).
- 🗄️ Сделан архив журнала перед очисткой (импортируйте данные обратно).
- 🔄 Включено логирование изменений на уровне SQL-сервера (для клиент-серверных баз).
Если архивов нет:
- Проверьте журналы транзакций SQL (для этого нужен доступ к серверу и знание T-SQL).
- Обратитесь в службу поддержки 1С с описанием проблемы (для облачных решений).
- Используйте специализированные утилиты (например, ApexSQL Log для MS SQL).
Пример запроса для восстановления из резервной копии SQL:
-- Восстановление удалённых записей из бэкапа
INSERT INTO _EventLog
SELECT * FROM _EventLog_Backup
WHERE EventID NOT IN (SELECT EventID FROM _EventLog)