Работа с журналом транзакций 1С — критически важный навык для администраторов и разработчиков, занимающихся восстановлением данных после сбоев, анализом производительности или отладкой ошибок. Этот файл фиксирует все изменения в базе данных, позволяя откатить операции или восстановить целостность информации. Однако его расположение и способы доступа зависят от версии платформы, типа СУБД и режима работы 1С.

В этой статье вы найдете актуальные пути к файлам журнала для разных конфигураций (файловый и клиент-серверный варианты), инструкции по открытию через конфигуратор и прямые запросы к SQL, а также нюансы работы с 1Cv8.log, 1Cv8cd.log и транзакционными логами PostgreSQL/MS SQL. Особое внимание уделено типичным ошибкам при поиске логов и способам их устранения.

Что такое журнал транзакций 1С и зачем он нужен

Журнал транзакций (или лог транзакций) — это системный файл, в который записываются все операции изменения данных в базе 1С: добавление, редактирование или удаление документов, справочников, регистров. Его основные функции:

  • 🔄 Восстановление данных после аварийного завершения работы (например, при отключении электричества).
  • 🔍 Анализ ошибок: позволяет отследить, какая именно операция привела к сбою.
  • ⏱️ Оптимизация производительности: помогает выявить "тяжёлые" транзакции, тормозящие систему.
  • 🛡️ Контроль целостности базы данных при обменах или миграциях.

В файловом варианте 1С журнал транзакций хранится непосредственно в каталоге базы данных, тогда как в клиент-серверномMS SQL или PostgreSQL) — в системных файлах СУБД. Важно понимать, что это не то же самое, что технологический журнал (1Cv8.log), который фиксирует события платформы, а не изменения данных.

📊 Какой тип базы 1С вы используете?
Файловый
Клиент-серверный (MS SQL)
Клиент-серверный (PostgreSQL)
Не знаю

Где находится журнал транзакций в файловом варианте 1С

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

Версия 1С Путь к журналу транзакций Примечания
1С:Предприятие 8.3 (файловый) %АппДата%\1C\1Cv8\БазаИмя\1Cv8.lgd
1Cv8.lgp
Файлы .lgd — данные лога, .lgp — указатели.
1С:Предприятие 8.2 %АппДата%\1C\1Cv82\БазаИмя\1Cv8.lgd В 8.2 нет разделения на .lgp.
1С:Предприятие 7.7 %АппДата%\1Cv77\БазаИмя\1CV7.LOG Лог в формате 7.7 несовместим с 8.x.

Чтобы найти папку базы:

  1. Откройте пусковое окно 1С (1Cv8.exe).
  2. Выделите нужную базу, нажмите Изменить → в поле Каталог информационной базы указан путь.
  3. Перейдите в эту папку — там будут файлы 1Cv8.1CD (сама база) и 1Cv8.lgd/.lgp (журнал).
💡

Если файлов .lgd/.lgp нет — проверьте настройки журнала транзакций в конфигураторе (Администрирование → Журналы регистрации). Возможно, ведение лога отключено.

Локация журнала транзакций в клиент-серверном варианте

В клиент-серверном режимеMS SQL Server или PostgreSQL) журнал транзакций хранится внутри СУБД и не представлен отдельными файлами в папке 1С. Его расположение зависит от настроек сервера:

  • 🗄️ MS SQL Server: лог транзакций — это часть файла базы данных (.mdf) и его журнала (.ldf). Путь указывается при создании базы в SQL Server Management Studio.
  • 🐘 PostgreSQL: журнал транзакций (WAL — Write-Ahead Logging) хранится в каталоге PGDATA (обычно C:\Program Files\PostgreSQL\data\pg_wal).

Чтобы узнать точный путь:

  1. Для MS SQL:
    SELECT name, physical_name FROM sys.database_files WHERE type_desc = 'LOG';
  2. Для PostgreSQL:
    SHOW data_directory;

    Затем проверьте подпапку pg_wal или pg_xlog (в зависимости от версии).

⚠️ Внимание: Прямое редактирование файлов .ldf (MS SQL) или pg_wal (PostgreSQL) может привести к необратимому повреждению базы. Для анализа используйте специализированные утилиты или запросы.

Как открыть и прочитать журнал транзакций 1С

Способы просмотра журнала зависят от его типа:

1. Файловый вариант (.lgd/.lgp)

Для чтения логов в файловом режиме:

  • 🔧 Используйте утилиту chdbfl.exe (входит в комплект 1С). Команда для проверки:
    chdbfl.exe путь_к_файлу.1CD --checkLog
  • 📊 Восстановите данные из лога через конфигуратор:
    Тестирование и исправление → Восстановить данные из журнала транзакций

2. Клиент-серверный вариант (MS SQL/PostgreSQL)

Для анализа транзакций в СУБД:

  • 🔍 Для MS SQL используйте системные представления:
    SELECT * FROM fn_dblog(NULL, NULL);
  • 🐘 Для PostgreSQL просмотрите WAL-архивы с помощью pg_waldump.

Сделать резервную копию базы|Проверить права доступа к файлам лога|Использовать тестовую среду для восстановления|Зафиксировать время интересующих транзакций-->

Типичные ошибки при работе с журналом транзакций

