Кто, когда и что менял в базе: разбираем следы пользователей 1С
Содержание
Проверить действия в 1С можно в журнале регистрации: в БП 3.0, ЗУП 3.1 и УТ 11 он открывается через Администрирование → Обслуживание → Журнал регистрации, в любой конфигурации — через Все функции → Стандартные → Журнал регистрации. Поставьте отбор по пользователю, периоду и событию Данные. Изменение — и увидите, кто правил документ и в какую минуту.
Частое заблуждение: «журнал покажет, какую сумму поменяли». Не покажет. Он фиксирует сам факт записи объекта, автора, компьютер и время. Старое и новое значение реквизитов хранит другой механизм — история изменений (версионирование объектов). Для полноценного аудита нужны оба, и второй включают заранее.
Что фиксирует журнал регистрации 1С и чего в нём нет
Журнал регистрации ведёт сама платформа 1С:Предприятие 8.3, а не конфигурация. Поэтому он есть в любой базе: типовой, доработанной, самописной.
Каждая запись содержит:
- 🕒 дату и время события с точностью до секунды;
- 👤 имя пользователя информационной базы;
- 💻 имя компьютера и тип приложения (тонкий клиент, веб-клиент, Конфигуратор, фоновое задание, COM-соединение);
- 📄 событие и объект: какой документ или элемент справочника записан, проведён, удалён;
- ⚠️ уровень важности: информация, предупреждение, ошибка, примечание;
- 💬 комментарий — текст ошибки или пояснение, которое пишет конфигурация.
Основные события, по которым проверяют работу людей:
| Событие в журнале | Что произошло |
|---|---|
Сеанс. Начало / Сеанс. Завершение | вход и выход из базы |
Сеанс. Ошибка аутентификации | неверный пароль или имя |
Данные. Добавление | создан новый объект |
Данные. Изменение | объект перезаписан |
Данные. Проведение / Данные. Отмена проведения | проведение и его отмена |
Данные. Удаление | объект удалён физически |
Пользователи. Изменение | правка пользователя или его прав |
Чего в журнале нет: значений реквизитов до и после правки, просмотров документов без записи, печати (если конфигурация не пишет её сама). Пометка на удаление выглядит как обычное изменение объекта.
Если пользователь вошёл под чужим именем, журнал запишет чужое имя. Общие учётки вроде «Бухгалтер» или «Склад» делают аудит бессмысленным — у каждого сотрудника должен быть свой пользователь.
Как настроить регистрацию событий, чтобы было что проверять
Настройка делается в Конфигураторе: Администрирование → Настройка журнала регистрации. Права на это нужны административные.
Уровень регистрации
Выберите, что писать:
- «Не регистрировать» — журнал пуст. Встречается на скопированных базах и после неудачных экспериментов.
- «Регистрировать ошибки» — только сбои.
- «Регистрировать ошибки и предупреждения».
- «Регистрировать ошибки, предупреждения и информацию».
- «Регистрировать все события» — нужен для аудита действий.
Для проверки действий пользователей ставьте «Регистрировать все события». На уровнях ниже события записи данных и входов в журнал не попадут.
Разделение по периодам и сокращение
В той же форме задаётся разделение журнала по периодам: по дням, месяцам, годам. Для базы на 20–50 активных пользователей разумно делить по месяцам — файлы остаются небольшими, отбор работает быстрее.
Кнопка «Сократить…» удаляет записи старше указанной даты. Перед удалением можно сохранить их в файл. Сначала решите, сколько хранить: если служба безопасности или аудиторы спрашивают за три года, не сокращайте журнал до года.
История изменений объектов
Это второй слой аудита, его даёт БСП, а не платформа. В БП 3.0 и ЗУП 3.1 включается в Администрирование → Общие настройки, флажок «Хранить историю изменений». Там же по ссылке настройки выбирают, какие документы и справочники версионировать.
После включения в форме объекта, в меню «Ещё», появляется команда истории изменений. Она показывает все версии и позволяет сравнить две из них: какой реквизит, какая строка табличной части и какое значение было.
История пишется только с момента включения. Правки, сделанные до этого, восстановить через неё нельзя — останется только факт записи в журнале регистрации.
Как проверить действия пользователя: отбор и чтение записей
Откройте журнал любым из способов:
- в типовой конфигурации:
Администрирование → Обслуживание → Журнал регистрации; - в любой базе:
Все функции → Стандартные → Журнал регистрации. Если пункта «Все функции» нет, включите его вСервис и настройки → Параметры, флажок «Отображать команду “Все функции”»; - в Конфигураторе:
Администрирование → Журнал регистрации.
Пошаговый разбор конкретной правки
Пример: в остатках 51 счёта расхождение, подозрение на правку платёжки за прошлый квартал.
- Нажмите кнопку отбора в командной панели журнала.
- Задайте интервал: например, с 1 по 31 число текущего месяца — правки задним числом делаются сейчас, а не в квартале документа.
- В поле событий оставьте
Данные. Изменение,Данные. Проведение,Данные. Отмена проведения,Данные. Удаление. - В поле метаданных выберите нужный тип документа, например «Списание с расчётного счёта».
- Примените отбор. Найдите строку с нужным документом в колонке данных.
- Откройте запись двойным щелчком: в ней видны пользователь, компьютер, приложение и сеанс.
- Если включена история изменений — откройте документ и сравните последнюю версию с предыдущей.
Приёмы, которые экономят время
- 🔎 Отбор по колонке «Данные» с конкретной ссылкой. Выделите документ в записи журнала и отфильтруйте по нему — получите всю его биографию.
- 🧩 Отбор по сеансу. Нашли подозрительную правку — отфильтруйте по номеру этого сеанса и посмотрите, что ещё пользователь делал за тот же заход.
- 🖥️ Отбор по компьютеру. Если два сотрудника работают под одним именем, компьютер их различит.
- 📤 Выгрузка в табличный документ или файл, чтобы показать результат руководителю без доступа к базе.
Отчёт для анализа активности
В типовых конфигурациях на БСП есть отчёт «Анализ журнала регистрации». Ищите его в разделе Администрирование → Обслуживание среди отчётов администратора. Отчёт строит сводку: кто сколько работал, сколько записей сделал за период, как долго шли регламентные задания. Для вопроса «кто вообще трогает базу по ночам» он нагляднее сырого журнала.
Анализ журнала кодом и SQL-запросами
Когда записей сотни тысяч, а вопросов много, ручной отбор тормозит. Есть два пути.
Выгрузка встроенным языком
Метод ВыгрузитьЖурналРегистрации складывает записи в таблицу значений с заданным отбором. Пример: все неудачные попытки входа за последние сутки.
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", ТекущаяДатаСеанса() - 86400);
Отбор.Вставить("ДатаОкончания", ТекущаяДатаСеанса());
Отбор.Вставить("Событие", "_$Session$_.AuthenticationError");
Записи = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(Записи, Отбор);
Для Каждого Строка Из Записи Цикл
Сообщить(СтрШаблон("%1 | %2 | %3",
Строка.Дата, Строка.Компьютер, Строка.Комментарий));
КонецЦикла;
Внутренние имена событий: _$Session$_.Start — вход, _$Data$_.New — добавление, _$Data$_.Update — изменение, _$Data$_.Delete — удаление. Код выполняется на сервере и требует права на чтение журнала регистрации.
Запросы к файлу журнала
Начиная с 8.3.5 журнал по умолчанию хранится в одном файле 1Cv8.lgd. Это база SQLite, её можно открыть любым SQLite-клиентом.
Где лежит файл:
| Вариант базы | Каталог журнала |
|---|---|
| Файловая | <каталог базы>\1Cv8Log\ |
| Клиент-серверная | <каталог srvinfo>\reg_1541\<GUID базы>\1Cv8Log\ |
Старый текстовый формат — файлы .lgf и .lgp — тоже встречается на базах, которые переносили со старых платформ. SQL к нему не применить.
Работайте только с копией файла. Правка или блокировка рабочего .lgd может повредить журнал.
Сначала посмотрите структуру: в консоли sqlite3 команды .tables и .schema EventLog. Таблица EventLog хранит записи, а имена пользователей, событий и компьютеров вынесены в справочные таблицы с кодами (UserCodes, EventCodes, ComputerCodes). Дата хранится числом — десятитысячными долями секунды от 1 января 0001 года.
Пример: сколько записей сделал каждый пользователь.
SELECT u.name AS user,
COUNT(*) AS records,
datetime(MAX(e.date) / 10000 - 62135596800, 'unixepoch') AS last_event
FROM EventLog e
JOIN UserCodes u ON u.code = e.userCode
GROUP BY u.name
ORDER BY records DESC;
Если имена колонок в вашей версии отличаются, сверьтесь с выводом .schema — запрос легко поправить под неё.
Таблицы самой базы на MS SQL или PostgreSQL для аудита бесполезны. Все пользователи 1С подключаются к СУБД под одним логином сервера, и аудит СУБД увидит только его.
Почему журнал не показывает нужное: частые проблемы
Ещё одна ловушка — повреждённый журнал после аварийного отключения сервера. Платформа может перестать показывать часть записей. Восстановить файл
лучше из резервной копии каталога 1Cv8Log, поэтому включите этот каталог в регулярный бэкап сервера.
Автоматический контроль и оповещения о подозрительных действиях
Ручная проверка хороша для расследования. Для профилактики нужен регулярный контроль.
Что стоит отслеживать автоматически:
- 🔐 серии ошибок аутентификации — больше 5 подряд с одного компьютера;
- 🌙 входы в нерабочее время и в выходные;
- 🗑️ физическое удаление документов (
Данные. Удаление); - 📅 изменение документов в закрытом периоде;
- 👥 правку пользователей и ролей.
Как это собрать
- Создайте расширение конфигурации , чтобы не трогать типовую.
- Добавьте в него регламентное задание с расписанием, например каждый час.
- В обработчике задания выгружайте журнал методом
ВыгрузитьЖурналРегистрациис отбором за последний час и нужными событиями. - Проверяйте условия: число записей, время, пользователя.
- При срабатывании отправляйте письмо через учётную запись электронной почты или сообщение в мессенджер через HTTP-запрос.
Последнюю обработанную дату храните в константе или регистре сведений расширения. Иначе при сбое задания часть событий выпадет из контроля, а часть уйдёт дважды.
Регламентное задание с тяжёлой выгрузкой за большой период нагружает сервер. Берите короткие интервалы и только нужные события.
Для изменений в закрытом периоде у типовых конфигураций есть свой инструмент — дата запрета изменения данных в Администрирование → Общие настройки. Запрет лучше контроля: правку просто не дадут записать.
Если нужно доказать факт правки
Проверку действий часто запускают из-за конфликта: недостача, спорный платёж, уволенный сотрудник. Тогда важна не только находка, но и её сохранность.
- 📁 Выгрузите записи журнала за период в файл сразу, до сокращения журнала.
- 🧾 Сохраните версии документа из истории изменений в табличный документ.
- 🗄️ Сделайте копию каталога
1Cv8Logи зафиксируйте её дату. - 👤 Запишите, кто проводил проверку и когда, — пригодится, если результаты будут оспаривать.
Помните об ограничении: журнал показывает учётную запись, а не человека. Если пароль знали несколько сотрудников, вывод «правил именно Иванов» журнал не доказывает. Его подкрепляют данными о компьютере, графиком работы, записями СКУД.
Частые вопросы
Может ли пользователь удалить свои следы из журнала регистрации?
Видно ли в журнале, кто открывал документ без изменений?
Сколько места занимает журнал?
Можно ли посмотреть журнал, если база не запускается?
1Cv8Log и откройте файл 1Cv8.lgd SQLite-клиентом.