Кто и что менял в базе 1С: разбор действий пользователя по журналам

· 9 мин

Содержание

Узнать, что делал пользователь в 1С, проще всего через журнал регистрации: Администрирование → Обслуживание → Журнал регистрации. Поставьте отбор по пользователю и периоду, и вы увидите его входы, созданные, изменённые и удалённые документы с точным временем и компьютером. Если команды в разделе нет, журнал открывается через Все функции → Стандартные → Журнал регистрации или из Конфигуратора: Администрирование → Журнал регистрации.

Журнал отвечает на вопрос «кто и когда тронул документ». Но он не покажет, какую именно сумму поменяли. Для этого нужна история изменений объектов, а для разбора тяжёлых случаев — технологический журнал и средства СУБД. Разберём все четыре источника и когда какой брать.

Где 1С хранит следы действий пользователей

У платформы 1С:Предприятие 8.3 несколько независимых механизмов протоколирования. Они пишут разное и включаются по-разному.

ИсточникЧто фиксируетВключён по умолчаниюКому подходит
Журнал регистрацииВходы, выходы, запись и удаление объектов, проведение, ошибкиДаБухгалтеру, администратору базы
История изменений объектовЗначения реквизитов до и после правкиНетГлавбуху, аудитору
Технологический журналЗапросы, вызовы, исключения, блокировкиНетАдминистратору сервера 1С
Аудит СУБДЗапросы к таблицам на уровне SQLНетАдминистратору СУБД

💡 На практике 9 вопросов из 10 закрывает связка «журнал регистрации + история изменений». Технологический журнал и аудит СУБД нужны, когда журнал регистрации почищен, отключён или не показывает нужной детали.

Журнал регистрации лежит в папке 1Cv8Log:

  • 📁 файловая база — рядом с файлом 1Cv8.1CD;
  • 🖥 клиент-серверная база — на сервере 1С, в каталоге кластера srvinfo\reg_1541\<идентификатор базы>\1Cv8Log.

Формат файлов зависит от настройки. Новый формат — один файл 1Cv8.lgd (база SQLite). Старый, последовательный, — файл 1Cv8.lgf и набор файлов *.lgp, разбитых по периодам.

Как посмотреть действия пользователя в журнале регистрации

Ниже порядок для типовых конфигураций на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11. Форма журнала в них одинаковая.

Шаг 1. Откройте журнал

В пользовательском режиме зайдите в Администрирование → Обслуживание и нажмите ссылку «Журнал регистрации». Нужны права администратора: у рядового пользователя ссылки не будет.

Второй путь — меню Все функции. Если его не видно, включите в Сервис и настройки → Параметры флажок «Отображать команду “Все функции”».

Шаг 2. Задайте отбор

По умолчанию журнал показывает тысячи строк за последние дни. Без отбора в нём не найти ничего. Нажмите «Установить отбор» и заполните:

  1. Интервал — дата и время начала и конца. Сужайте до часа, если знаете примерное время.
  2. Пользователи — отметьте одного или нескольких.
  3. События — оставьте только нужные, например «Данные. Изменение» и «Данные. Удаление».
  4. Метаданные — тип объекта: документ «Реализация (акт, накладная, УПД)», справочник «Контрагенты».
  5. Данные — конкретный документ или элемент справочника.

Отбор по полю «Данные» — главный приём, когда вопрос звучит «кто удалил счёт № 145». Выбираете объект, и журнал выдаёт только записи о нём.

Шаг 3. Прочитайте запись

Двойной щелчок по строке открывает карточку события. В ней:

  • 🕐 Дата — до секунды;
  • 👤 Пользователь и Компьютер — кто и с какой машины;
  • 🧩 Приложение — тонкий клиент, Конфигуратор, COM-соединение, фоновое задание;
  • 📄 Метаданные и Представление данных — что за объект;
  • 🔁 Сеанс и Транзакция со статусом.

Смотрите статус транзакции. Если он «Отменена», изменение откатилось и в базе его нет. Человек нажимал «Записать», но получил ошибку.

Шаг 4. Выгрузите результат

Из формы журнала список можно сохранить в файл через меню «Ещё». Для регулярного контроля удобнее выгрузка кодом. Пример для серверной процедуры внешней обработки:

&НаСервере
Процедура ВыгрузитьДействияНаСервере()
    Отбор = Новый Структура;
    Отбор.Вставить("ДатаНачала", НачалоДня(ТекущаяДатаСеанса()));
    Отбор.Вставить("ДатаОкончания", КонецДня(ТекущаяДатаСеанса()));
    Отбор.Вставить("Событие", "_$Data$_.Delete");

    Таблица = Новый ТаблицаЗначений;
    ВыгрузитьЖурналРегистрации(Таблица, Отбор);

    Для Каждого Строка Из Таблица Цикл
        Сообщить(Строка(Строка.Дата) + " | " + Строка.ИмяПользователя
            + " | " + Строка.ПредставлениеДанных);
    КонецЦикла;
