Файл 1Cv8.lgd: как прочитать журнал регистрации без 1С

· 9 мин

Содержание

Файл 1Cv8.lgd лежит в каталоге 1Cv8Log рядом с файловой базой. Двойной щелчок ничего не даёт, Windows предлагает выбрать программу. Открывать его нужно либо самой 1С (пункт «Журнал регистрации» в администрировании), либо любым просмотрщиком SQLite: внутри обычная база SQLite.

Типичная ситуация: сервер упал ночью, базу уже подняли, а директор спрашивает, кто и когда удалил документ. Или файл базы скопировали на другой компьютер, 1С там нет, а в журнале нужна одна запись. Ниже — все рабочие способы от простого к тому, что требует чуть больше возни.

Что внутри LGD и откуда он взялся

Раньше журнал хранился в текстовом формате: файл 1Cv8.lgf (справочники кодов) и набор *.lgp (сами события). Новые версии платформы 8.3 умеют вести журнал в формате lgd. Это одна SQLite-база, в которой записи лежат в таблицах.

Что это даёт на практике:

  • 🗂 один файл вместо десятков lgp;
  • ⚡ запросы по дате, пользователю и событию работают быстрее, чем перебор текстовых файлов;
  • 🔓 прочитать его можно сторонним инструментом, не запуская 1С.

Где искать файл:

Тип базыГде лежит журнал
Файловаяпапка 1Cv8Log внутри каталога базы, рядом с 1Cv8.1CD
Клиент-сервернаякаталог кластера на сервере: reg_<порт>\<идентификатор базы>\1Cv8Log

Если в 1Cv8Log вместо lgd лежат lgf и lgp, база ведёт журнал в старом формате. Эти файлы текстовые, но открывать их руками — занятие на любителя: коды пользователей и событий хранятся отдельно.

Не копируйте 1Cv8.lgd в рабочую папку, пока 1С пишет в него события. Скопируйте файл целиком (вместе с файлами -wal и -shm, если они есть) или сначала остановите работу с базой, иначе получите неполную копию.

Штатный способ: смотреть журнал из самой 1С

Если доступ к базе есть, ничего больше не нужно. Платформа сама читает и lgd, и lgp.

  1. Запустите базу в режиме «Предприятие» под пользователем с правом просмотра журнала (обычно это администратор).
  2. Откройте раздел «Администрирование» и найдите пункт «Журнал регистрации». Если интерфейс другой, наберите «Журнал регистрации» в поиске по командам.
  3. Задайте отбор: интервал дат, пользователь, событие, уровень (ошибка, предупреждение, информация).
  4. Нажмите «Показать» или «Обновить» и откройте нужную строку двойным щелчком — в карточке видны данные, представление и подробный комментарий.

Хороший приём: сначала отберите только уровень «Ошибка» и узкий интервал около сбоя. Журнал за месяц на загруженной базе содержит миллионы строк, и без отбора форма будет долго строиться.

Открыть чужой журнал в своей базе

Бывает, что на руках только копия каталога 1Cv8Log от другой базы. Штатно подключить её к своей базе нельзя: журнал привязан к информационной базе. Здесь и нужны внешние инструменты из следующих разделов.

Открываем LGD как SQLite-базу

Раз формат — SQLite, подойдёт любой просмотрщик. Самый частый выбор — бесплатный DB Browser for SQLite. Подходят также DBeaver, SQLiteStudio и консольный sqlite3.

Порядок работы:

  1. Сделайте копию 1Cv8.lgd и работайте только с копией.
  2. В программе выберите «Открыть базу данных» и укажите копию. Для безопасности включите режим «только чтение», если он есть.
  3. Перейдите на вкладку со списком таблиц.

Основные таблицы, которые вам понадобятся:

ТаблицаЧто хранит
EventLogсами события: дата, уровень, сеанс, комментарий, данные
UserCodesсправочник пользователей (код → имя)
ComputerCodesсправочник компьютеров
AppCodesсправочник приложений (тонкий клиент, фоновое задание и т. д.)
EventCodesсправочник названий событий
MetadataCodesсправочник объектов метаданных

