Почему в настройках журнала регистрации 1С нет пункта «Разделять хранение журнала по периодам»?

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

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

Причина отсутствия настройки разделения по периодам

Проанализируем ситуацию: начиная с версии платформы 8.3.5, фирма «1С» представила новый формат хранения журнала регистрации на базе встраиваемой СУБД SQLite. В этом формате все события информационной базы пишутся в единый файл с расширением 1Cv8.lgd (вместо прежней структуры из файла описания 1Cv8.lgf и набора периодических фрагментов .lgp).

Поскольку архитектура SQLite предполагает хранение таблиц и индексов внутри одного файла базы данных, концепция физического разбиения лога на отдельные файлы по временным интервалам теряет смысл. По этой причине платформа «1С» автоматически скрывает поле «Разделять хранение журнала по периодам» из интерфейса Конфигуратора, если текущая база использует формат .lgd.

Особенности работы с журналом регистрации SQLite (.lgd)

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

  1. Неосвобождаемое дисковое пространство: при штатном сокращении журнала через меню Конфигуратора Администрирование -> Настройка журнала регистрации -> Сократить или через запуск с ключом /ReduceEventLogSize записи удаляются из таблиц SQLite, но сам файл 1Cv8.lgd на диске не уменьшается. СУБД SQLite сохраняет выделенное дисковое пространство для будущих записей.
  2. Блокировки и производительность: в высоконагруженных многопользовательских базах формат .lgd может создавать повышенную нагрузку на дисковую подсистему и приводить к взаимоблокировкам при интенсивной параллельной записи событий.
  3. Эволюция формата в платформе: в версиях 8.3.5–8.3.11 формат SQLite создавался по умолчанию для новых баз. В версиях 8.3.12–8.3.21 по умолчанию вновь стал использоваться последовательный текстовый формат, а начиная с версии 8.3.22 поддержка формата SQLite в журнале регистрации была полностью прекращена разработчиками платформы.

Способ 1. Возврат к последовательному текстовому формату (.lgf / .lgp)

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

  1. Полностью остановим службу кластера серверов 1С (для клиент-серверной базы) либо завершим все сеансы пользователей и закроем Конфигуратор (для файловой базы).
  2. Перейдем в каталог журнала регистрации базы 1Cv8Log. В клиент-серверном варианте он располагается в каталоге данных службы кластера: srvinfo/reg_xxxx/<Идентификатор_Базы>/1Cv8Log. В файловом варианте — внутри папки с информационной базой.
  3. Переместим в резервную папку или удалим файл 1Cv8.lgd, а также сопутствующие временные файлы 1Cv8.lgd-wal и 1Cv8.lgd-shm (если они присутствуют).
  4. Создадим в каталоге 1Cv8Log пустой текстовый файл с именем 1Cv8.lgf.
  5. Запустим службу сервера 1С и откроем Конфигуратор. Журнал регистрации автоматически переключится на последовательный текстовый формат, а в окне настроек вновь появится параметр «Разделять хранение журнала по периодам».

Способ 2. Сжатие и дефрагментация файла SQLite через команду VACUUM

Если вы продолжаете использовать формат .lgd и после сокращения журнала хотите физически освободить место на жестком диске, выполним операцию дефрагментации базы данных SQLite:

  1. Остановим службу сервера 1С или закроем все сеансы работы с информационной базой, чтобы снять блокировку с файла 1Cv8.lgd.
  2. Скачаем консольную утилиту sqlite3.exe и поместим её рядом с файлом журнала или укажем к ней путь в командной строке.
  3. Выполним в консоли команду сжатия:

sqlite3 1Cv8.lgd "VACUUM;"

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

Способ 3. Программное управление журналом регистрации

Для регулярного обслуживания журнала регистрации без интерактивного входа в Конфигуратор можно использовать встроенный язык 1С. Рассмотрим методы ОчиститьЖурналРегистрации() и СкопироватьЖурналРегистрации(), позволяющие удалять устаревшие события и сохранять архивные копии по регламентному расписанию:


// Пример программного сокращения журнала с сохранением копии
ГраницаОчистки = НачалоДня(ТекущаяДата() - 30 * 86400); // Оставляем последние 30 дней
ИмяФайлаАрхива = "C:\LogBackup\EventLog_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd") + ".xml";

// Создаем фильтр для выгрузки архивных записей
Фильтр = Новый Структура;
Фильтр.Вставить("ДатаОкончания", ГраницаОчистки);

// Выгружаем старые события в файл архива
СкопироватьЖурналРегистрации(ИмяФайлаАрхива, Фильтр);

// Очищаем журнал до заданной даты
ОчиститьЖурналРегистрации(ГраницаОчистки);

Таким образом, отсутствие настройки разделения по периодам является штатным поведением платформы для формата SQLite. В зависимости от архитектурных задач вы можете либо сжимать файл утилитой VACUUM, либо перевести журнал в текстовый формат .lgf с включением периодического разделения.

← На главную