КонецПроцедуры

Процедура показывает всех, кто сегодня что-то удалял. Запускать её нужно под пользователем с административными правами.

Что означают события журнала

Тип события — ключ к пониманию, что человек делал. В форме журнала события показаны по-русски, во внутренних именах и при выгрузке — латиницей.

Событие в формеВнутреннее имяЧто произошло
Сеанс. Начало_$Session$_.StartПользователь вошёл в базу
Сеанс. Завершение_$Session$_.FinishВышел или сеанс оборвался
Сеанс. Ошибка аутентификации_$Session$_.AuthenticationErrorНеверный пароль или имя
Данные. Добавление_$Data$_.NewСоздан новый объект
Данные. Изменение_$Data$_.UpdateОбъект перезаписан
Данные. Удаление_$Data$_.DeleteОбъект удалён из базы
Данные. Проведение_$Data$_.PostДокумент проведён
Данные. Отмена проведения_$Data$_.UnpostПроведение снято
Пользователи. Изменение_$User$_.UpdateИзменены права или пароль пользователя
Информационная база. Изменение конфигурации_$InfoBase$_.ConfigUpdateПравка основной конфигурации

Как не ошибиться при чтении

  • 🗑 Пометка удаления — это «Изменение», а не «Удаление». Пользователь ставит пометку, документ записывается. Событие «Данные. Удаление» появляется, когда помеченные объекты удаляют обработкой. Часто это делает администратор, а не автор пометки.
  • 🔁 Перепроведение даёт «Проведение». Групповое перепроведение за месяц оставит сотни записей от одного пользователя за пару минут.
  • 🤖 Фоновые задания и обмены. Записи от регламентных заданий идут под служебным пользователем или под пользователем, от имени которого настроено задание. Если в поле «Приложение» стоит «Фоновое задание», живой человек тут ни при чём.
  • 👥 Пустой пользователь. Если в базе нет списка пользователей, поле пустое. Если все входят под одним «Администратором», разделить действия людей можно только по компьютеру.

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

Журнал регистрации можно ограничить и почистить. Если записей за нужный день нет, проверьте настройку в Конфигураторе: Администрирование → Настройка журнала регистрации.

Здесь два параметра:

  1. Уровень регистрации. Записи об изменении данных относятся к информационным. Если стоит «Не регистрировать события», «Регистрировать ошибки» или «Регистрировать ошибки и предупреждения», вы их не увидите. Для аудита нужен уровень с информацией или «Регистрировать все события».
  2. Разделять журнал по периодам. Влияет на файлы: журнал режется по дням, неделям, месяцам или годам.

В той же форме есть кнопка «Сократить». Она удаляет записи до указанной даты. После сокращения старые события восстановить нельзя, разве что из резервной копии папки 1Cv8Log.

Включите папку 1Cv8Log в регулярное резервное копирование. Если кто-то сократит журнал, у вас останется копия для разбора.

Если журнал подозрительно короткий, найдите в нём событие о сокращении или изменении параметров журнала. Оно тоже регистрируется, с именем пользователя.

История изменений: какие реквизиты поменяли

Журнал регистрации скажет «Иванова изменила документ в 14:32». Что именно она поправила — сумму, контрагента или дату, — он не покажет. Для этого в конфигурациях на БСП есть версионирование объектов.

Как включить

  1. Откройте Администрирование → Общие настройки.
  2. В группе «История изменений» установите флажок «Хранить историю изменений».
  3. Перейдите по ссылке настройки и выберите типы объектов, по которым хранить версии.
  4. Для документов укажите режим: хранить версии при записи или только при проведении.

После этого при каждой записи объекта сохраняется его копия. В форме документа появится команда «История изменений» (обычно в меню «Ещё»). Она показывает список версий с автором и датой. Две версии можно сравнить: программа подсветит изменённые реквизиты и строки табличных частей.

История работает только с момента включения. Задним числом узнать, что было в документе до правки, она не поможет.

Сколько это стоит по месту

Каждая версия — полная копия объекта. Для справочника номенклатуры с частыми правками база вырастет заметно. Типичный компромисс:

  • ✅ документы, влияющие на учёт: реализации, поступления, банковские выписки, кадровые приказы;
  • ✅ справочники «Контрагенты», «Договоры», «Организации»;
  • ❌ служебные регистры и документы обменов — их правят программы, а не люди.

В БСП есть настройка срока хранения версий. Устаревшие версии удаляет регламентное задание.

Для персональных данных есть отдельный механизм: регистрация событий доступа. Он пишет в журнал, кто открывал карточки физлиц. Включается в настройках защиты персональных данных, в разделе пользователей и прав.

