Кто, когда и что поменял: где 1С держит следы правок
Содержание
История изменений в 1С 8.3 хранится в двух разных местах. Журнал регистрации (кто и когда менял объект) лежит вне базы данных — в папке 1Cv8Log: у файловой базы она внутри каталога базы, у серверной — в каталоге кластера srvinfo\reg_1541\<GUID базы>\1Cv8Log. Версии самих объектов (что именно поменялось в полях) лежат внутри базы, в таблицах СУБД, и только если версионирование включено.
Из-за этой разницы люди часто ищут не там. Выгрузили .dt, развернули копию — а журнала нет. Открыли журнал — видно, что документ менял Иванов, но не видно, какую сумму он исправил. Разберём каждое хранилище по отдельности: где лежит, что содержит и как из него достать нужное.
Журнал регистрации: в какой папке хранится история событий
Журнал регистрации — это механизм платформы. Он пишет события сеансов: вход, выход, запись, проведение и удаление объектов, ошибки, изменение пользователей и конфигурации.
Физически это файлы на диске, а не таблицы базы.
| Вариант базы | Где лежит журнал |
|---|---|
| Файловая | <каталог базы>\1Cv8Log — рядом с файлом 1Cv8.1CD |
| Клиент-серверная, Windows | <каталог srvinfo>\reg_1541\<GUID базы>\1Cv8Log |
| Клиент-серверная, Linux | домашний каталог пользователя usr1cv8, внутри .1cv8/1C/1cv8/reg_1541/<GUID базы>/1Cv8Log |
Каталог srvinfo задаётся при установке сервера. Чаще всего это C:\Program Files\1cv8\srvinfo, но администратор мог вынести его на другой диск. Точный путь виден в параметрах запуска службы «Агент сервера 1С:Предприятия» — ключ -d.
Какие файлы внутри 1Cv8Log
Формат журнала выбирается в его настройке. Встречаются два варианта:
- 📄 последовательный — файл-словарь
1Cv8.lgfи файлы событий*.lgp, по одному на период (день, месяц и т. д.); - 🗃 SQLite — один файл
1Cv8.lgd.
Удалять эти файлы при работающей базе не нужно. Если журнал разросся, его сокращают штатно — об этом ниже.
Как найти GUID серверной базы
В каталоге reg_1541 лежит файл 1CV8Clst.lst. Это реестр кластера: в нём перечислены базы с их именами и идентификаторами. Откройте копию файла в текстовом редакторе, найдите имя базы — рядом будет GUID. Папка с таким именем и есть нужная.
Открывайте копию 1CV8Clst.lst, а не сам файл. Случайное сохранение испорченного реестра может оставить кластер без списка баз.
Почему журнал пропадает после переноса базы
Типичная ситуация: базу перенесли на новый сервер через .dt или резервную копию СУБД, а журнал регистрации пустой. Так и должно быть — в базу журнал не входит. Новая база на сервере получает новый GUID и новую папку.
Чтобы сохранить историю, при переносе:
- Найдите папку
1Cv8Logстарой базы по GUID. - Скопируйте её целиком в архив рядом с выгрузкой.
- При необходимости читайте её отдельно, способом из раздела про консоль ниже.
Подкладывать старый журнал в папку новой серверной базы не стоит: смешаются события двух разных баз.
Что журнал регистрации показывает, а чего в нём нет
Журнал отвечает на вопросы «кто», «когда», «с какого компьютера» и «какой объект». На вопрос «что было до правки» он не отвечает.
По каждому событию в журнале есть:
- 👤 пользователь и компьютер;
- 🕒 дата и время;
- 🏷 событие — например,
Данные. Изменение,Данные. Удаление,Данные. Проведение,Сеанс. Начало; - 📌 метаданные и ссылка на объект («Реализация товаров и услуг 00-000125 от 12.03»);
- 💬 комментарий, если его записал код конфигурации.
Старых и новых значений реквизитов там нет. Видно, что документ перезаписали в 15:42, но не видно, что сумму поменяли с 120 000 на 102 000.
Где открыть журнал
- Конфигуратор:
Администрирование → Журнал регистрации. - Типовые конфигурации на БСП (БП 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Протоколы работы → Журнал регистрации. - Любая конфигурация в режиме Предприятия:
Все функции → Стандартные → Журнал регистрации(пункт «Все функции» включается в параметрах программы).
💡 Для расследования сразу ставьте отбор: период, пользователь, событие Данные. Изменение и тип объекта. Без отбора журнал за месяц у базы на 20 пользователей открывается долго и тонет в событиях входа.
Настройка уровня и срока хранения
В Конфигураторе: Администрирование → Настройка журнала регистрации. Там задаются:
- Уровень регистрации — от «Не регистрировать» до «Регистрировать все события». Для аудита правок нужен уровень, при котором пишется информация, а не только ошибки.
- Период разделения журнала на файлы.
- Сокращение журнала — удаление событий старше указанной даты с возможностью сохранить их в отдельный файл.
Если уровень стоит «Регистрировать ошибки», событий изменения данных в журнале не будет вообще. Проверьте это до инцидента, а не после.
Версии объектов: история изменений внутри базы данных
Чтобы видеть не только факт правки, но и сами значения, в 1С есть два механизма версионирования. Оба хранят данные внутри базы — значит, попадают в .dt и в резервную копию СУБД.
Версионирование БСП в типовых конфигурациях
В БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП оно включается в Администрирование → Общие настройки → История изменений. Там флажок хранения истории и настройка, для каких объектов её вести и сколько хранить.
Версии лежат в регистре сведений ВерсииОбъектов. Каждая запись — сериализованная копия объекта на момент записи: шапка, табличные части, автор и время.
Посмотреть историю конкретного документа: откройте его, в меню Ещё найдите команду истории изменений. Отчёт покажет список версий, их можно сравнить попарно — изменённые поля подсвечиваются.
Платформенная «История данных»
С версии платформы 8.3.11 есть собственный механизм «История данных». Он включается разработчиком в свойствах объекта метаданных или программно. Данные идут сначала в очередь, затем обрабатываются в версии и хранятся в служебных таблицах базы.
В типовых конфигурациях бухгалтер с ним обычно не сталкивается. Это инструмент для доработок, где нужна история без БСП.
| Что нужно узнать | Журнал регистрации | Версии БСП | История данных платформы |
|---|---|---|---|
| Кто и когда изменил | ✅ | ✅ | ✅ |
| Старое значение поля | ❌ | ✅ | ✅ |
| Где хранится | файлы 1Cv8Log | таблица регистра в базе | служебные таблицы базы |
Попадает в .dt | нет | да | да |
| Включается | по умолчанию | флажок в настройках | разработчиком |
Таблицы регистрации изменений в SQL-базе
Третий источник, который путают с историей, — регистрация изменений для планов обмена. Когда объект записывается, платформа ставит отметку «изменён» для каждого узла обмена, где этот объект участвует.
В SQL Server или PostgreSQL это отдельные таблицы, в имени которых есть ChngR: например, _DocumentChngR245 для документа или _InfoRgChngR812 для регистра сведений. Числа у каждой базы свои.
Что в таких таблицах:
- 🔗 узел плана обмена;
- 🆔 ссылка на изменённый объект;
- 🔢 номер сообщения, в котором изменение уйдёт.
Значений полей и автора правки там нет. После успешной выгрузки и подтверждения приёма отметки удаляются. Поэтому таблицы регистрации отвечают лишь на вопрос «что ещё не ушло в обмен», а не «кто и что менял».
Как сопоставить таблицы SQL с объектами 1С
Имена вида _Document245 ничего не скажут без расшифровки. Расшифровку даёт встроенная функция ПолучитьСтруктуруХраненияБазыДанных(). Её вызывают из обработки или консоли кода в режиме Предприятия:
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Сообщить(Строка.Метаданные + " | " + Строка.Назначение + " | " + Строка.ИмяТаблицыХранения);
КонецЦикла;
Второй параметр Истина возвращает имена в терминах СУБД. В колонке «Назначение» у таблиц регистрации изменений будет значение «РегистрацияИзменений».
Ничего не меняйте в таблицах базы 1С напрямую через SQL. Платформа не узнает о правке, а изменения в обход неё нарушают лицензионное соглашение и ломают целостность данных. Только чтение.
Журнал серверной базы и консоль администрирования
Консоль администрирования серверов 1С журнал регистрации не показывает. В ней видно другое, тоже полезное при разборе инцидента:
- кто сейчас подключён к базе — список сеансов с пользователем, компьютером и временем начала;
- какой сеанс держит блокировки;
- рабочие процессы и их нагрузка.
Сам журнал серверной базы смотрят из клиента 1С — теми же командами, что и у файловой. Платформа читает файлы с сервера сама.
Как прочитать журнал, если база не открывается
Бывает, что базу нельзя запустить, а журнал нужен. Приём практиков:
- Скопируйте папку
1Cv8Logнужной базы в отдельное место. - Создайте пустую файловую базу .
- Закройте её и замените её папку
1Cv8Logскопированной. - Откройте пустую базу в Конфигураторе и откройте журнал регистрации.
Платформа покажет события исходной базы. Имена пользователей и метаданных хранятся в самом журнале, поэтому конфигурация пустой базы роли почти не играет.
Выгрузка журнала для анализа
Встроенный метод ВыгрузитьЖурналРегистрации() сохраняет события в файл с отбором по дате, пользователю, событию. Его используют, когда журнал надо передать подрядчику или загрузить во внешнюю систему, не давая доступа к базе.
Как восстановить данные по истории изменений
Восстановление зависит от того, какой след остался.
Пример расследования. 12 марта сумма реализации 00-000125 стала 102 000 вместо 120 000:
- В журнале отбор по объекту и событию
Данные. Изменение— правка в 15:42, пользователь Петрова. - В истории изменений документа сравниваем версию 4 (15:10) и 5 (15:42) — в строке 3 количество стало 12 вместо 15 при цене 6 000. Разница 3 × 6 000 = 18 000, ровно 120 000 − 102 000.
- Решаем: вернуть версию 4 или оставить, если правка верная.
Перед переходом на старую версию сделайте резервную копию базы — переход перезаписывает объект, а если период закрыт, может потребоваться перепроведение и пересчёт закрытия месяца.
Сторонний аудит: технологический журнал, СУБД и сбор логов
Когда журнала регистрации мало — нужен аудит прямых обращений к СУБД, длительный срок хранения или поиск по многим базам, — подключают внешние средства.
| Инструмент | Что фиксирует | Когда нужен |
|---|---|---|
Технологический журнал 1С (logcfg.xml в каталоге conf платформы) | события платформы: запросы к СУБД, исключения, блокировки | расследование ошибок и производительности |
Аудит СУБД (SQL Server Audit, расширение pgaudit для PostgreSQL) | кто подключался к СУБД и какие запросы выполнял | контроль доступа к базе в обход 1С |
| Системы сбора логов (ELK, Graylog и подобные) | выгруженный журнал регистрации многих баз | централизованный поиск, хранение годами |
Технологический журнал включают на время. На нагруженном сервере при подробной настройке он за час набирает гигабайты, поэтому сразу задавайте фильтр событий и срок хранения в logcfg.xml.
💡 Аудит на уровне СУБД видит пользователя СУБД, под которым работает сервер 1С, а не пользователя 1С. Связать запрос с конкретным сотрудником помогает только сопоставление по времени с журналом регистрации или технологическим журналом.
История изменений конфигурации
Если вопрос не про данные, а про код и метаданные, смотрите хранилище конфигурации. Его история открывается в Конфигураторе: Конфигурация → Хранилище конфигурации → История хранилища. Там видны версии, авторы помещений и комментарии, можно сравнить любые две версии. Само хранилище — отдельный каталог на диске или сервер хранилища, не рабочая база.
Частые вопросы
Попадает ли журнал регистрации в выгрузку .dt?
1Cv8Log отдельно от данных. Чтобы сохранить его, копируйте эту папку вместе с выгрузкой.Можно ли удалить старый журнал регистрации, чтобы освободить место?
Администрирование → Настройка журнала регистрации → Сократить, с сохранением удаляемых событий в файл, если они могут понадобиться.