В EventLog пользователь, компьютер и событие записаны числовыми кодами. Чтобы получить читаемый результат, таблицы нужно соединять.

Пример запроса

Последние 50 ошибок с именем пользователя и названием события:

SELECT e.rowID,
       e.date,
       u.name  AS user_name,
       c.name  AS computer,
       ev.name AS event_name,
       e.comment
FROM EventLog e
LEFT JOIN UserCodes     u  ON u.code  = e.userCode
LEFT JOIN ComputerCodes c  ON c.code  = e.computerCode
LEFT JOIN EventCodes    ev ON ev.code = e.eventCode
WHERE e.severity = 4
ORDER BY e.rowID DESC
LIMIT 50;

Значение уровня (severity) и точные имена колонок могут отличаться в разных релизах платформы. Если запрос ругается на колонку, откройте структуру EventLog во вкладке со схемой и подставьте реальные имена.

Дата в EventLog хранится числом, а не привычной строкой. В выгрузках платформы это обычно количество долей секунды от начала нашей эры. Не пугайтесь «странных» значений: для отбора по периоду проще сначала найти нужные rowID вручную, а потом работать по ним.

Не выполняйте в журнале UPDATE, DELETE и VACUUM на рабочем файле. Платформа может перестать его читать, а для разбора инцидента журнал нужен целым.

Выгрузка в XML и «читаемый» вид

Если в базе настроен просмотр, но искать в нём неудобно, выгрузите нужный срез и откройте в редакторе или Excel.

  1. В форме журнала задайте отбор.
  2. Используйте команду выгрузки журнала в файл (меню «Все действия» или кнопка в командной панели формы, название зависит от релиза).
  3. Выберите формат: XML или текстовый.
  4. Откройте результат в любом редакторе: Notepad++, VS Code, Excel.

Выгрузка по отбору — самый безболезненный способ передать журнал разработчику или администратору. Файл получается небольшим, в нём нет лишних событий.

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

Сторонние программы и просмотр старых LGP

Для формата lgd хватает SQLite-просмотрщика. Для старого lgf/lgp пригодятся специальные утилиты. Самая известная — LogReader (Log Reader): она читает оба формата и умеет переводить журнал в SQL-базу или в удобный список.

Что умеет такая программа:

  • 🔍 фильтровать по любому полю и сохранять наборы отборов;
  • 📤 выгружать в таблицу, в SQL, в XML;
  • 📊 строить статистику по пользователям и событиям.

Возможности и условия лицензии зависят от конкретной сборки и версии. Проверяйте, что скачиваете программу с сайта разработчика: журнал содержит имена пользователей и данные о доступе, и отдавать его неизвестной утилите нежелательно.

Чистый текстовый редактор или HEX-просмотрщик для lgd не подойдёт. Файл бинарный, а название таблиц и колонок вы увидите, но данные в строках разобрать вручную нереально. Редактор годится лишь для старых lgp, и то чтобы убедиться, что файл не пуст.

Что искать в журнале, когда файл уже открыт

Открыть файл — половина дела. Дальше нужно понять, какие записи относятся к вашему случаю. Несколько типовых задач и подход к каждой.

Кто удалил или изменил документ

Отберите события по данным: «Данные. Удаление» и «Данные. Изменение», затем сузьте по интервалу и объекту метаданных. В карточке записи видно пользователя, компьютер и представление объекта. Если пользователь работал через общую учётную запись, виновного по журналу не найти, поэтому у каждого сотрудника должен быть свой вход.

Почему сеанс завершился с ошибкой

Найдите время сбоя в сообщении пользователя и возьмите запас в 10 минут в обе стороны. Отбор по уровню «Ошибка» и по номеру сеанса обычно оставляет десяток строк. Нужная — та, где в комментарии стоит текст исключения. Его же можно искать поиском по подстроке в запросе: WHERE e.comment LIKE '%блокировк%'.

Кто и когда заходил в базу

