Кто, что и когда изменил в базе 1С — как это узнать

· 9 мин

Содержание

Кто и что менял в базе, показывает журнал регистрации: откройте Главное меню → Все функции → Стандартные → Журнал регистрации, поставьте отбор по пользователю, дате и метаданным — и увидите, кто добавлял, изменял, проводил и удалял объекты. Это штатный механизм платформы 8.3, включать ничего не нужно, данные копятся автоматически.

Отслеживание изменений решается тремя уровнями: журнал регистрации (кто и когда тронул объект), версионирование объектов (какое именно поле поменялось и на что), анализ на уровне СУБД (когда нужна полная картина запросов). Ниже — как настроить каждый и когда какой применять.

Если команды «Все функции» в меню нет — включите её: Сервис → Параметры → Отображать команду «Все функции». В конфигурациях на БСП журнал обычно продублирован в разделе Администрирование, группа «Обслуживание» (название группы зависит от конфигурации).

Чтобы сразу выбрать подходящий уровень контроля, сопоставьте задачу и инструмент:

ИнструментЧто показываетКогда применять
Журнал регистрацииКто, когда и какой объект тронулПовседневный контроль: кто создал, провёл, удалил
Версионирование объектовКакие реквизиты изменились и на чтоНужно сравнить значения «до и после»
Анализ на уровне СУБДТексты запросов на запись, глубокая трассировкаНепонятный источник изменений, разбор сложных случаев

Журнал включён всегда, версионирование и СУБД-аудит подключают по необходимости.

Что фиксирует журнал регистрации, а что нет

Журнал регистрации пишет события сеансов и работы с данными. По каждой записи видно: дату и время с точностью до секунды, пользователя, компьютер, сеанс, вид события и объект метаданных.

Для контроля изменений важны четыре события данных:

  • 📝 Данные.Добавление — создан новый объект;
  • ✏️ Данные.Изменение — объект перезаписан;
  • 📊 Данные.Проведение — документ проведён (или отменено проведение);
  • 🗑️ Данные.Удаление — объект удалён (пометка и физическое удаление — разные события записи).

Чего журнал не хранит: прежних значений реквизитов. Он фиксирует сам факт «документ № такой-то изменён пользователем Ивановым в 14:32», но не покажет, что сумма была 1000, а стала 10 000. Для сравнения «до и после» нужен отдельный механизм — версионирование объектов (см. ниже).

Физически журнал лежит в файле 1Cv8.lgd (база SQLite) в каталоге 1Cv8Log. В файловой базе — рядом с 1Cv8.1CD, в клиент-серверной — в рабочем каталоге кластера. Формат SQLite используется с платформы 8.3.5; на более старых номерах встречаются файлы .lgf.

Настройка журнала регистрации в Конфигураторе

По умолчанию журнал пишет не все события. Уровень регистрации задаётся только в Конфигураторе: Администрирование → Настройка журнала регистрации.

В диалоге два параметра:

  1. Какие события регистрировать. Выберите уровень важности не ниже «Информация» — иначе события добавления, изменения, проведения и удаления данных писаться не будут (они имеют важность «Информация»). Уровни «Ошибка» и «Предупреждение» оставят в журнале только сбои и предупреждения.
  2. Разделять хранение по периодам. Варианты: не разделять, день, неделя, месяц. Разделение по месяцу удобно: журнал не разрастается в один огромный файл, старые периоды можно архивировать и удалять по отдельности.

Смена уровня регистрации в клиент-серверной базе требует исключительного (монопольного) доступа только если вы одновременно обновляете структуру; саму настройку журнала можно менять и при работающих пользователях. А вот отдельная регистрация доступа к данным (событие чтения) резко увеличивает объём журнала и нагрузку — включайте её точечно и ненадолго.

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

Чтение и фильтрация записей журнала