Анализ на уровне сервера и СУБД

Когда журнал регистрации не помогает, остаются два инструмента администратора сервера.

Технологический журнал

Технологический журнал пишет то, что происходит внутри рабочих процессов: запросы к базе, вызовы сервера, исключения, блокировки. Каждое событие содержит свойство Usr с именем пользователя 1С и Context — строку кода, откуда пришёл вызов.

Настраивается файлом logcfg.xml в каталоге conf платформы, обычно C:\Program Files\1cv8\conf. Пример: запросы к MS SQL от одного пользователя одной базы.

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\techlog" history="24">
    <event>
      <eq property="name" value="DBMSSQL"/>
      <eq property="p:processName" value="buh"/>
      <eq property="Usr" value="Иванова"/>
    </event>
    <property name="all"/>
  </log>
</config>

Здесь buh — имя информационной базы на сервере, history="24" — хранить файлы 24 часа. Платформа подхватывает файл без перезапуска, обычно в течение минуты.

Технологический журнал быстро съедает диск: на нагруженной базе это гигабайты в час. Включайте его с узким отбором, на время расследования. Выделите отдельный диск и удалите logcfg.xml, как только соберёте данные.

Аудит средствами СУБД

В MS SQL Server есть SQL Server Audit и расширенные события (Extended Events), в PostgreSQL — параметр log_statement и расширение pgaudit. Они фиксируют каждый запрос к таблицам.

Подводных камней два:

  1. Все пользователи 1С ходят в СУБД под одним логином — тем, что указан в параметрах базы на кластере. СУБД не знает, кто из бухгалтеров стоит за запросом. Сопоставлять приходится по времени с технологическим журналом.
  2. Имена таблиц служебные: _Document123, _Reference45. Соответствие объектам конфигурации даёт метод ПолучитьСтруктуруХраненияБазыДанных().

Аудит СУБД полезен в одном случае: подозрение, что данные меняли в обход 1С, прямыми запросами. Тогда в журнале регистрации следов нет, а в аудите СУБД — есть.

Не правьте данные 1С прямыми SQL-запросами. Платформа не узнает об изменениях, итоги регистров разойдутся с движениями.

Особенности файловой базы

В файловом режиме те же механизмы работают с оговорками.

  • 📂 Журнал лежит в общей папке. Папка 1Cv8Log находится рядом с базой, к которой у пользователей есть доступ на запись. Любой, кто знает путь, может удалить файлы журнала проводником. В клиент-серверной базе журнал лежит на сервере, и доступа к нему у пользователей нет.
  • 🖥 Технологический журнал пишется на клиенте. Файловую базу обрабатывает процесс 1cv8.exe на компьютере пользователя. Значит, logcfg.xml надо класть на каждую машину, а собирать логи — с каждой.
  • 🌐 Терминальный сервер . Если все работают через RDP, поле «Компьютер» у всех одинаковое. Различить людей можно только по пользователю 1С.
  • 🔐 Нет аудита СУБД. Файл 1Cv8.1CD не ведёт своего протокола. Если кто-то скопировал базу или открыл её сторонней утилитой, журнал регистрации этого не покажет.

Для файловой базы, где важен контроль, порядок такой: у каждого сотрудника свой пользователь 1С с паролем, права на папку базы урезаны, копия 1Cv8Log уходит в резервное копирование каждую ночь.

Подготовка базы к аудиту действий
Выполнено: 0 / 5

Частые вопросы

Можно ли увидеть, какие отчёты формировал пользователь?
Стандартно формирование отчёта в журнал регистрации не пишется. Видны только входы и изменения данных. Для отчётов нужна доработка или технологический журнал с событием вызова сервера.
Как узнать, кто сейчас работает в базе?
Откройте список активных пользователей: в Конфигураторе Администрирование → Активные пользователи или в разделе «Обслуживание» пользовательского режима. Двойной щелчок по строке открывает журнал регистрации с отбором по этому сеансу.
Журнал показывает изменение, но документ выглядит как раньше. Почему?
Посмотрите статус транзакции. Если он «Отменена», запись не состоялась. Ещё вариант: документ потом вернули в прежний вид, это будет видно по следующей записи «Данные. Изменение».
Можно ли открыть файл журнала без 1С?
Файл 1Cv8.lgd — база SQLite, её читают любым просмотрщиком SQLite. Работайте только с копией файла: открытие рабочего журнала сторонней программой может помешать платформе писать в него.
Видно ли в журнале, кто изменил конфигурацию?
Да. Сохранение конфигурации в Конфигураторе даёт событие «Информационная база. Изменение конфигурации», обновление структуры базы — «Изменение конфигурации базы данных». Оба с именем пользователя.