Работа с журналом транзакций 1С — критически важный навык для администраторов и разработчиков, занимающихся восстановлением данных после сбоев, анализом производительности или отладкой ошибок. Этот файл фиксирует все изменения в базе данных, позволяя откатить операции или восстановить целостность информации. Однако его расположение и способы доступа зависят от версии платформы, типа СУБД и режима работы 1С.
В этой статье вы найдете актуальные пути к файлам журнала для разных конфигураций (файловый и клиент-серверный варианты), инструкции по открытию через конфигуратор и прямые запросы к SQL, а также нюансы работы с 1Cv8.log, 1Cv8cd.log и транзакционными логами PostgreSQL/MS SQL. Особое внимание уделено типичным ошибкам при поиске логов и способам их устранения.
Что такое журнал транзакций 1С и зачем он нужен
Журнал транзакций (или лог транзакций) — это системный файл, в который записываются все операции изменения данных в базе 1С: добавление, редактирование или удаление документов, справочников, регистров. Его основные функции:
- 🔄 Восстановление данных после аварийного завершения работы (например, при отключении электричества).
- 🔍 Анализ ошибок: позволяет отследить, какая именно операция привела к сбою.
- ⏱️ Оптимизация производительности: помогает выявить "тяжёлые" транзакции, тормозящие систему.
- 🛡️ Контроль целостности базы данных при обменах или миграциях.
В файловом варианте 1С журнал транзакций хранится непосредственно в каталоге базы данных, тогда как в клиент-серверном (с MS SQL или PostgreSQL) — в системных файлах СУБД. Важно понимать, что это не то же самое, что технологический журнал (1Cv8.log), который фиксирует события платформы, а не изменения данных.
Где находится журнал транзакций в файловом варианте 1С
В файловом режиме (когда база хранится в виде файлов .1CD) журнал транзакций представляет собой набор файлов с расширением .lgd и .lgp, расположенных в той же папке, что и сама база. Путь к ним зависит от версии платформы:
| Версия 1С | Путь к журналу транзакций | Примечания |
|---|---|---|
| 1С:Предприятие 8.3 (файловый) | %АппДата%\1C\1Cv8\БазаИмя\1Cv8.lgd1Cv8.lgp |
Файлы .lgd — данные лога, .lgp — указатели. |
| 1С:Предприятие 8.2 | %АппДата%\1C\1Cv82\БазаИмя\1Cv8.lgd |
В 8.2 нет разделения на .lgp. |
| 1С:Предприятие 7.7 | %АппДата%\1Cv77\БазаИмя\1CV7.LOG |
Лог в формате 7.7 несовместим с 8.x. |
Чтобы найти папку базы:
- Откройте пусковое окно 1С (1Cv8.exe).
- Выделите нужную базу, нажмите
Изменить→ в полеКаталог информационной базыуказан путь. - Перейдите в эту папку — там будут файлы
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).
Чтобы узнать точный путь:
- Для MS SQL:
SELECT name, physical_name FROM sys.database_files WHERE type_desc = 'LOG'; - Для 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.
Сделать резервную копию базы|Проверить права доступа к файлам лога|Использовать тестовую среду для восстановления|Зафиксировать время интересующих транзакций-->
Типичные ошибки при работе с журналом транзакций
Администраторы часто сталкиваются со следующими проблемами:
- Отсутствие файлов
.lgd/.lgp:⚠️ Внимание: Если журнал транзакций не создаётся, проверьте параметр
JournalDiskSpaceLimitв файле1cv8conf.cfg(по умолчанию — 1024 МБ). При превышении лимита старые логи удаляются. - Ошибка "Журнал транзакций повреждён":
Возникает при аварийном завершении 1С. Решение:
chdbfl.exe путь_к_базе.1CD --rebuildLog - Нехватка места на диске для
.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 повреждён?
В файловом варианте:
- Скопируйте резервную копию
.1CD(даже повреждённую). - Запустите конфигуратор, выберите
Тестирование и исправление → Восстановить данные из журнала транзакций. - Укажите путь к файлам
.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и перезапустите службу.