Открыв журнал, вы увидите ленту событий. Главное здесь — отбор, иначе в тысячах строк ничего не найти. Нажмите «Установить отбор» (кнопка с воронкой) и задайте условия:

  • Пользователь — чьи действия ищем;
  • Интервал — дата и время от/до;
  • Метаданные — например, только «Документ.РеализацияТоваровУслуг»;
  • События — отметьте «Данные.Изменение», «Данные.Удаление» и другие нужные;
  • Прочие данные — поиск по тексту комментария или представлению объекта.

Чтобы перейти от записи к самому объекту, выделите строку и выберите команду открытия данных (в меню «Ещё» или по двойному щелчку по ссылке объекта) — откроется та самая изменённая форма, если объект ещё существует.

Журнал можно выгрузить в файл: команда сохранения в формате .mxl или через конфигуратор. Для разовой передачи аудитору удобнее сохранить отфильтрованный список в таблицу и отдать её.

Частая задача — «кто удалил документ». Поставьте отбор по событию «Данные.Удаление» и метаданным нужного вида документа за интересующий день. Пользователь и время будут в записи, даже если сам документ уже не найти в базе.

Версионирование: что именно поменялось в документе

Когда нужно не просто «кто тронул», а «что конкретно исправили» — поле за полем, со старым и новым значением — включите версионирование объектов. Это механизм Библиотеки стандартных подсистем (БСП), он есть в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других типовых.

Порядок:

  1. В разделе Администрирование найдите настройку «Версионирование объектов» (в разных конфигурациях — в группе общих настроек или настроек работы с программой).
  2. Выберите объекты, которые нужно версионировать (документы, справочники), и момент создания версии — при записи или при проведении.
  3. Теперь при каждом сохранении объекта платформа запоминает его состояние целиком.

Чтобы сравнить версии, откройте нужный документ и в меню «Ещё» выберите команду истории изменений (в типовых — «История изменений» или «Версии объекта»). Система покажет список версий с автором и датой, а по кнопке сравнения — таблицу различий: какой реквизит был, каким стал.

Версии занимают место в базе — хранится копия объекта на каждое сохранение. Для часто меняющихся документов задайте срок хранения версий или ограничьте список версионируемых объектов, иначе база быстро растёт.

Кроме истории по конкретному объекту, в типовых есть отчёт по версиям — он сводит правки за период по всем версионируемым объектам сразу. Через него удобно разбирать «что вообще меняли на прошлой неделе», не открывая документы по одному.

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

Контроль изменений на уровне СУБД

Если базы на SQL Server или PostgreSQL и нужна картина глубже штатных средств — трассировку ведут на уровне СУБД. Это инструмент администратора и DBA, не рядового пользователя.

Для Microsoft SQL Server:

  • Extended Events — современный и лёгкий способ ловить запросы; трассу настраивают в SQL Server Management Studio.
  • SQL Server Profiler — старый трассировщик, нагляднее, но тяжелее для нагруженной базы.
  • SQL Server Audit / Change Data Capture — встроенный аудит и захват изменений по таблицам.

Для PostgreSQL — расширение pgAudit, параметр log_statement и триггеры.

Главная сложность: в СУБД имена таблиц и полей обезличены — вместо «РеализацияТоваровУслуг» вы увидите что-то вроде _Document123, вместо реквизитов — _Fld456. Сопоставить их с метаданными помогает встроенный метод ПолучитьСтруктуруХраненияБазыДанных() — он возвращает соответствие объектов метаданных именам таблиц и полей СУБД. Выгрузите это соответствие один раз и держите под рукой.

Напрямую менять структуру базы 1С на уровне СУБД (добавлять триггеры, колонки, индексы в таблицы платформы) нельзя — это снимает базу с поддержки и ломается при обновлении. Трассировка и аудит на чтение допустимы, изменение таблиц 1С — нет.

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

Технологический журнал и внешние системы мониторинга

