Кто и что менял в базе 1С: разбор действий пользователя по журналам
Содержание
Узнать, что делал пользователь в 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. Задайте отбор
По умолчанию журнал показывает тысячи строк за последние дни. Без отбора в нём не найти ничего. Нажмите «Установить отбор» и заполните:
- Интервал — дата и время начала и конца. Сужайте до часа, если знаете примерное время.
- Пользователи — отметьте одного или нескольких.
- События — оставьте только нужные, например «Данные. Изменение» и «Данные. Удаление».
- Метаданные — тип объекта: документ «Реализация (акт, накладная, УПД)», справочник «Контрагенты».
- Данные — конкретный документ или элемент справочника.
Отбор по полю «Данные» — главный приём, когда вопрос звучит «кто удалил счёт № 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 | Правка основной конфигурации |
Как не ошибиться при чтении
- 🗑 Пометка удаления — это «Изменение», а не «Удаление». Пользователь ставит пометку, документ записывается. Событие «Данные. Удаление» появляется, когда помеченные объекты удаляют обработкой. Часто это делает администратор, а не автор пометки.
- 🔁 Перепроведение даёт «Проведение». Групповое перепроведение за месяц оставит сотни записей от одного пользователя за пару минут.
- 🤖 Фоновые задания и обмены. Записи от регламентных заданий идут под служебным пользователем или под пользователем, от имени которого настроено задание. Если в поле «Приложение» стоит «Фоновое задание», живой человек тут ни при чём.
- 👥 Пустой пользователь. Если в базе нет списка пользователей, поле пустое. Если все входят под одним «Администратором», разделить действия людей можно только по компьютеру.
Почему в журнале нет нужных записей
Журнал регистрации можно ограничить и почистить. Если записей за нужный день нет, проверьте настройку в Конфигураторе: Администрирование → Настройка журнала регистрации.
Здесь два параметра:
- Уровень регистрации. Записи об изменении данных относятся к информационным. Если стоит «Не регистрировать события», «Регистрировать ошибки» или «Регистрировать ошибки и предупреждения», вы их не увидите. Для аудита нужен уровень с информацией или «Регистрировать все события».
- Разделять журнал по периодам. Влияет на файлы: журнал режется по дням, неделям, месяцам или годам.
В той же форме есть кнопка «Сократить». Она удаляет записи до указанной даты. После сокращения старые события восстановить нельзя, разве что из резервной копии папки 1Cv8Log.
Включите папку 1Cv8Log в регулярное резервное копирование. Если кто-то сократит журнал, у вас останется копия для разбора.
Если журнал подозрительно короткий, найдите в нём событие о сокращении или изменении параметров журнала. Оно тоже регистрируется, с именем пользователя.
История изменений: какие реквизиты поменяли
Журнал регистрации скажет «Иванова изменила документ в 14:32». Что именно она поправила — сумму, контрагента или дату, — он не покажет. Для этого в конфигурациях на БСП есть версионирование объектов.
Как включить
- Откройте
Администрирование → Общие настройки. - В группе «История изменений» установите флажок «Хранить историю изменений».
- Перейдите по ссылке настройки и выберите типы объектов, по которым хранить версии.
- Для документов укажите режим: хранить версии при записи или только при проведении.
После этого при каждой записи объекта сохраняется его копия. В форме документа появится команда «История изменений» (обычно в меню «Ещё»). Она показывает список версий с автором и датой. Две версии можно сравнить: программа подсветит изменённые реквизиты и строки табличных частей.
История работает только с момента включения. Задним числом узнать, что было в документе до правки, она не поможет.
Сколько это стоит по месту
Каждая версия — полная копия объекта. Для справочника номенклатуры с частыми правками база вырастет заметно. Типичный компромисс:
- ✅ документы, влияющие на учёт: реализации, поступления, банковские выписки, кадровые приказы;
- ✅ справочники «Контрагенты», «Договоры», «Организации»;
- ❌ служебные регистры и документы обменов — их правят программы, а не люди.
В БСП есть настройка срока хранения версий. Устаревшие версии удаляет регламентное задание.
Для персональных данных есть отдельный механизм: регистрация событий доступа. Он пишет в журнал, кто открывал карточки физлиц. Включается в настройках защиты персональных данных, в разделе пользователей и прав.
Анализ на уровне сервера и СУБД
Когда журнал регистрации не помогает, остаются два инструмента администратора сервера.
Технологический журнал
Технологический журнал пишет то, что происходит внутри рабочих процессов: запросы к базе, вызовы сервера, исключения, блокировки. Каждое событие содержит свойство 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С ходят в СУБД под одним логином — тем, что указан в параметрах базы на кластере. СУБД не знает, кто из бухгалтеров стоит за запросом. Сопоставлять приходится по времени с технологическим журналом.
- Имена таблиц служебные:
_Document123,_Reference45. Соответствие объектам конфигурации даёт методПолучитьСтруктуруХраненияБазыДанных().
Аудит СУБД полезен в одном случае: подозрение, что данные меняли в обход 1С, прямыми запросами. Тогда в журнале регистрации следов нет, а в аудите СУБД — есть.
Не правьте данные 1С прямыми SQL-запросами. Платформа не узнает об изменениях, итоги регистров разойдутся с движениями.
Особенности файловой базы
В файловом режиме те же механизмы работают с оговорками.
- 📂 Журнал лежит в общей папке. Папка
1Cv8Logнаходится рядом с базой, к которой у пользователей есть доступ на запись. Любой, кто знает путь, может удалить файлы журнала проводником. В клиент-серверной базе журнал лежит на сервере, и доступа к нему у пользователей нет. - 🖥 Технологический журнал пишется на клиенте. Файловую базу
обрабатывает процесс
1cv8.exeна компьютере пользователя. Значит,logcfg.xmlнадо класть на каждую машину, а собирать логи — с каждой. - 🌐 Терминальный сервер . Если все работают через RDP, поле «Компьютер» у всех одинаковое. Различить людей можно только по пользователю 1С.
- 🔐 Нет аудита СУБД. Файл
1Cv8.1CDне ведёт своего протокола. Если кто-то скопировал базу или открыл её сторонней утилитой, журнал регистрации этого не покажет.
Для файловой базы, где важен контроль, порядок такой: у каждого сотрудника свой пользователь 1С с паролем, права на папку базы урезаны, копия 1Cv8Log уходит в резервное копирование
каждую ночь.
Частые вопросы
Можно ли увидеть, какие отчёты формировал пользователь?
Как узнать, кто сейчас работает в базе?
Администрирование → Активные пользователи или в разделе «Обслуживание» пользовательского режима. Двойной щелчок по строке открывает журнал регистрации с отбором по этому сеансу.Журнал показывает изменение, но документ выглядит как раньше. Почему?
Можно ли открыть файл журнала без 1С?
1Cv8.lgd — база SQLite, её читают любым просмотрщиком SQLite. Работайте только с копией файла: открытие рабочего журнала сторонней программой может помешать платформе писать в него.