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

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При миграции информационной базы 1С из файлового режима работы в клиент-серверный вариант администраторы часто сталкиваются с тем, что стандартная выгрузка и загрузка через файл выгрузки данных .dt не переносит историю событий. Журнал регистрации (ЖР) хранится отдельно от таблиц конфигурации и данных СУБД, поэтому его перенос требует выполнения отдельных шагов.

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

Особенности хранения журнала регистрации в платформе 1С

В платформе 1С:Предприятие 8 журнал регистрации может храниться в двух форматах:

  1. Старый раздельный формат: набор файлов с расширениями .elf, .log, .eld, разделенных по периодам.
  2. Новый единый формат (SQLite): файл базы данных 1Cv8.lgd (а также сопутствующие временные файлы 1Cv8.lgd-wal, 1Cv8.lgd-shm, 1Cv8.lgd-journal).

В файловой информационной базе каталог журнала регистрации 1Cv8Log находится непосредственно внутри папки самой базы (рядом с файлом 1Cv8.1CD).

В серверном варианте журнал располагается в каталоге данных кластера серверов 1С (по умолчанию для 64-разрядной службы Windows путь выглядит как C:\Program Files\1cv8\srvinfo\reg_1541\<GUID_Информационной_Базы>\1Cv8Log\).

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

Поскольку на сервере каталоги баз именуются уникальными идентификаторами (GUID/UUID), проанализируем способы быстрого определения нужного каталога, чтобы не искать его вручную среди множества папок:

  1. Через файл списка баз кластера: перейдем в каталог кластера (например, ...\srvinfo\reg_1541) и откроем текстовым редактором файл 1CV8Clst.lst. Найдем по имени базы строку Name="Имя_Базы" и скопируем соответствующий параметр ID="...".
  2. Через консоль администрирования серверов 1С: откроем ветку Информационные базы, найдем целевую базу и откроем ее свойства, где отображается внутренний идентификатор базы данных.
  3. С помощью утилиты rac: выполним команду консольного администрирования rac infobase --cluster=<ID_Кластера> summary list для получения списка баз с их UUID.

Способ 1. Прямой перенос каталога журнала регистрации

Разберем по шагам наиболее быстрый способ переноса, когда форматы журнала в исходной и целевой базах совпадают.

  1. Остановка процессов и освобождение блокировок: завершим все пользовательские и фоновые сеансы в файловой и серверной базах. Рекомендуется временно остановить службу сервера 1С (1C:Enterprise 8.3 Server Agent), чтобы снять файловые блокировки с 1Cv8.lgd.
  2. Копирование файлов: скопируем все содержимое каталога 1Cv8Log из папки файловой базы в целевой каталог ...\srvinfo\reg_1541\<GUID_Базы>\1Cv8Log\ на сервере.
  3. Настройка прав доступа операционной системы: это критически важный шаг. Пользователю ОС, от имени которого запущена служба сервера 1С (например, usr1cv8), необходимо предоставить полные права (чтение, запись, изменение) на папку 1Cv8Log и все вложенные файлы. В ОС Linux скорректируем владельца каталога командой:
    
    chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/<GUID_Базы>/1Cv8Log
    
  4. Запуск службы: запустим службу сервера 1С и проверим журнал регистрации через меню Администрирование — Обслуживание — Журнал регистрации в клиентском приложении.

Способ 2. Конвертация форматов журнала утилитой logconvert

Если файловая база использовала старый формат журнала (набор файлов .elf), а серверная база настроена на новый формат (1Cv8.lgd), или наоборот, простое копирование не приведет к результату. В этом случае воспользуемся штатной консольной утилитой logconvert, которая находится в каталоге bin установленной платформы 1С.

Рассмотрим синтаксис команд для преобразования журнала:

  1. Преобразование из старого формата (.elf) в новый формат SQLite (.lgd):
    
    "C:\Program Files\1cv8\8.3.XX.XXXX\bin\logconvert.exe" -d "C:\BaseFolder\1Cv8Log" -v 2
    
  2. Преобразование из нового формата (.lgd) в старый формат (.elf):
    
    "C:\Program Files\1cv8\8.3.XX.XXXX\bin\logconvert.exe" -d "C:\BaseFolder\1Cv8Log" -v 1
    

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

Способ 3. Программный перенос через метод встроенного языка

В ситуациях, когда требуется выборочно перенести события за определенный период или сохранить архив журнала для работы в отдельной базе без остановки кластера, применим метод встроенного языка СкопироватьЖурналРегистрации().

Посмотрим на пример программной выгрузки событий во внешний файл:


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

ИмяФайлаАрхива = "C:\Backups\LogArchive.lgd";

// Выгружаем журнал регистрации во внешний файл формата SQLite
СкопироватьЖурналРегистрации(ИмяФайлаАрхива, ФильтрСобытий);

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

← На главную