Рядом с журналом регистрации платформа ведёт технологический журнал — низкоуровневый лог событий сервера: тексты запросов (DBMSSQL), обращения к данным (SDBL), исключения (EXCP), блокировки. Включается файлом logcfg.xml в каталоге conf платформы: в нём описывают, какие события и в какой каталог писать.

Технологический журнал — про диагностику производительности и ошибок, а не про бизнес-смысл «кто изменил контрагента». Но по тексту DBMSSQL можно восстановить, какой именно запрос на запись выполнился и из какого сеанса.

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

Для постоянного контроля несколько подходов:

  • Мониторинг кластера через rac — утилита администрирования сервера показывает сеансы, соединения и блокировки в реальном времени (rac session list, rac cluster list). Полезно видеть, кто сейчас в базе и что держит.
  • Внешние системы аудита и DLP — отдельные продукты класса SIEM/DLP собирают события из журналов 1С и сопоставляют с действиями на рабочих местах. Это уже корпоративный уровень, настраивается силами службы безопасности.
  • Выгрузка журнала во внешнее хранилище — журнал периодически выгружают в файл и грузят в систему аналитики (см. следующий раздел).

Автоматический аудит регламентным заданием

Чтобы не ходить в журнал руками, аудит автоматизируют регламентным заданием на сервере. Логика простая: по расписанию прочитать свежие события журнала, отобрать подозрительные (удаления, изменения ключевых документов, работа в нерабочее время) и отправить ответственному письмо или уведомление.

Прочитать и выгрузить журнал из встроенного языка помогают методы:

  • ВыгрузитьЖурналРегистрации(ИмяФайла, Отбор) — сохраняет отобранные события в XML-файл;
  • чтение журнала с отбором по интервалу, пользователю и событиям — чтобы собрать нужные записи в таблицу значений и обработать.

Дальше задание формирует сводку и шлёт её — например, по электронной почте через штатную подсистему работы с почтой в БСП.

Под «подозрительными» обычно понимают конкретный набор признаков: удаление проведённых документов, изменение сумм в закрытом периоде, вход в базу ночью или в выходные, массовая правка от одного пользователя за короткое время. Зашейте в отбор именно их — тогда письмо приходит только по делу, а не на каждую рутинную запись.

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

Чтобы регламентные задания вообще выполнялись, в клиент-серверной базе они работают автоматически на сервере; в файловой базе их выполняет отдельный сеанс (например, запущенный клиент с модулем заданий). Проверьте, что расписание задания задано и оно не отключено.

Такой аудит не заменяет журнал и версии — он их «озвучивает»: превращает молчаливое накопление событий в активные сигналы, которые приходят сами.

Чек-лист: контроль изменений под ключ

Настройка отслеживания изменений в 1С
Выполнено: 0 / 8

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

Видно ли в журнале регистрации, что было в документе до правки?
Нет. Журнал фиксирует только факт изменения: пользователя, время и объект. Прежние и новые значения реквизитов хранит версионирование объектов — его нужно включать отдельно.
Можно ли узнать, кто удалил документ, если документа уже нет в базе?
Да. Поставьте в журнале отбор по событию «Данные.Удаление» и виду документа за нужный период. Пользователь и время останутся в записи, даже если сам объект удалён.
Почему в журнале нет событий изменения данных?
Скорее всего, уровень регистрации в Конфигураторе выставлен выше «Информации» (только ошибки или предупреждения). События данных имеют важность «Информация» — поднимите уровень до неё.
Сильно ли версионирование раздувает базу?
Заметно, если версионировать всё подряд: на каждое сохранение пишется копия объекта. Ограничьте список версионируемых объектов и задайте срок хранения версий — тогда рост контролируем.
Можно ли повесить триггеры на таблицы 1С в SQL для аудита?
Менять структуру таблиц платформы нельзя — это снимает базу с поддержки и ломается при обновлении. Аудит на уровне СУБД ведут на чтение: Extended Events, SQL Server Audit, pgAudit, не трогая таблицы 1С.