Файл 1Cv8.lgd: где лежит журнал регистрации и как найти в нём ошибку
Содержание
Файл 1Cv8.lgd открывают средствами самой 1С: в рабочей базе это Администрирование → Обслуживание → Журнал регистрации (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) или Администрирование → Журнал регистрации в Конфигураторе. Двойной щелчок по файлу в проводнике ничего не даст: у .lgd нет программы-просмотрщика, это база данных SQLite, которую платформа читает сама.
Если файл пришёл с чужого компьютера или сервера, есть два пути. Первый — подложить его в пустую файловую базу и открыть журнал там. Второй — открыть его любым SQLite-браузером и выполнить запрос. Первый способ проще и показывает события в привычном виде, второй быстрее на журналах в десятки гигабайт. Механизм журнала принадлежит платформе 8.3, поэтому всё сказанное ниже одинаково для любой конфигурации.
Что за файл .lgd и в какой папке его искать
Журнал регистрации — это протокол событий базы: кто вошёл, какой документ записал, какая ошибка случилась у пользователя. Платформа хранит его в папке 1Cv8Log.
Два формата журнала
| Формат | Файлы в папке 1Cv8Log | Как устроен |
|---|---|---|
| SQLite | 1Cv8.lgd | одна база SQLite, быстрый отбор, можно читать SQL-запросом |
| Последовательный (старый) | 1Cv8.lgf + файлы *.lgp | текстовые файлы: словарь в .lgf, события в .lgp по периодам |
Формат SQLite появился в платформе 8.3.5. Какой формат у вашей базы, видно по содержимому папки: есть 1Cv8.lgd — значит, SQLite. Открывается журнал одинаково в обоих случаях, разница важна только для чтения без 1С.
Где лежит 1Cv8Log
- 📁 Файловая база — внутри каталога базы, рядом с
1Cv8.1CD:<каталог базы>\1Cv8Log\1Cv8.lgd. Каталог виден в списке баз при запуске 1С, в нижней строке под выделенной базой. - 🖥 Клиент-серверная база
— на рабочем сервере 1С:
<каталог srvinfo>\reg_1541\<GUID базы>\1Cv8Log\. При установке по умолчанию на Windows этоC:\Program Files\1cv8\srvinfo\reg_1541\. - 🔎 GUID базы в клиент-серверном варианте проще всего узнать в консоли администрирования серверов 1С: в свойствах информационной базы. Другой способ — отсортировать подпапки
reg_1541по дате изменения: у активной базы журнал меняется каждые несколько минут.
Если в reg_1541 десятки папок с GUID, откройте файл 1CV8Clst.lst в той же папке обычным блокнотом. В нём перечислены базы кластера с их именами и идентификаторами. Файл служебный: только смотрите, ничего не меняйте.
Как открыть журнал регистрации в самой 1С
В пользовательском режиме
- Запустите базу под пользователем с правами администратора.
- Откройте
Администрирование → Обслуживание. - В группе команд для администратора выберите «Журнал регистрации».
Если раздела «Администрирование» нет или в нём не видно команды, используйте универсальный путь: Главное меню → Все функции → Стандартные → Журнал регистрации. Пункт «Все функции» включается в Главное меню → Сервис → Параметры флажком «Отображать команду “Все функции”».
В Конфигураторе
Откройте базу в режиме Конфигуратора и выберите Администрирование → Журнал регистрации. Здесь журнал виден даже тогда, когда конфигурация не запускается в пользовательском режиме из-за ошибки. Это частый случай: база падает при старте, а причину нужно найти именно в журнале.
Чужой файл .lgd: через пустую базу
Так поступают, когда журнал прислали из другой организации или сняли с сервера, к которому у вас нет доступа.
- Создайте новую пустую файловую базу без конфигурации (в списке баз: «Добавить» → «Создание новой информационной базы» → «Создание информационной базы без конфигурации»).
- Запустите её один раз в Конфигураторе и закройте. Платформа создаст папку
1Cv8Log. - Скопируйте в эту папку присланный
1Cv8.lgdс заменой. Для старого формата копируйте1Cv8.lgfи все*.lgpвместе. - Откройте пустую базу в Конфигураторе и выберите
Администрирование → Журнал регистрации.
События отобразятся полностью: пользователи, компьютеры, комментарии и названия объектов хранятся в самом журнале. Перейти по ссылке к документу не получится — документа в пустой базе нет.
Не копируйте 1Cv8.lgd прямо из папки работающей базы в разгар дня. SQLite-файл в момент записи может попасть в копию в несогласованном виде. Снимайте копию в часы низкой нагрузки или берите файл из резервной копии.
Поиск ошибки: отборы в журнале регистрации
Журнал крупной базы содержит миллионы строк. Без отбора форма открывается долго, а нужная запись теряется. Поэтому первым делом задайте отбор — командой «Установить отбор» или «Отбор» в командной панели формы.
Что ставить в отбор при поиске ошибки:
- 📅 Интервал — от начала смены, когда пользователь увидел сообщение, до текущего момента. Узкий интервал ускоряет форму в разы.
- 🔴 Важность — оставьте только «Ошибка». Предупреждения и информация на первом проходе мешают.
- 👤 Пользователь — если сбой у конкретного сотрудника.
- 📄 Метаданные — если ошибка возникает при записи одного вида документа.
Дальше откройте строку двойным щелчком. В поле «Комментарий» лежит полный текст исключения, вместе со стеком вызовов модулей. Именно его пересылают программисту: по стеку видно, в каком модуле и строке упал код.
Какие события смотреть в первую очередь:
| Событие | Что обычно означает |
|---|---|
Сеанс. Аутентификация (ошибка) | неверный пароль или вход пользователя без прав |
Данные. Изменение / Данные. Удаление | кто и когда менял или удалял объект |
Данные. Проведение | кто провёл документ |
Сеанс. Начало / Сеанс. Завершение | когда пользователь заходил в базу |
Ищете, кто удалил документ, — отбирайте по событию «Данные. Удаление» и по метаданным нужного вида документа. Ссылка на удалённый объект в журнале останется, а в поле «Представление данных» будет видно, какой это был документ.
Настройка журнала регистрации: уровни и разделение по периодам
Если в журнале не оказалось нужной записи, первым делом проверьте настройку. Её меняют в Конфигураторе: Администрирование → Настройка журнала регистрации.
Уровень регистрации
Платформа предлагает несколько вариантов: от «Не регистрировать» до регистрации всех событий. Сколько событий попадёт в журнал, определяет выбранный уровень.
| Уровень | Что попадает в журнал | Когда выбирать |
|---|---|---|
| Ошибки | только сбои | слабый сервер, огромный поток записей |
| Ошибки и предупреждения | сбои и предупреждения | компромисс для небольших баз |
| Ошибки, предупреждения и информация | плюс сведения о входах, проведении, изменениях | рабочий вариант для большинства баз |
| Все события | плюс примечания | разбор конкретной проблемы на короткое время |
С уровнем «Ошибки» вы не узнаете, кто удалил документ: изменения данных регистрируются как информационные события. Поэтому для учётных баз ставят хотя бы уровень с информацией.
Разделение журнала по периодам
В той же форме задаётся разделение журнала на файлы по периодам. Для SQLite-журнала это главный рычаг против разрастания: один 1Cv8.lgd за несколько лет вырастает до десятков гигабайт, открывается минутами и тормозит запись.
Сокращение журнала
Там же есть команда сокращения журнала: события до выбранной даты удаляются, а при желании сохраняются в отдельный файл. Сохраняйте удаляемую часть в файл, если журнал может понадобиться для проверки или служебного разбора: восстановить удалённые записи без резервной копии нельзя.
Как открыть .lgd без 1С: SQLite-браузер и внешние обработки
SQLite-браузер
1Cv8.lgd — обычный файл SQLite. Его открывает любой просмотрщик SQLite, например бесплатный DB Browser for SQLite. Работайте только с копией файла: так вы не заблокируете журнал работающей базы.
Внутри файла таблица событий и набор справочников с кодами: пользователи, компьютеры, приложения, события, метаданные. В таблице событий хранятся не имена, а коды, поэтому для читаемого результата нужны соединения. Пример: двадцать самых частых событий в журнале.
SELECT e.name AS event, COUNT(*) AS cnt
FROM EventLog AS l
JOIN EventCodes AS e ON e.code = l.eventCode
GROUP BY e.name
ORDER BY cnt DESC
LIMIT 20;
Дата в таблице хранится числом: десятитысячными долями секунды от 1 января 0001 года. Перевести её в обычное время можно так:
SELECT datetime(l.date / 10000 - 62135596800, 'unixepoch') AS dt,
l.comment
FROM EventLog AS l
WHERE l.comment LIKE '%Ошибка%'
ORDER BY l.date DESC
LIMIT 100;
Время получится в той зоне, в которой его записал сервер. Если имена таблиц или колонок в вашей версии платформы отличаются, сверьтесь со вкладкой структуры базы в браузере: там видны все таблицы и поля.
Внешние обработки
Для анализа без SQL используют внешние обработки (.epf). Их открывают через Главное меню → Файл → Открыть. Такие обработки умеют группировать события по пользователям и часам, искать повторяющиеся ошибки, строить сводные таблицы.
Внутри почти любой такой обработки работает один и тот же метод платформы, о котором ниже. Поэтому перед запуском стороннего .epf в рабочей базе просмотрите его код в Конфигураторе: обработка выполняется с правами вашего пользователя.
Технологический журнал: когда журнала регистрации мало
Журнал регистрации отвечает на вопрос «что сделал пользователь и какая ошибка вышла». Он не покажет, почему документ проводится 40 секунд, где взаимная блокировка и почему падает рабочий процесс. Для этого есть технологический журнал.
| Журнал регистрации | Технологический журнал | |
|---|---|---|
| Включён | всегда, по умолчанию | только по настройке |
| Файлы | 1Cv8.lgd или .lgf/.lgp | текстовые *.log по часам |
| Что пишет | действия пользователей, ошибки прикладного уровня | запросы к СУБД, блокировки, исключения процессов, вызовы сервера |
| Кто читает | бухгалтер-администратор, аудитор | администратор сервера, программист |
Технологический журнал включают файлом logcfg.xml в каталоге conf платформы. В файле указывают папку для логов, срок хранения в часах и события: например, EXCP (исключения), DBMSSQL (запросы к MS SQL), TLOCK (управляемые блокировки). Пример для сбора исключений:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\1c_techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Логи раскладываются по подпапкам процессов, файл на каждый час. Платформа подхватывает изменения logcfg.xml сама, перезапуск не нужен.
Технологический журнал без фильтров по событиям за час набирает гигабайты и нагружает диск. Включайте его на время разбора проблемы, ограничивайте history и выключайте, удалив файл или блок <log>, когда причина найдена.
Выгрузка и автоматизация анализа журнала регистрации
Когда журнал нужно регулярно проверять или передавать аудитору, ручной просмотр не масштабируется. В платформе для этого есть метод ВыгрузитьЖурналРегистрации. Он выгружает события в таблицу значений или в XML-файл, с отбором по датам, уровню, пользователю и событию. Необязательным параметром можно передать имя файла журнала — так читают чужой 1Cv8.lgd, не подкладывая его в базу.
Пример: ошибки за последние сутки — в таблицу значений с выводом в сообщения.
&НаСервере
Процедура ОшибкиЗаСуткиНаСервере()
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", ТекущаяДатаСеанса() - 86400);
Отбор.Вставить("ДатаОкончания", ТекущаяДатаСеанса());
Отбор.Вставить("Уровень", УровеньЖурналаРегистрации.Ошибка);
События = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(События, Отбор);
Для Каждого Строка Из События Цикл
Сообщить(Формат(Строка.Дата, "ДФ='dd.MM.yyyy HH:mm'") + " | "
+ Строка.ИмяПользователя + " | " + Строка.Комментарий);
КонецЦикла;
КонецПроцедуры
Что из этого вырастает на практике:
- 📨 Ежедневная сводка — регламентное задание раз в сутки собирает ошибки и отправляет администратору письмом.
- 📊 Выгрузка в Excel — таблицу значений выводят в табличный документ и сохраняют в
.xlsxдля аудитора. - 🔁 Контроль удалений — отбор по событию удаления данных за неделю показывает, кто чистил справочники.
Для больших журналов метод без отбора по датам работает долго и занимает много памяти. Всегда ограничивайте интервал и, если нужно, количество записей.