В процессе администрирования систем на базе 1С:Предприятие часто возникает задача анализа журналов регистрации (ЖР), которые были скопированы с сервера или извлечены из архивов — для автоматического мониторинга этих событий есть подсистема автоматического отслеживания ошибок в журнале регистрации 1С. Однако при попытке просто открыть файл с расширением .lgp стандартными средствами платформы (через меню «Файл — Открыть») пользователь часто сталкивается с тем, что журнал отображается пустым или открывается как нечитаемый текстовый массив. В этой статье мы разберем техническую структуру старого формата журнала регистрации и выясним, как правильно прочитать эти данные.
Прежде чем перейти к практическим шагам, проанализируем, из чего состоит классический журнал регистрации 1С (до перехода на формат SQLite) — для удобного администрирования и работы с этими файлами есть утилита для администрирования журнала регистрации и файлов 1С. В каталоге журнала регистрации (обычно это папка 1Cv8Log) находятся файлы трех типов:
.lgf.Основная причина, по которой файл .lgp открывается пустым, заключается в отсутствии файла .lgf. Платформа 1С просто не может сопоставить числовой индекс в строке лога с конкретным пользователем или событием, из-за чего механизм отображения дает сбой.
Рассмотрим самый простой и быстрый способ, найденный в ходе обсуждения. Если вам нужно просмотреть архивный .lgp файл через интерфейс 1С, выполните следующие шаги:
.lgp в отдельную папку..lgf, который принадлежал этой же информационной базе в тот же период времени. Скопируйте его в ту же папку, где лежит .lgp..lgf (именно к нему, а не к .lgp).Важно: Платформа подтянет все связанные .lgp файлы в этой папке и отобразит их в привычном виде с работающими отборами по пользователям и событиям.
Если файлов много или требуется автоматизировать обработку данных, проанализируем возможности программного интерфейса 1С. Для этого существует метод РазгрузитьЖурналРегистрации(). Рассмотрим пример кода, который позволяет прочитать данные из внешних файлов во временную таблицу:
// Создадим таблицу значений для хранения логов
ТЗ_Лог = Новый ТаблицаЗначений;
// Определим структуру отбора (например, за конкретный период)
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", '20230101000000');
Отбор.Вставить("ДатаОкончания", '20231231235959');
// Указываем путь к каталогу, где лежат .lgf и .lgp файлы
ПутьККаталогуЛогов = "C:\ArchiveLogs\Base1C\";
// Выгружаем данные
РазгрузитьЖурналРегистрации(ТЗ_Лог, Отбор, , ПутьККаталогуЛогов);
// Теперь данные доступны для анализа в таблице значений
Для Каждого СтрокаЛога Из ТЗ_Лог Цикл
Сообщить("Событие: " + СтрокаЛога.ИмяСобытия + " Пользователь: " + СтрокаЛога.Пользователь);
КонецЦикла;
Метод РазгрузитьЖурналРегистрации() хорош тем, что он берет на себя всю работу по сопоставлению данных из текстовых файлов с заголовками .lgf. Вам не нужно вручную парсить строки и искать индексы.
В ситуациях, когда файл .lgf утерян, а данные жизненно необходимы, проанализируем возможность прямого чтения. Файлы .lgp имеют кодировку UTF-8 (часто с BOM). Каждая запись начинается с фигурной скобки и временной метки.
Структура записи выглядит примерно так: {YYYYMMDDHHMMSS, Результат, ПользовательИндекс, ...}. Выясним, что можно сделать в этом случае:
Начиная с версии платформы 8.3.5, 1С перешла на хранение журнала в одном файле формата SQLite с расширением .lgd. Разберем основные отличия и способы работы с ним:
Преимущества .lgd:
Если у вас файл .lgd, его можно открыть через любой просмотрщик SQLite. Это позволяет строить сложные отчеты, которые невозможно реализовать встроенными средствами 1С, например, группировку по интенсивности записей в секунду по всей базе.
Проанализируем типичную ошибку при копировании — «горячее» копирование. Если сервер 1С активно пишет в журнал, файл .lgp за текущий день заблокирован процессом rphost. При попытке копирования обычными средствами Windows файл может скопироваться некорректно (с «нулевым» размером или поврежденной структурой).
Чтобы гарантировать целостность архива, рекомендуется:
РазгрузитьЖурналРегистрации() в отдельный XML или файл таблицы значений, что гарантирует логическую целостность данных.Таким образом, мы выяснили, что для успешного чтения старого формата ЖР ключевым фактором является наличие файла .lgf. Без него штатные средства 1С не смогут интерпретировать данные, и придется прибегать к низкоуровневому анализу текстовых строк — в качестве альтернативного решения проблемы аудита есть система детального логирования истории изменений объектов 1С.