В практике администрирования систем на платформе 1С:Предприятие нередки случаи, когда сама информационная база по какой-то причине удаляется или перезаписывается, но от нее остаются «осиротевшие» служебные файлы. Самым ценным из таких файлов является журнал регистрации. Именно в нем хранится вся история действий пользователей: кто, когда и какие документы создавал, изменял или проводил.
В этой статье мы подробно разберем, как прочитать и проанализировать журнал регистрации удаленной базы, если он сохранен в формате .lgd (формат на базе СУБД SQLite), а размер файла составляет несколько гигабайт, что делает его открытие стандартными текстовыми редакторами невозможным.
Среди разработчиков и администраторов 1С существует заблуждение, что при потере связи с основной информационной базой журнал регистрации становится практически бесполезным беспорядочным набором идентификаторов. Многие полагают, что вместо имен пользователей и названий документов вы увидите лишь надписи «Объект не найден» или пустые строки. Выясним причину, почему это мнение ошибочно.
Формат журнала регистрации .lgd представляет собой полноценную реляционную базу данных SQLite. Платформа 1С проектировала этот формат таким образом, чтобы он был максимально независим от конфигурации. Проанализируем внутреннюю структуру этого файла:
UserCodes. В ней напрямую в текстовом виде записаны имена пользователей (например, «Иванов Иван Иванович») и их уникальные идентификаторы UUID. Основная таблица логов ссылается на эту таблицу через числовые коды. Соответственно, узнать, «кто провел документ в январе», можно со 100%-й точностью.dataPresentation таблицы EventLog. Даже если физическая ссылка на объект утеряна, текстовое описание документа останется доступным для чтения.MetadataCodes хранит сопоставление внутренних кодов и реальных путей к объектам конфигурации (например, Документ.РеализацияТоваровУслуг).Таким образом, «осиротевший» журнал регистрации содержит абсолютно всю необходимую информацию для проведения полноценного аудита действий пользователей.
Рассмотрим подробнее три основных метода работы с таким журналом регистрации.
Самый простой и очевидный способ, о котором часто забывают — это штатный механизм платформы. Конфигуратор 1С умеет работать с журналами регистрации как с внешними файлами.
Выполним следующие шаги:
1Cv8.lgd.Важное примечание: Если размер файла составляет 2 ГБ и более, процесс открытия может занять значительное время (от нескольких минут до получаса в зависимости от скорости дисковой подсистемы и объема оперативной памяти компьютера). Платформа оптимизирует чтение больших SQLite-файлов, поэтому не спешите закрывать программу, если она временно перейдет в состояние «Не отвечает». Дайте системе завершить индексацию и вывод данных на экран.
Если вам необходимо не просто просмотреть плоский список событий, а использовать привычные инструменты фильтрации, группировки и отборов платформы 1С, журнал регистрации можно «подсунуть» другой информационной базе. Разберем этот процесс по шагам.
1Cv8Log.C:\Program Files\1cv8\srvinfo\reg_1541\<Идентификатор_Базы>\1Cv8Log).1Cv8.lgd. Если ваш файл назывался иначе, переименуйте его. Замените им автоматически созданный пустой файл.Совет эксперта: Если у вас сохранилась хотя бы старая, неактуальная резервная копия удаленной базы данных, лучше подключать журнал именно к ней. В этом случае внутренние уникальные идентификаторы (GUID) пользователей и метаданных совпадут с данными в журнале регистрации. Благодаря этому вы сможете не просто читать текстовые представления, но и открывать карточки существующих пользователей или сохранившихся документов двойным кликом мыши.
Если же вы используете пустую базу или программный перенос данных, вы можете воспользоваться встроенной функцией платформы СкопироватьЖурналРегистрации() для выборочного переноса записей из внешнего файла в рабочий журнал текущей базы.
В ситуациях, когда файл журнала регистрации поврежден, слишком огромен или Конфигуратор 1С стабильно зависает при попытке его прочитать, на помощь приходят специализированные инструменты для работы с базами данных SQLite. Посмотрим, как проанализировать лог с помощью бесплатной программы DB Browser for SQLite или любого другого SQL-клиента (например, DBeaver).
Этот метод дает колоссальное преимущество в скорости работы, так как позволяет использовать всю мощь SQL-запросов и выгружать результаты выборок напрямую в форматы Excel или CSV.
Разберем пример построения SQL-запроса к файлу журнала регистрации для поиска действий конкретного пользователя по проведению документов.
Для начала откройте ваш файл 1Cv8.lgd в программе DB Browser for SQLite. Перейдите на вкладку «Выполнить SQL» и введите следующий запрос:
SELECT
datetime(el.date/10000000 - 62135596800, 'unixepoch', 'localtime') AS ТочноеВремя,
u.name AS Пользователь,
m.name AS ТипМетаданных,
el.dataPresentation AS Документ,
el.comment AS Комментарий
FROM EventLog el
LEFT JOIN UserCodes u ON el.userCode = u.code
LEFT JOIN MetadataCodes m ON el.metadataCode = m.code
WHERE el.dataPresentation LIKE '%Реализация%'
ORDER BY el.date DESC
LIMIT 100;
Проанализируем этот SQL-запрос подробнее:
LEFT JOIN UserCodes u ON el.userCode = u.code связывает основную таблицу событий с таблицей пользователей для получения их реальных имен вместо числовых кодов.LEFT JOIN MetadataCodes m ON el.metadataCode = m.code позволяет понять, к какому типу объектов метаданных (например, справочник, документ или регистр) относится запись.el.dataPresentation содержит то самое текстовое представление объекта, которое спасет нас от проблемы «Объект не найден». Фильтр LIKE '%Реализация%' отберет только записи, связанные с документами реализации.datetime(el.date/10000000 - 62135596800, 'unixepoch', 'localtime'). Платформа 1С хранит дату и время внутри SQLite как число десятых долей микросекунды, прошедших с начала нашей эры (0001-01-01). Данная формула переводит внутренний формат 1С в стандартное Unix-время и выводит дату в привычном и понятном человеку формате с учетом локального часового пояса.Разберем исторический контекст появления и развития этого формата. Журнал регистрации в формате СУБД SQLite (файлы с расширением .lgd) впервые появился в платформе «1С:Предприятие» версии 8.3.5. Его создание было обусловлено необходимостью ускорить построение сложных отборов по журналу на крупных предприятиях.
Однако реальная эксплуатация выявила существенные недостатки этого решения. Под высокой многопользовательской нагрузкой, когда сотни сессий одновременно пытаются выполнить запись событий, СУБД SQLite часто блокировала файл. Это приводило к заметным задержкам в работе пользователей и даже к физическому повреждению структуры файла 1Cv8.lgd при аварийных завершениях работы сервера.
В результате фирма 1С признала архитектурную проблему и начиная с версии платформы 8.3.22 полностью отказалась от использования формата SQLite для журнала регистрации. Платформа вернулась к оптимизированному последовательному текстовому формату (файлы с расширениями .lgf, .lgp, .lgx) с использованием фонового индексирования.
Помните: Если вы решите подключить ваш старый файл .lgd к современной базе 1С, работающей на платформе версии 8.3.22 или выше, система автоматически запустит процесс конвертации журнала обратно в последовательный текстовый формат. Это абсолютно нормальное поведение платформы, пугаться которого не стоит.
Мы рассмотрели все основные способы извлечения информации из «осиротевшего» журнала регистрации. Выбор конкретного метода зависит от ваших технических навыков, объема оперативной памяти сервера и конечной цели анализа.