Копия журнала регистрации 1С: где лежат файлы и как перенести их без потерь

· 9 мин

Содержание

Чтобы скопировать журнал регистрации 1С 8.3, скопируйте папку 1Cv8Log целиком. В файловой базе она лежит в каталоге самой базы, в клиент-серверной — на сервере 1С в srvinfo\reg_1541\<GUID базы>\1Cv8Log. Если нужна не вся история, а события за период, выгрузите их в XML из формы журнала с отбором по датам.

Обычно журнал копируют в трёх случаях: базу переносят на другой сервер и не хотят терять историю, журнал разросся и его надо архивировать перед сокращением, или идёт разбор инцидента и события нужно отдать на анализ. Ниже — все три сценария, с путями, командами и проверкой результата.

Как устроено хранение журнала регистрации в 1С 8.3

Журнал регистрации — это не часть базы данных. Он хранится отдельными файлами рядом с ней. Отсюда главное следствие:

  • 📦 выгрузка в .dt журнал не содержит;
  • 🗄️ резервная копия SQL-базы (MS SQL, PostgreSQL) журнал не содержит;
  • 📁 копия каталога файловой базы содержит журнал, только если вы скопировали и подпапку 1Cv8Log.

Внутри 1Cv8Log вы увидите файлы одного из двух форматов.

ФорматФайлыКак устроен
Новый (SQLite)1Cv8.lgdОдна база SQLite со всеми событиями
Старый (последовательный)1Cv8.lgf + много *.lgp1Cv8.lgf — словарь (пользователи, компьютеры, объекты метаданных), *.lgp — сами события, по файлу на период

Платформа понимает, какой формат использовать, по тому, какой файл лежит в папке. Есть 1Cv8.lgd — пишет в SQLite. Есть 1Cv8.lgf — пишет последовательными файлами.

В старом формате файлы *.lgp без 1Cv8.lgf бесполезны. В них хранятся не имена пользователей и объектов, а ссылки на словарь. Копируйте 1Cv8.lgf всегда вместе с .lgp, иначе журнал откроется пустым или с «неизвестными» пользователями.

Где искать папку 1Cv8Log

Файловая база. Откройте список баз, выделите нужную, нажмите «Изменить» — в строке подключения будет каталог. В нём рядом с файлом 1Cv8.1CD лежит папка 1Cv8Log.

Клиент-серверная база . Журнал пишет сервер 1С, поэтому папка находится на машине с рабочим процессом, а не на SQL-сервере. Пути по умолчанию для службы, установленной штатным инсталлятором:

ОС сервераКаталог
WindowsC:\Program Files\1cv8\srvinfo\reg_1541\<GUID базы>\1Cv8Log
Linux/home/usr1cv8/.1cv8/1C/1cv8/reg_1541/<GUID базы>/1Cv8Log

Если при установке каталог srvinfo меняли, его путь виден в параметрах запуска службы агента сервера (ключ -d). Число 1541 — порт менеджера кластера; при нестандартном порте имя папки будет другим.

Как узнать GUID базы

Папок с GUID в reg_1541 столько же, сколько баз в кластере. Чтобы найти нужную:

  1. Выполните на сервере rac cluster list и возьмите идентификатор кластера.
  2. Выполните rac infobase summary list --cluster=<id кластера>.
  3. В выводе у каждой базы есть поле infobase (это GUID) и поле name. Найдите строку с именем вашей базы.

Без rac подойдёт файл 1CV8Clst.lst в той же папке reg_1541: в нём рядом с каждым именем базы записан её GUID. Открывайте его только на чтение.

Подготовка: права и место на диске перед копированием журнала

До копирования проверьте три вещи.

  • 🔑 Права в ОС. Служба сервера 1С работает от отдельной учётной записи (по умолчанию USR1CV8). Папки srvinfo по умолчанию доступны ей и администраторам. Копировать нужно под учёткой с правами администратора сервера или выдать себе чтение на нужную папку.
  • 👤 Права в 1С. Для выгрузки через интерфейс пользователю нужно право «Журнал регистрации» — оно есть у роли полных прав. Обычный бухгалтер журнал не откроет.
  • 💾 Место. Журнал активной базы за пару лет легко вырастает до десятков гигабайт. Посмотрите размер 1Cv8Log заранее и проверьте, что на целевом диске места с запасом.