События аутентификации и начала сеанса показывают вход, приложение и компьютер. Для проверки подозрительного доступа отберите вход вне рабочего времени и сравните имя компьютера со списком штатных рабочих мест.

Сколько места занимает журнал и что в нём лишнее

Посчитайте записи по событиям:

SELECT ev.name, COUNT(*) AS cnt
FROM EventLog e
JOIN EventCodes ev ON ev.code = e.eventCode
GROUP BY ev.name
ORDER BY cnt DESC
LIMIT 20;

Если первые строки — массовые информационные события, смело снижайте уровень записи для этих типов. Журнал станет компактнее, а открываться будет быстрее.

Настройка журнала: чтобы потом было что читать

Сначала простая проверка: сколько файл занимает и за какой период хранит. Большой lgd на несколько гигабайт открывается медленно в любом инструменте.

Что стоит настроить:

  1. ✅ Уровень событий. Не нужно писать все «информационные» записи по каждому проведению, если достаточно ошибок и входов в систему.
  2. ✅ Период хранения. Старые записи лучше раз в месяц выгружать в архив и очищать, чтобы файл не рос бесконечно.
  3. ✅ Разделение по времени. Для больших баз разумно хранить журнал отдельными периодами.
  4. ✅ Место на диске. Журнал на системном разделе рядом с базой может съесть всё свободное место.

Параметры ведения журнала для файловой базы находятся в настройках самой базы (раздел администрирования, пункт про журнал регистрации). Для клиент-серверной базы часть параметров задаётся на уровне кластера, ими занимается администратор сервера.

Прежде чем чистить или переносить журнал, сделайте копию. Это единственное место, где остаётся история входов, удалений и ошибок.

Короткий чек-лист перед разбором инцидента

Подготовка к разбору журнала
Выполнено: 0 / 5

Какой способ выбрать и что делать, если файл не открывается

Подсказка по ситуации:

Что у вас на руках?

Типичные сбои при открытии

Главные причины и решения:

СимптомПричинаЧто делать
database is lockedфайл занят работающей 1С или резервным копированиемработайте с копией, остановите процесс, который держит файл
file is not a databaseв 1Cv8Log лежит lgp или повреждённый файлпроверьте расширение, сравните размер с соседними файлами
В EventLog нет свежих записейзапись идёт в -wal и не сброшена в основной файлкопируйте файл вместе с -wal и -shm
Таблицы есть, но пустыежурнал недавно очищали или включён другой уровеньпроверьте период хранения и настройки уровня
Форма журнала в 1С строится очень долгонет отбора, файл огромныйсузьте даты, добавьте отбор по пользователю
Кракозябры в комментарияхневерная кодировка просмотрщикавыберите UTF-8, у старых просмотрщиков проверьте настройки

Если журнал повреждён (после сбоя питания, аварийного отключения), SQLite-утилиты часто могут вытащить часть данных командой .recover в sqlite3. Делайте это только на копии.

Частые вопросы

Можно ли открыть lgd в Excel напрямую?
Нет, это база SQLite, а не таблица. Откройте её в SQLite-просмотрщике и выгрузите результат запроса в CSV, а CSV уже откроется в Excel. Либо выгрузите срез из самой 1С.
Чем lgd отличается от lgf и lgp?
lgf и lgp — старый формат: справочник и файлы событий. lgd — один файл-база SQLite. Платформа читает оба формата.
Можно ли удалить 1Cv8.lgd, чтобы освободить место?
Технически да, 1С создаст журнал заново, но вся история пропадёт. Лучше сначала выгрузить нужное в архив, затем очистить журнал средствами платформы.
Безопасно ли открывать lgd на чужом компьютере?
Сам по себе файл не опасен, но в нём имена пользователей, компьютеры и текст ошибок. Передавайте его только тем, кому доступна эта информация по регламенту.
Работает ли просмотр, если на компьютере нет 1С?
Да. SQLite-просмотрщик не зависит от платформы. Вы увидите данные, но не получите форму журнала с готовыми отборами и расшифровками.