Кто и когда правил документ: ищем следы изменений в базе 1С
Содержание
Проверить, что документ был изменен в 1С, быстрее всего через журнал регистрации: откройте Администрирование → Обслуживание → Журнал регистрации, задайте отбор по самому документу и посмотрите события «Данные. Изменение», «Данные. Проведение» и «Данные. Отмена проведения». В каждой записи видно дату, время, пользователя и компьютер.
Журнал отвечает на вопрос «кто и когда», но не показывает, какое поле поменяли. Чтобы увидеть старую и новую сумму, нужна история изменений (версионирование). Если её не включили заранее, остаётся сравнивать движения документа с отчётами и резервной копией.
Порядок ниже подходит для типовых конфигураций на платформе 8.3 с интерфейсом «Такси»: Бухгалтерия 3.0, ЗУП 3.1, УТ 11. Журнал регистрации — механизм самой платформы, поэтому он есть в любой базе.
Журнал регистрации: как найти записи по конкретному документу
В Бухгалтерии 3.0 и ЗУП 3.1 журнал открывается из раздела Администрирование → Обслуживание. Если раздела не видно, значит, у вас нет административных прав: попросите администратора базы или включите режим «Все функции».
Как включить «Все функции»:
- Откройте главное меню (кнопка с тремя полосками в левом верхнем углу).
- Выберите
Сервис → Параметры. - Отметьте флажок «Отображать команду “Все функции”».
- Теперь журнал доступен по пути
Все функции → Стандартные → Журнал регистрации.
В Конфигураторе журнал открывается через Администрирование → Журнал регистрации. Этот способ удобен, когда пользовательский режим не запускается или нужно смотреть журнал без занятия лицензии на клиента.
Отбор по документу
Без отбора журнал показывает тысячи строк в день. Сузьте его:
- Нажмите «Установить отбор» в командной панели журнала.
- Задайте интервал: день, когда документ мог измениться, плюс запас в пару дней.
- В поле «Данные» выберите сам документ. Можно выбрать тип (например, «Реализация (акт, накладная, УПД)»), а потом конкретный документ.
- В списке событий оставьте только группу «Данные».
- Примените отбор.
💡 Быстрый вариант: найдите в журнале любую строку с нужным документом, выделите ячейку с его представлением и включите отбор по значению текущей ячейки. Список сразу сожмётся до записей по одному объекту.
Если документ уже удалён
Удалённый документ нельзя выбрать в отборе: ссылки на него в базе больше нет. Поступите иначе:
- В отборе по данным укажите только тип документа, без конкретного экземпляра.
- Оставьте единственное событие «Данные. Удаление».
- Ищите строку по номеру и дате в колонке представления данных: журнал хранит представление объекта на момент записи.
Так находят, кто удалил документ, даже если в списке документов от него не осталось следа. Если документ ещё помечен на удаление, но не удалён, он открывается обычным способом и выбирается в отборе как любой другой.
Как читать события: что именно означает каждая запись
В журнале регистрации у каждого действия с документом своё событие. От них зависит вывод «документ правили» или «документ просто открыли».
| Событие | Что произошло | Значит ли, что документ изменён |
|---|---|---|
| Данные. Добавление | Документ создан и впервые записан | Это момент рождения документа |
| Данные. Изменение | Документ записан повторно (без проведения) | Да, или его перезаписали без правок |
| Данные. Проведение | Документ проведён (в том числе повторно) | Перепроведение пересчитало движения |
| Данные. Отмена проведения | Движения документа удалены | Да, учёт по нему пропал |
| Данные. Удаление | Документ удалён из базы физически | Да, документа больше нет |
Пометка на удаление тоже фиксируется как запись документа, поэтому ищите её среди событий изменения и проведения.
Что ещё есть в каждой строке:
- 👤 Пользователь — под каким именем зашли в базу. Если все работают под одним пользователем, вывод «кто» сделать нельзя.
- 💻 Компьютер — имя машины. Помогает, когда учётная запись общая.
- 🧩 Приложение — тонкий клиент, Конфигуратор, фоновое задание, COM-соединение. Изменение от фонового задания или обмена данными — это не ручная правка.
- 🔁 Статус транзакции — «Зафиксирована» или «Отменена». Отменённая транзакция значит, что запись не прошла и документ остался прежним.
Событие «Данные. Изменение» появляется при любой записи, даже если пользователь открыл документ и нажал «Записать» без правок. Факт записи — ещё не доказательство, что поменяли суммы.
История изменений документа: что поменяли в полях
Чтобы увидеть, какое поле было и каким стало, нужна история изменений (в разработке её называют версионированием объектов). Механизм есть в типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других.
История пишется только с момента включения. Для правок, сделанных до этого, версий не будет, и восстановить их задним числом нельзя.
Как включить
- Откройте
Администрирование → Общие настройки. - Найдите группу «История изменений» и отметьте «Хранить историю изменений».
- Перейдите по ссылке настройки хранения и укажите, для каких видов документов и справочников вести историю.
- Для каждого вида выберите режим: при записи или только при проведении.
Начните с документов, где цена ошибки высокая: реализации, поступления, банковские выписки, начисления зарплаты.
Как посмотреть версии
- Откройте документ.
- В меню «Ещё» выберите «История изменений».
- В списке версий видно номер, дату, автора и комментарий.
- Выделите две версии и сравните их.
Отчёт сравнения подсвечивает отличающиеся реквизиты и строки табличных частей. Видно, кто поменял количество в строке 3 со 100 на 10, или кто сменил контрагента.
Из отдельной версии можно открыть документ в том виде, в каком он был на момент её записи, и при необходимости вернуться к ней. Возврат перезаписывает текущий документ, поэтому делайте его только по согласованию с тем, кто ведёт этот участок учёта.
💡 История изменений растёт быстро. В настройках хранения задайте срок, после которого старые версии удаляются, иначе база заметно потяжелеет за год.
Проверка через движения и проводки документа
Если журнал почищен, а история не включалась, остаётся косвенная проверка: сравнить, что документ сделал в учёте сейчас и что он делал раньше.
Шаг 1. Посмотрите текущие движения. В форме документа нажмите кнопку «Показать проводки и другие движения документа» (значок «ДтКт»). Там видны проводки и записи всех регистров, которые документ сформировал.
Шаг 2. Сравните с прежними данными. Источники «как было»:
- 📄 Отчёт, выгруженный раньше. Оборотно-сальдовая ведомость или карточка счёта за прошлый период, сохранённая в файл или распечатанная.
- 📊 Сданная отчётность. Если декларация уже ушла, а цифры по тому же счёту и периоду сейчас другие — в периоде что-то изменилось.
- 💾 Резервная копия базы. Разверните копию в отдельную информационную базу и откройте тот же документ. Это самый надёжный способ, если версионирования нет.
Шаг 3. Сузьте поиск отчётами. Карточка счёта или анализ счёта за период покажут, какие документы формируют разницу. Дальше по каждому подозрительному документу смотрите журнал регистрации.
В Бухгалтерии 3.0 есть ещё подсказка: если после закрытия месяца документ прошлого периода перепровели, обработка «Закрытие месяца » сообщает, что нужно перепровести документы. Это сигнал, что в закрытом периоде что-то трогали.
Резервную копию разворачивайте только в новую пустую базу. Загрузка копии поверх рабочей базы затрёт всё, что сделали после её создания.
Технические способы для администраторов и разработчиков
Где лежат файлы журнала
Журнал регистрации — это файлы на диске:
- 🗂 Файловая база — папка
1Cv8Logвнутри каталога базы. - 🖥 Клиент-серверная база
— папка
1Cv8Logв каталоге базы внутриsrvinfo\reg_1541\<GUID базы>на сервере 1С.
Если журнал в программе урезан, проверьте резервные копии этих папок. Скопируйте старую папку журнала в каталог тестовой базы и откройте журнал там.
Уровень регистрации
В Конфигураторе: Администрирование → Настройка журнала регистрации. События изменения данных пишутся на уровне информации, поэтому уровень «Регистрировать ошибки» или «Не регистрировать» их отключает. Для контроля изменений нужен уровень «Регистрировать все события».
Там же задают разделение журнала на файлы по периодам. Мелкие файлы проще архивировать и быстрее открывать.
Выгрузка журнала кодом
Для разовой проверки удобна обработка, которая выгружает журнал по одному документу в таблицу. Метод ВыгрузитьЖурналРегистрации принимает структуру отбора:
&НаСервере
Процедура ПоказатьИзмененияНаСервере(ДокументСсылка)
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", ДобавитьМесяц(ТекущаяДатаСеанса(), -3));
Отбор.Вставить("Данные", ДокументСсылка);
События = Новый Массив;
События.Добавить("_$Data$_.Update");
События.Добавить("_$Data$_.Post");
События.Добавить("_$Data$_.Unpost");
События.Добавить("_$Data$_.Delete");
Отбор.Вставить("Событие", События);
Таблица = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(Таблица, Отбор);
Для Каждого Строка Из Таблица Цикл
Сообщить(Формат(Строка.Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")
+ " | " + Строка.ИмяПользователя
+ " | " + Строка.Компьютер
+ " | " + Строка.Событие);
КонецЦикла;
КонецПроцедуры
Код выводит дату, пользователя, компьютер и событие по каждой записи за три месяца. Вызов идёт на сервере: на клиенте метод недоступен.
Технологический журнал и СУБД
Технологический журнал включают файлом logcfg.xml в каталоге настроек платформы. Он фиксирует вызовы и запросы, а не бизнес-события, поэтому для поиска правок документа нужен редко. Им пользуются, когда запись шла в обход интерфейса: внешней обработкой, через COM-соединение или прямым запросом к СУБД.
Прямое изменение таблиц в SQL Server или PostgreSQL в журнал регистрации 1С не попадает совсем. Такие правки видны только средствами аудита самой СУБД, если они были включены.
Автоматический контроль изменений внешней обработкой
Ручная проверка хороша для одного документа. Если надо регулярно ловить правки задним числом, контроль лучше автоматизировать.
Типовая схема:
- Внешний отчёт на основе
ВыгрузитьЖурналРегистрациивыбирает события изменения и проведения за неделю. - Фильтр по дате документа. В отчёт попадают только записи, где дата документа раньше даты запрета изменения или раньше начала текущего месяца. Это и есть правки задним числом.
- Подключение в базу через
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Так отчёт доступен пользователям без доработки конфигурации. - Регламентное выполнение. Для дополнительных обработок в БСП можно настроить запуск по расписанию. Рассылку результата ответственному по почте обычно дописывают в самой обработке.
Второй рубеж — дата запрета изменения данных. Она не показывает, кто правил, но не даёт менять документы закрытого периода без отдельного права. Настройка находится в разделе «Администрирование». Можно задать общую дату и отдельные даты для конкретных пользователей.
Почему следы изменений не находятся
Даже при аккуратной проверке журнал иногда «молчит». Частые причины:
- 🕳 Отбор по неверному периоду. Журнал фильтрует по дате события, а не по дате документа. Документ от марта могли изменить в сентябре: смотрите интервал вплоть до сегодняшнего дня.
- ✂️ Журнал сокращали. В настройке журнала регистрации в Конфигураторе есть команда сокращения журнала. Если ранние записи обрываются ровной датой, журнал чистили.
- 👥 Общий пользователь. Если вся бухгалтерия входит под «Администратор», журнал покажет только имя компьютера.
- 🔄 Изменения пришли обменом. Запись от обмена данными выглядит как правка, но её источник — другая база. Смотрите колонку приложения и ищите изменение в базе-источнике.
- 🧪 Правка в копии базы. Пользователь мог изменить документ в тестовой копии, а смотреть отчёты в рабочей. Журналы у баз разные.
- 🗄 Изменение напрямую в СУБД. Как сказано выше, журнал регистрации такую запись не видит.
Если подозрение серьёзное, сначала скопируйте папку журнала и сделайте резервную копию базы. Пока вы разбираетесь, кто-то может сократить журнал или перезаписать документ ещё раз.