Ещё один момент — что именно нужно: полный журнал или события за период. Полная копия — это файлы. Выборка по датам, пользователю или событию — это выгрузка в XML.

Способ 1. Выгрузка журнала регистрации в XML средствами платформы

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

  1. В режиме 1С:Предприятие откройте журнал. В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11): Администрирование → Обслуживание → Журнал регистрации. Универсальный путь: Главное меню → Все функции → Стандартные → Журнал регистрации.
  2. Если пункта «Все функции» нет, включите его: Главное меню → Сервис → Параметры → Отображать команду «Все функции».
  3. Задайте отбор: период, пользователи, события, уровень важности. Без отбора выгрузка всего журнала может идти долго и дать огромный файл.
  4. В стандартной форме журнала найдите в командной панели или в меню «Ещё» команду выгрузки журнала в файл и укажите путь для .xml.

Тот же результат даёт встроенный язык. Код ниже выполняется на сервере и сохраняет события за вчерашний день:

&НаСервере
Процедура ВыгрузитьЖурналЗаВчера()

    Вчера = ТекущаяДатаСеанса() - 86400;

    Отбор = Новый Структура;
    Отбор.Вставить("ДатаНачала", НачалоДня(Вчера));
    Отбор.Вставить("ДатаОкончания", КонецДня(Вчера));

    ИмяФайла = "D:\LogArchive\ЖР_" + Формат(Вчера, "ДФ=yyyyMMdd") + ".xml";
    ВыгрузитьЖурналРегистрации(ИмяФайла, Отбор);

КонецПроцедуры

Путь D:\LogArchive — это диск сервера 1С, а не компьютера пользователя. Папка должна существовать, и у учётки службы должно быть право записи в неё.

XML удобен для анализа сторонними средствами, но обратно в журнал другой базы его не загрузить. Для переноса истории на новый сервер нужен способ с файлами.

Способ 2. Копирование журнала регистрации на клиент-серверной базе

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

Старый формат (.lgf/.lgp)

  1. Скопируйте все *.lgp, кроме самого свежего по дате изменения — он сейчас открыт на запись.
  2. Скопируйте 1Cv8.lgf.
  3. Последний .lgp скопируйте в момент без активности пользователей (ночью) или после остановки службы.

Закрытые .lgp за прошлые периоды больше не меняются, их можно копировать в любое время.

Новый формат (.lgd)

Файл SQLite надёжнее копировать не проводником, а штатной командой SQLite. Она делает согласованный снимок даже при работающей записи:

sqlite3.exe "C:\Program Files\1cv8\srvinfo\reg_1541\<GUID>\1Cv8Log\1Cv8.lgd" ".backup 'D:\LogArchive\1Cv8.lgd'"

Утилиту sqlite3 скачивают с сайта проекта SQLite, на сервер 1С она не ставится сама. Работайте только с копией: открывать рабочий 1Cv8.lgd в сторонних редакторах на запись нельзя.

Почему не через SQL

Частый запрос — «скопировать журнал средствами SQL». На платформе 8.3 это не сработает: в таблицах базы на MS SQL или PostgreSQL событий журнала нет. Бэкап SQL сохраняет данные, а журнал нужно забирать с сервера 1С отдельно, файлами.

Перенос журнала на другой сервер

Сценарий: базу переносят на новый кластер, история изменений нужна там же.

  1. Создайте базу на новом кластере и загрузите данные (бэкап SQL или .dt).
  2. Найдите GUID новой базы — он другой, чем на старом сервере.
  3. Предупредите пользователей и остановите службу агента сервера 1С на новом сервере. Все сеансы на этом сервере при остановке службы оборвутся — делайте это вне рабочего времени.
  4. Замените содержимое reg_1541\<новый GUID>\1Cv8Log скопированными файлами старого журнала.
  5. Проверьте, что у учётки службы есть права на новые файлы, и запустите службу.

Формат при переносе сохраняется: какой файл вы положили, так платформа и будет писать.

Способ 3. Копирование журнала регистрации файловой базы

