Кто, когда и что сделал в базе: журнал регистрации, история изменений и техжурнал 1С 8.3
Содержание
Все действия пользователей в 1С 8.3 видны в журнале регистрации. В Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 он открывается так: Администрирование → Поддержка и обслуживание → Журнал регистрации. Там видно, кто вошёл в базу, какой документ создал, провёл, изменил или удалил, с какого компьютера и в какое время.
Журнал отвечает на вопрос «кто и когда». На вопрос «что именно поменяли в документе» отвечает история изменений объектов, а технологический журнал нужен, когда надо разобрать работу самой платформы: ошибки, блокировки, медленные запросы. Ниже все три инструмента по порядку, плюс способ выгрузить события кодом.
Журнал регистрации: где открыть и как читать
Журнал регистрации — механизм платформы, а не конфигурации. Поэтому он есть в любой базе 8.3, даже в самописной. Различается только путь к нему.
| Где работаете | Как открыть журнал |
|---|---|
| БП 3.0, ЗУП 3.1, УТ 11, КА, ERP | Администрирование → Поддержка и обслуживание → Журнал регистрации |
| Любая конфигурация, режим 1С:Предприятие | Все функции → Стандартные → Журнал регистрации |
| Конфигуратор | Администрирование → Журнал регистрации |
Пункт «Все функции» по умолчанию скрыт. Включите его: Сервис и настройки → Параметры, флажок «Отображать команду “Все функции”».
Каждая строка журнала — одно событие. Важные колонки:
- 🕒 Дата, время — с точностью до секунды;
- 👤 Пользователь — имя из списка пользователей базы. Если в базе нет пользователей, колонка пустая;
- 💻 Компьютер — сетевое имя машины, с которой работали;
- 📄 Событие — например, «Данные. Изменение», «Данные. Удаление», «Сеанс. Начало»;
- 🗂 Метаданные — вид объекта: «Документ. Реализация (акт, накладная, УПД)», «Справочник. Контрагенты»;
- 🔗 Данные — ссылка на конкретный документ или элемент.
Двойной щелчок по строке открывает подробности события. Из них можно сразу перейти к самому документу.
Отбор: как найти нужное за минуту
Журнал за год работы — это сотни тысяч строк. Листать бесполезно, нужен отбор. В форме журнала нажмите «Установить отбор» (в форме БСП — ссылка с параметрами отбора над списком) и задайте условия:
- Период — сузьте до нескольких дней. Чем короче интервал, тем быстрее отработает отбор.
- Пользователь — один или несколько.
- Событие — для поиска правок и удалений отметьте «Данные. Изменение», «Данные. Удаление», «Данные. Проведение», «Данные. Отмена проведения».
- Метаданные — вид объекта, например только документы «Поступление (акты, накладные, УПД)».
- Данные — конкретный документ. Так вы увидите всю его историю: кто создал, кто перепроводил, кто пометил на удаление.
Если документ уже удалён и ссылку не выбрать, ищите по событию «Данные. Удаление» и виду метаданных за нужный период. В колонке «Представление данных» остаётся номер и дата удалённого документа.
Типовые вопросы и какой отбор ставить
| Вопрос | Событие в отборе | Что ещё указать |
|---|---|---|
| Кто удалил документ | Данные. Удаление | Метаданные + период |
| Кто перепровёл документ задним числом | Данные. Проведение | Данные (сам документ) |
| Когда сотрудник заходил в базу | Сеанс. Начало, Сеанс. Завершение | Пользователь |
| Кто менял права и пароли | Пользователи. Изменение | Период |
| Кто обновлял конфигурацию | Информационная база. Изменение конфигурации | Период |
Уровень записи: почему журнал бывает пустым
Журнал пишет только то, что разрешено его уровнем. Уровней пять:
- ⛔ «Не регистрировать» — журнал не ведётся вообще;
- ❗ «Регистрировать ошибки»;
- ⚠️ «Регистрировать ошибки и предупреждения»;
- ℹ️ «Регистрировать ошибки, предупреждения и информацию»;
- ✅ «Регистрировать все события».
Изменения и удаления документов попадают только на уровне «Регистрировать все события». На остальных уровнях вы увидите ошибки, но не узнаете, кто правил данные.
Как проверить и поменять уровень:
- Откройте базу в Конфигураторе под администратором.
- Меню
Администрирование → Настройка журнала регистрации. - Выберите «Регистрировать все события».
- Там же задайте разделение журнала по периодам — например, по месяцам. Тогда каждый месяц пишется в отдельный файл, и старые периоды проще архивировать.
Уровень действует только на будущее. Если раньше стояло «Регистрировать ошибки», восстановить, кто удалил документ месяц назад, журнал уже не поможет.
Где лежат файлы журнала
Знать это нужно для резервного копирования и для случаев, когда форма журнала не открывается.
- 📁 Файловая база — подкаталог
1Cv8Logрядом с файлом1Cv8.1CD. - 🖥 Клиент-серверная база
— на сервере 1С в каталоге
srvinfo\reg_1541\<идентификатор базы>\1Cv8Log.
Формат файлов зависит от версии и настроек. Новый формат — один файл 1Cv8.lgd (база SQLite). Старый — файл 1Cv8.lgf и набор файлов .lgp по периодам.
Сокращение журнала
За несколько лет журнал разрастается до десятков гигабайт, и отбор начинает думать по минуте. В том же окне Администрирование → Настройка журнала регистрации есть кнопка «Сократить». Она удаляет события до указанной даты и может сохранить их в отдельный файл.
Перед сокращением выгрузите старые события в файл и сохраните его вместе с архивом базы. Если позже придётся разбирать спор о проведённом задним числом документе, архив пригодится.
Аудит доступа: кто открывал и смотрел данные
Обычный журнал фиксирует запись: создание, изменение, удаление. Просмотр карточки или отчёта в нём не виден.
Начиная с платформы 8.3.15 есть отдельные события доступа к данным и отказа в доступе. Их включают явно: для выбранных объектов и полей платформа пишет в журнал, кто читал данные. Включают их методом УстановитьИспользованиеСобытияЖурналаРегистрации() или через настройки в конфигурации, если разработчик их вывел.
Включайте аудит доступа точечно — например, для справочника «Физические лица» или регистров с зарплатой. Если включить его на всё, журнал вырастет в разы за неделю.
История изменений: что именно поменяли в документе
Журнал скажет: «Петрова изменила реализацию № 154 в 14:32». Но какое поле она поменяла — сумму, контрагента или склад, — журнал не покажет. Для этого в типовых конфигурациях есть версионирование объектов.
Как включить в БП 3.0, ЗУП 3.1, УТ 11:
Администрирование → Общие настройки.- В группе «История изменений» установите флажок «Хранить историю изменений».
- По ссылке настройки выберите виды документов и справочников, для которых нужна история, и укажите, когда сохранять версию — при записи или при проведении.
После этого в форме документа появляется команда Ещё → История изменений. Она показывает список версий: кто и когда записал. Выделите две версии и сравните их — программа подсветит поля и строки табличных частей, которые отличаются.
| Инструмент | Отвечает на вопрос | Включён по умолчанию |
|---|---|---|
| Журнал регистрации | Кто и когда | Да, но уровень надо проверить |
| История изменений | Что именно поменяли | Нет, включается в настройках |
| Технологический журнал | Что делала платформа и сервер | Нет, нужен файл настройки |
История изменений, как и журнал, работает только с момента включения. Старых версий документа в ней не будет.
Хранить версии для всех объектов подряд не стоит: база растёт заметно быстрее. Начните с документов, которые чаще всего «чинят задним числом»: реализации, поступления, кассовые и банковские документы, начисления зарплаты.
Технологический журнал: когда журнала регистрации мало
Технологический журнал (ТЖ) пишет не бизнес-события, а то, что происходит внутри платформы: исключения, обращения к СУБД, управляемые блокировки, вызовы сервера. Он нужен, когда база тормозит, пользователи ловят ошибки, а журнал регистрации ничего толком не объясняет.
ТЖ включается файлом logcfg.xml. Его кладут в каталог conf платформы — обычно C:\Program Files\1cv8\conf\. Платформа перечитывает файл сама примерно раз в минуту, перезапуск службы не нужен.
Пример: собирать все исключения и хранить их 24 часа.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\TJ\excp" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Что означают основные события:
- ❌
EXCP— исключения, в том числе ошибки, которые видит пользователь; - 🗄
DBMSSQL— запросы к Microsoft SQL Server (для PostgreSQL —DBPOSTGRS); - 🔒
TLOCK— управляемые блокировки;TTIMEOUT— таймауты ожидания блокировки; - 📞
CALLиSCALL— вызовы сервера и их длительность; - 🔌
CONN— подключения клиентов.
Файлы появляются в подкаталогах по процессам, например rphost_4120. Внутри — текстовые логи по часам с именами вида 26100714.log (год, месяц, день, час). В каждой строке есть время, длительность, имя события и свойства, в том числе пользователь (Usr) и контекст — строка кода, откуда пришёл вызов.
Быстрый поиск ошибок конкретного пользователя в PowerShell:
Get-ChildItem D:\TJ\excp -Recurse -Filter *.log |
Select-String -Pattern "Usr=Иванов" |
Select-Object -First 50
ТЖ с событиями DBMSSQL или all на рабочем сервере за час набирает гигабайты. Включайте его на ограниченное время, задавайте history в часах и следите за свободным местом. Когда диск переполнится, рабочие процессы начнут падать, и сеансы пользователей оборвутся. После диагностики удалите logcfg.xml или уберите из него лишние события.
Выгрузка событий кодом и запросом к файлу журнала
Языком запросов 1С журнал регистрации не прочитать: в консоли запросов нет таблицы журнала. Есть два обходных пути.
Метод ВыгрузитьЖурналРегистрации
Метод платформы выгружает события в таблицу значений с отбором. Выполните код в консоли кода или во внешней обработке на сервере, под пользователем с правами администратора:
Таблица = Новый ТаблицаЗначений;
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", НачалоДня(ТекущаяДата()) - 7 * 86400);
Отбор.Вставить("ДатаОкончания", ТекущаяДата());
Отбор.Вставить("Событие", "_$Data$_.Delete");
ВыгрузитьЖурналРегистрации(Таблица, Отбор);
Для Каждого Строка Из Таблица Цикл
Сообщить(СтрШаблон("%1 | %2 | %3",
Строка.Дата, Строка.ИмяПользователя, Строка.ПредставлениеДанных));
КонецЦикла;
Код выводит все удаления за последние 7 дней: дату, пользователя и номер удалённого объекта. Служебные имена событий: _$Data$_.Update — изменение, _$Data$_.Post — проведение, _$Session$_.Start — начало сеанса. Такую таблицу удобно сохранить в табличный документ и отправить руководителю.
SQL-запрос к файлу 1Cv8.lgd
Журнал в новом формате — обычная база SQLite. Её можно открыть любой программой для SQLite, например DB Browser for SQLite.
Работайте только с копией файла. Открытый на запись рабочий журнал можно повредить, и платформа перестанет в него писать.
SELECT datetime(e.date / 10000 - 62135596800, 'unixepoch') AS dt,
u.name AS user_name,
e.comment
FROM EventLog e
LEFT JOIN UserCodes u ON u.code = e.userCode
ORDER BY e.date DESC
LIMIT 100;
Таблица EventLog хранит события, а имена пользователей, компьютеров и видов событий вынесены в справочники кодов (UserCodes и соседние таблицы). Дата записана в десятитысячных долях секунды от начала нашей эры, отсюда формула пересчёта. Время получается без учёта часового пояса сервера.