Администраторы часто сталкиваются со следующими проблемами:

  1. Отсутствие файлов .lgd/.lgp:
    ⚠️ Внимание: Если журнал транзакций не создаётся, проверьте параметр JournalDiskSpaceLimit в файле 1cv8conf.cfg (по умолчанию — 1024 МБ). При превышении лимита старые логи удаляются.
  2. Ошибка "Журнал транзакций повреждён":

    Возникает при аварийном завершении 1С. Решение:

    chdbfl.exe путь_к_базе.1CD --rebuildLog

  3. Нехватка места на диске для .ldf (MS SQL):

    Журнал транзакций может разрастаться до сотен гигабайт. Решение:

    BACKUP LOG [ИмяБазы] TO DISK = 'путь_к_бэкапу.trn';
    

    DBCC SHRINKFILE (ИмяБазы_log, 1000); -- уменьшить до 1000 МБ

Что делать если журнал транзакций заполнен на 100%?

Если файл .ldf в MS SQL заполнен, база переходит в режим "только для чтения". Срочные действия:

1. Освободите место на диске.

2. Выполните бэкап лога: BACKUP LOG [ИмяБазы] TO DISK = 'C:\backup.trn'.

3. Усеките журнал: DBCC SHRINKFILE (ИмяБазы_log, 1).

4. Настройте регулярное архивирование лога через план обслуживания.

Как включить или отключить ведение журнала транзакций

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

В файловом варианте

Параметры журнала задаются в файле 1cv8conf.cfg (расположен в папке конфигуратора). Основные директивы:

[Journal]

Размер журнала в МБ (0 - без ограничений)

DiskSpaceLimit=1024

Время хранения логов в днях

DaysToKeep=7

В клиент-серверном варианте

Для MS SQL модель восстановления журнала настраивается через:

ALTER DATABASE [ИмяБазы] SET RECOVERY FULL; -- полное протоколирование

ALTER DATABASE [ИмяБазы] SET RECOVERY SIMPLE; -- минимальное протоколирование

Для PostgreSQL настройки WAL редактируются в postgresql.conf:

wal_level = replica      # уровень протоколирования

wal_keep_size = 1GB # размер хранимых WAL-файлов

💡

Отключение журнала транзакций (RECOVERY SIMPLE или wal_level = minimal) увеличивает производительность, но делает невозможным восстановление данных после сбоев. Используйте только для тестовых баз.

Практические советы по работе с журналом транзакций

Чтобы эффективно использовать журнал транзакций:

  • 📅 Регулярно архивируйте логи (особенно в клиент-серверном варианте). Для MS SQL настройте задачи обслуживания, для PostgreSQL — скрипты архивации WAL.
  • Мониторьте размер .ldf: если он растёт быстрее 1 ГБ в день, проверьте наличие длинных незавершённых транзакций.
  • 🔧 Используйте утилиты:

    - Для файлового варианта: chdbfl.exe, 1cv8.exe /DИмяБазы /FixDBCheck.

    - Для MS SQL: DBCC LOGINFO, fn_dblog.

    - Для PostgreSQL: pg_waldump, pg_xlogdump.

  • 📈 Анализируйте пиковые нагрузки: если журнал транзакций заполняется в определённые часы, проверьте расписание регламентных задач или массовых операций (например, закрытие месяца).

Для глубокого анализа рекомендуется использовать специализированные инструменты, такие как SQL Server Profiler (для MS SQL) или pgBadger (для PostgreSQL), которые позволяют визуализировать активность транзакций.

FAQ: Частые вопросы о журнале транзакций 1С

Можно ли удалить файлы .lgd и .lgp вручную?

Нет, это приведёт к потере возможности восстановления данных. Если нужно освободить место, используйте утилиту chdbfl.exe с ключом --clearLog или настройте автоматическую очистку через DaysToKeep в конфигурационном файле.

Как восстановить базу из журнала транзакций, если файл .1CD повреждён?

В файловом варианте:

  1. Скопируйте резервную копию .1CD (даже повреждённую).
  2. Запустите конфигуратор, выберите Тестирование и исправление → Восстановить данные из журнала транзакций.
  3. Укажите путь к файлам .lgd/.lgp и временной точке восстановления.

В клиент-серверном варианте используйте стандартные механизмы восстановления СУБД (например, RESTORE DATABASE в MS SQL).

Почему журнал транзакций MS SQL занимает сотни гигабайт?

Это происходит из-за:

  • Длинных незавершённых транзакций (например, не закрытый сеанс 1С).
  • Отсутствия регулярных бэкапов лога (в модели FULL журнал не усекается без архивации).
  • Массовых операций (загрузка данных, реструктуризация таблиц).

Решение: выполните бэкап лога (BACKUP LOG), затем усеките файл (DBCC SHRINKFILE).

Как просмотреть, какие именно данные изменились в транзакции?

В файловом варианте это невозможно — журнал содержит только служебную информацию для восстановления. В клиент-серверном варианте:

  • Для MS SQL: используйте fn_dblog с фильтрацией по Transaction ID.
  • Для PostgreSQL: анализируйте WAL с помощью pg_waldump или расширения pg_stat_statements.

Для детального аудита изменений настройте журнал регистрации 1С (Администрирование → Журналы регистрации) или используйте механизм Подписки на события.

Можно ли перенести журнал транзакций на другой диск?

Да, но способы отличаются:

  • В файловом варианте: достаточно переместить файлы .lgd/.lgp в новую папку и обновить путь в 1cv8conf.cfg.
  • В MS SQL: используйте команду:
    ALTER DATABASE [ИмяБазы] MODIFY FILE (NAME = ИмяБазы_log, FILENAME = 'N:\путь\к\новому\файлу.ldf');
  • В PostgreSQL: измените параметр wal_dir в postgresql.conf и перезапустите службу.