С файловой базой проще: журнал лежит в <каталог базы>\1Cv8Log, и пишет в него сам клиент 1С.

  1. Попросите всех выйти из базы. Проверить, что никто не остался, можно в Конфигураторе: Администрирование → Активные пользователи.
  2. Скопируйте папку 1Cv8Log целиком в архив или в каталог новой базы.
  3. Если копируете в другую файловую базу , сначала закройте и её, затем замените в ней папку 1Cv8Log.

Когда файловую базу переносят копированием всего каталога, журнал переезжает вместе с ней автоматически. Отдельно его копировать нужно только при переносе через .dt.

Как открыть и проверить скопированный журнал

Скопированный журнал удобнее всего смотреть в отдельной пустой файловой базе — так вы не затронете рабочую.

  1. Создайте новую пустую файловую базу без конфигурации.
  2. Закройте её, удалите в её каталоге папку 1Cv8Log, положите на её место скопированную.
  3. Откройте базу в Конфигураторе: Администрирование → Журнал регистрации.

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

Диагностика: выберите симптом

Проверка целостности и восстановление .lgd

Для файла SQLite есть встроенная проверка. Работайте с копией, не с рабочим файлом:

sqlite3.exe D:\LogArchive\1Cv8.lgd "PRAGMA integrity_check;"

Ответ ok — файл цел. Любой другой ответ — повреждение. Тогда можно попытаться вытащить уцелевшие данные в новый файл (команда .recover есть в свежих версиях sqlite3):

sqlite3.exe D:\LogArchive\1Cv8.lgd ".recover" | sqlite3.exe D:\LogArchive\1Cv8_recovered.lgd

Полного результата это не гарантирует: часть событий может пропасть. Если повреждён рабочий журнал на сервере, порядок такой: остановить службу в нерабочее время (сеансы оборвутся), перенести повреждённый файл в архив и запустить службу — платформа начнёт новый журнал. Историю потом смотрите по восстановленной копии.

Для старого формата инструмента восстановления нет. Повреждённый .lgp обычно теряет только свой период, а вот без исправного 1Cv8.lgf нечитаемым становится весь набор. Поэтому словарь стоит архивировать регулярно.

Автоматическое архивирование журнала регистрации

Ручное копирование забывается. Настройте его по расписанию — Планировщик заданий Windows или cron в Linux.

Старый формат: robocopy. Скрипт копирует новые и изменённые файлы, уже скопированные пропускает:

@echo off
set SRC=C:\Program Files\1cv8\srvinfo\reg_1541\<GUID>\1Cv8Log
set DST=\\backup\1c-logs\buh
robocopy "%SRC%" "%DST%" *.lgf *.lgp /XO /R:2 /W:5 /NP /LOG+:"%DST%\copy.log"

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

Средствами 1С — регламентное задание в расширении, которое раз в сутки вызывает процедуру выгрузки в XML из способа 1. Удобно, если нужен архив событий в читаемом виде, без доступа к файлам сервера.

Архив перед сокращением журнала

Большой журнал замедляет его просмотр, и его периодически сокращают. В Конфигураторе это Администрирование → Настройка журнала регистрации: там же задаётся уровень регистрации событий и есть кнопка сокращения журнала. При сокращении платформа предлагает сохранить удаляемые события в отдельный файл — не отказывайтесь от этого, если история может понадобиться при проверке или разборе инцидента.

Регламент архивирования журнала
Выполнено: 0 / 7

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

Сохраняется ли журнал регистрации в выгрузке .dt?
Нет. Файл .dt содержит только данные и конфигурацию. Журнал переносится отдельно, копированием папки 1Cv8Log.
Можно ли объединить журналы двух баз в один?
Штатного механизма нет. Каждый журнал привязан к своему словарю. Для совместного анализа выгрузите оба в XML и сводите данные внешними средствами.
Как перейти со старого формата журнала на SQLite?
Остановите службу сервера в нерабочее время (сеансы оборвутся), перенесите содержимое 1Cv8Log в архив и положите в пустую папку пустой файл 1Cv8.lgd. Старую историю смотрите по архивной копии.
Почему на копию журнала уходит так много места?
Скорее всего, включена регистрация всех событий, а журнал ни разу не сокращали. Уровень регистрации и сокращение настраиваются в Конфигураторе, в настройке журнала регистрации.
Нужно ли копировать журнал, если у меня есть бэкап SQL?
Да, если история действий пользователей важна. Бэкап SQL журнала не содержит, его надо архивировать отдельным заданием.