Поиск автора пометки удаления в 1С 8.3: журнал регистрации, версии и файл лога
Содержание
Узнать, кто пометил объект на удаление в 1С, можно через журнал регистрации: Администрирование → Обслуживание → Журнал регистрации, отбор по полю «Данные» (сам документ или элемент справочника) и по событию «Данные. Изменение». В строке события видны пользователь, компьютер, время и программа, через которую сделано изменение.
Частое заблуждение — искать автора в карточке объекта. Поле «Ответственный» или «Автор» в документе показывает, кто его создал, а не кто поставил пометку. Сама пометка удаления — это просто флаг. В таблицах базы хранится только его значение, без имени пользователя. Поэтому ответ ищут в журнале регистрации или в истории изменений объекта, если она была включена заранее.
Что фиксирует 1С при пометке на удаление
Пометка удаления — это запись объекта с изменённым реквизитом ПометкаУдаления. Платформа пишет такое действие в журнал регистрации как обычное изменение данных. Отдельного события «Пометка удаления» в стандартном журнале нет.
Что это значит на практике:
- 📝 для справочника пометка выглядит как событие «Данные. Изменение»;
- 📄 для проведённого документа пометка ещё и снимает проведение, поэтому в журнале рядом может оказаться событие «Данные. Отмена проведения»;
- 🗑️ физическое удаление через обработку удаления помеченных объектов пишется как «Данные. Удаление» — так видно, кто удалил объект окончательно;
- 👥 если пометили группу справочника, пометку получают и все вложенные элементы — в журнале будет серия изменений в одну секунду.
Отсюда главный приём: ищем последнее изменение объекта перед тем, как пометку заметили. Если после пометки объект больше никто не трогал, последняя запись «Изменение» и есть нужное действие.
Журнал покажет действие, только если в базе включена регистрация событий уровня «Информация». В Конфигураторе это Администрирование → Настройка журнала регистрации. Если там выбрано «Регистрировать ошибки», изменений данных в журнале не будет — восстановить их задним числом нельзя.
Как найти пользователя в журнале регистрации
Журнал регистрации открывается из пользовательского режима. Нужны права администратора или роль, дающая доступ к журналу.
| Конфигурация | Где открыть журнал |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Обслуживание → Журнал регистрации |
| ЗУП 3.1 | Администрирование → Обслуживание → Журнал регистрации |
| Управление торговлей 11 | НСИ и администрирование → Администрирование → Обслуживание → Журнал регистрации |
| Любая конфигурация | Все функции → Стандартные → Журнал регистрации |
Меню «Все функции» появляется после включения флага «Отображать команду “Все функции”» в настройках программы (меню с тремя полосками в заголовке окна → Сервис → Параметры).
Шаг 1. Задайте период
Откройте журнал и сузьте период до дней, когда пометка могла появиться. Журнал крупной базы за год содержит миллионы записей. Без периода отбор работает долго, а клиент может зависнуть.
Шаг 2. Отберите сам объект
Откройте настройку отбора (ссылка или кнопка «Отбор» над списком) и заполните:
- Метаданные — вид объекта, например «Документ. Реализация (акт, накладная, УПД)» или «Справочник. Номенклатура».
- Данные — конкретный документ или элемент. Его выбирают из списка, как в обычном поле ввода.
- События — «Данные. Изменение» и «Данные. Отмена проведения».
- Примените отбор.
Шаг 3. Прочитайте нужную строку
Отсортируйте список по дате и посмотрите последние записи. В каждой строке есть:
- 👤 Пользователь — имя из списка пользователей базы;
- 💻 Компьютер — имя рабочей станции;
- 🧩 Приложение — «Тонкий клиент», «Веб-клиент», «Фоновое задание», «COM-соединение» и т.д.;
- 🕐 Дата и время с точностью до секунды.
Откройте строку двойным щелчком: внизу окна будет представление данных и номер сеанса. По номеру сеанса удобно найти соседние действия того же человека — что он делал до и после.
Если в колонке «Приложение» стоит «Фоновое задание» или «COM-соединение», пометку поставил не человек, а обмен данными, регламентное задание или внешняя обработка. Пользователь в этом случае — служебная учётная запись, под которой работает обмен. Ищите источник в настройках синхронизации или в списке регламентных заданий.
Если объект уже удалён
Когда объект удалили физически, выбрать его в поле «Данные» нельзя — ссылка битая. Тогда отбирайте только по «Метаданным» и событию «Данные. Удаление» за нужный период. В колонке «Данные» останется представление объекта: номер и дата документа или наименование элемента. По нему и находят строку.
История изменений: кто и когда сменил пометку
Второй источник — история изменений объектов (версионирование). Механизм есть во всех типовых конфигурациях на БСП. Он хранит копии объекта при каждой записи вместе с автором версии.
История работает только с момента включения. Если её не включили заранее, для уже помеченных объектов версий не будет.
Как включить историю изменений
- Откройте
Администрирование → Общие настройки(в УТ 11 —НСИ и администрирование → Администрирование → Общие настройки). - В группе «История изменений» установите флаг «Хранить историю изменений».
- Перейдите по ссылке «Настроить» и для нужных видов документов и справочников выберите вариант хранения версий.
- Задайте срок хранения, чтобы регистр не разрастался.
Как посмотреть версии объекта
Откройте документ или элемент справочника. Команда «История изменений» находится в меню «Ещё» формы или на панели навигации объекта. В списке версий видны номер, дата, автор и комментарий.
Выделите две соседние версии и сравните их. В отчёте о различиях отражается, какие реквизиты поменялись. Версия, в которой пометка удаления сменилась с «Нет» на «Да», и даст автора.
История изменений надёжнее журнала в одном случае: журнал периодически сокращают, а версии хранятся по своему сроку. Для критичных справочников (контрагенты, номенклатура, договоры) имеет смысл держать версии хотя бы год.
Запрос в консоли: найти все помеченные объекты и их авторов
Консоль запросов не покажет автора пометки напрямую — в таблицах объектов его нет. Но она быстро собирает список всего помеченного, а при включённой истории — и авторов последних версий.
Консоль запросов — внешняя обработка. Её открывают через меню с тремя полосками → Файл → Открыть. В типовых базах для этого нужны права администратора, а в некоторых настройках безопасности — подтверждение запуска внешних обработок.
Запрос всех помеченных документов одного вида:
ВЫБРАТЬ
Док.Ссылка,
Док.Дата,
Док.Номер,
Док.Ответственный
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
Док.Дата УБЫВ
«Ответственный» здесь — тот, кто вёл документ, а не тот, кто его пометил. Поле полезно как подсказка, к кому идти с вопросом.
Если история изменений включена, авторов версий можно взять из регистра сведений «Версии объектов»:
ВЫБРАТЬ
Версии.Объект,
Версии.НомерВерсии,
Версии.ДатаВерсии,
Версии.АвторВерсии
ИЗ
РегистрСведений.ВерсииОбъектов КАК Версии
ГДЕ
Версии.Объект В
(ВЫБРАТЬ
Док.Ссылка
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.ПометкаУдаления)
УПОРЯДОЧИТЬ ПО
Версии.Объект,
Версии.НомерВерсии УБЫВ
Последняя версия каждого помеченного документа почти всегда и есть пометка. Состав полей регистра зависит от версии БСП — если запрос выдаёт ошибку, откройте регистр в Конфигураторе и сверьте имена.
Выгрузка журнала кодом
Для разовой проверки по многим объектам журнал удобно выгрузить программно. Код выполняется на сервере, например во внешней обработке:
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", НачалоДня(ТекущаяДата()) - 7 * 86400);
Отбор.Вставить("Событие", "_$Data$_.Update");
Таблица = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(Таблица, Отбор);
Для Каждого Запись Из Таблица Цикл
Сообщить(Формат(Запись.Дата, "ДФ='dd.MM.yyyy HH:mm:ss'") + " | " + Запись.ИмяПользователя + " | " + Запись.ПредставлениеДанных);
КонецЦикла;
_$Data$_.Update — внутреннее имя события «Данные. Изменение». Отбор за 7 дней по крупной базе может вернуть десятки тысяч строк, поэтому добавьте в отбор ключ Метаданные или сузьте период.
Чтение файла журнала через SQL
Этот способ нужен, когда журнал не открывается из 1С: база повреждена, журнал огромный или нужен анализ сразу по многим базам.
Журнал регистрации хранится не в СУБД базы, а в отдельных файлах:
- 📁 файловая база — папка
1Cv8Logрядом с файлом1Cv8.1CD; - 🖥️ клиент-серверная база
— папка
1Cv8Logвнутри каталога базы на сервере 1С, обычноsrvinfo\reg_1541\<GUID базы>\1Cv8Log.
В формате .lgd (используется с платформы 8.3.5) журнал — это база SQLite. Её открывают любым клиентом SQLite, например DB Browser for SQLite или утилитой sqlite3.
Работайте с копией файла .lgd, а не с рабочим. Платформа держит файл открытым и пишет в него; запросы к живому файлу могут его заблокировать.
Пример запроса по копии:
SELECT
datetime(e.date / 10000 - 62135596800, 'unixepoch') AS event_time,
u.name AS user_name,
ev.name AS event_name,
e.dataPresentation
FROM EventLog e
LEFT JOIN UserCodes u ON u.code = e.userCode
LEFT JOIN EventCodes ev ON ev.code = e.eventCode
WHERE ev.name = '_$Data$_.Update'
AND e.dataPresentation LIKE '%0000-000123%'
ORDER BY e.date DESC;
В dataPresentation подставьте фрагмент номера документа или наименования элемента. Перед выводами сверьте время одной-двух записей с журналом в 1С: так вы убедитесь, что пересчёт даты и часовой пояс совпадают.
Если вместо .lgd в папке лежат файлы .lgp и .lgf — это старый текстовый формат. SQL к нему не применить; такие журналы читают из 1С или сторонними парсерами.
В таблицах самой базы на MS SQL или PostgreSQL пометка хранится в поле _Marked — только флаг, без пользователя и времени. Искать автора в СУБД базы бесполезно.
Как вернуть объект и не допустить повторной пометки
Снять пометку
Пока объект только помечен, вернуть его просто:
- Найдите объект в списке. Помеченные строки отмечены перечёркнутым значком.
- Выделите строку и нажмите
Del— повторное нажатие снимает пометку. То же делает команда «Пометить на удаление / Снять пометку» в меню «Ещё». - Для документа: пометка сняла проведение. Откройте документ и проведите его заново, иначе движения по регистрам не вернутся.
Для элемента справочника, помеченного вместе с группой, снимите пометку с группы — платформа предложит снять её и с подчинённых.
Если объект уже удалён
После удаления помеченных объектов вернуть объект можно только из резервной копии. Порядок такой: развернуть копию в отдельную базу, найти там объект и перенести его в рабочую базу выгрузкой в XML или обработкой переноса данных. Восстанавливать рабочую базу из копии целиком нельзя — пропадут все данные, введённые после неё.
Профилактика
Набор мер, который реально снижает число «загадочных» пометок:
| Мера | Что даёт | Где настроить |
|---|---|---|
| Уровень журнала «Регистрировать все» | Видно каждое изменение | Конфигуратор: Администрирование → Настройка журнала регистрации |
| История изменений | Автор и состав каждой версии | Администрирование → Общие настройки |
| Даты запрета изменения | Нельзя пометить документ закрытого периода | В разделе Администрирование, группа «Пользователи и права» |
| Ограничение права «Интерактивная пометка удаления» | Пометить может только узкий круг | Роль в расширении конфигурации |
| Ручной запуск удаления помеченных | Есть время найти и вернуть объект | Регламентные задания в разделе Администрирование → Обслуживание |
Отдельно проверьте регламентное задание удаления помеченных объектов. Если оно включено по расписанию, помеченный объект может исчезнуть ночью — и у вас останется только журнал.
Право на интерактивную пометку удаления меняют через свою роль в расширении, а не правкой типовых ролей. Изменение типовой роли снимает конфигурацию с полной поддержки и усложняет обновления.