Поиск помеченных на удаление объектов и их автора в 1С
Содержание
Из списка документов пропал нужный приходный ордер, а в базе кто-то массово пометил на удаление реализации за прошлый месяц. Первое, что нужно, — увидеть все помеченные объекты в одном месте, второе — понять, кто и когда поставил пометку, и уже потом решать, снимать её или восстанавливать данные.
Пометка на удаление в 1С 8.3 — это ещё не удаление. Объект остаётся в базе, продолжает участвовать в движениях и отчётах, пока его не стёрла специальная обработка. Поэтому у вас почти всегда есть окно, чтобы всё отследить и откатить. Ниже — рабочие способы: от штатной обработки и журнала регистрации до запроса по базе и перехвата момента пометки подпиской на событие.
Чем пометка на удаление отличается от настоящего удаления
Пометка (крестик на иконке объекта в списке) — это обычный реквизит ПометкаУдаления со значением «Истина». Объект никуда не девается: по нему сохраняются проводки и остатки, он виден в списках и попадает в отчёты, если вы не отфильтровали помеченные.
Физически объект стирается только тогда, когда кто-то запускает обработку Удаление помеченных объектов и подтверждает удаление. До этого момента:
- 🔎 помеченный объект можно найти и открыть;
- ↩️ пометку можно снять в один клик;
- 📜 факт установки пометки записан в журнал регистрации как изменение данных.
Пока обработка удаления не запущена — данные целы, спешить с восстановлением из копии не нужно. Сначала найдите объекты и разберитесь в причинах.
Как показать все помеченные на удаление объекты сразу
Самый быстрый способ увидеть полный список — через штатную обработку. В «1С:Бухгалтерии 3.0» это Администрирование → Обслуживание → Удаление помеченных объектов.
В окне обработки выберите режим Выборочное удаление (не «Автоматическое»). Программа соберёт все помеченные объекты по всей базе и покажет их деревом по видам: документы, элементы справочников, значения характеристик. Это и есть готовый перечень того, что помечено прямо сейчас.
Ничего не удаляйте в этом окне, пока не разобрались. Снимите галочки со строк — и просто используйте список как отчёт «что помечено».
Если нужен список по одному конкретному виду объектов (например, только реализации) — удобнее открыть сам список документов и включить отбор по пометке удаления через Ещё → Настроить список → Отбор, поле Пометка удаления = Да. Так вы увидите помеченные документы прямо в их журнале, с датами и суммами.
Дальше выбор способа зависит от того, что именно вам нужно — просто список, автор, прежние значения или срез по условию:
| Способ | Что даёт | Когда применять |
|---|---|---|
| Обработка «Удаление помеченных» | Все помеченные объекты по всей базе | Нужен полный список прямо сейчас |
| Отбор в списке по пометке | Помеченные одного вида с реквизитами | Знаете, где искать |
| Журнал регистрации | Кто и когда поставил пометку или удалил | Нужны автор и время |
| История изменений (версии) | Прежние значения реквизитов, сравнение версий | Нужно сравнить «до/после» или восстановить |
| Запрос или SQL | Помеченные по условию (период, контрагент, сумма) | Нужен срез по фильтру |
Кто и когда поставил пометку: журнал регистрации
Журнал регистрации фиксирует все действия пользователей с данными. Открывается он в «1С:Бухгалтерии» по пути Администрирование → Обслуживание → Журнал регистрации.
Установка пометки на удаление — это запись объекта, поэтому в журнале она отражается как событие изменения данных, а физическое стирание обработкой — как событие удаления данных. Чтобы не листать тысячи строк, задайте отбор.
Полезные условия отбора:
- Событие — выберите события группы «Данные»: изменение (для пометки) и удаление (для физического стирания).
- Данные — укажите конкретный объект или вид, если знаете, что именно пропало.
- Пользователь — если подозреваете конкретного сотрудника.
- Период — сузьте до даты, когда объект ещё был в порядке.
В строке события видно имя пользователя, дату-время с точностью до секунды, компьютер и сеанс. Этого достаточно, чтобы восстановить картину: кто и в какой момент внёс изменение.
Чтобы от строки журнала сразу перейти к самому объекту, дважды щёлкните по записи — в карточке события есть ссылка на данные. А если нужно сохранить доказательную выборку, выгрузите отфильтрованный журнал в табличный документ командой из его командной панели: получится готовый список действий с авторами и временем.
Журнал хранит только те события, которые включены в его настройках. Если регистрация изменений данных была отключена, прошлых записей о пометке не будет — проверьте Настройка журнала регистрации и включите нужный уровень на будущее.
История изменений: увидеть автора и прежнее состояние
Журнал регистрации говорит, что объект менялся, но не показывает, какое значение было до и после. Для этого служит механизм версионирования (история изменений данных, ChangeLog в терминах стандартных подсистем).
Включается он в «1С:Бухгалтерии» по пути Администрирование → Общие настройки → История изменений. Там отмечаются виды объектов, по которым хранить версии. Версионирование фиксирует изменения только с момента, как вы его включили, — задним числом историю оно не покажет.
Если версионирование уже работало, у любого объекта откройте Ещё → История изменений. Для каждой версии видно:
- автора изменения и дату;
- значения всех реквизитов в этой версии;
- сравнение двух версий бок о бок — что именно поменялось.
Так вы точно увидите версию, в которой ПометкаУдаления переключилась на «Истина», и имя того, кто записал объект в этот момент.
Перехват момента пометки: подписка на событие и отладка
Если пометки ставятся регулярно и непонятно кем, настройте «ловушку» на будущее. Надёжнее отладчика здесь — подписка на событие ПередЗаписью, которая срабатывает при каждой записи объекта.
Создайте расширение конфигурации
(чтобы не менять типовую), добавьте в него подписку на событие ПередЗаписью нужного объекта и в обработчике запишите факт в журнал регистрации:
Процедура КонтрольПометкиПередЗаписью(Источник, Отказ) Экспорт
Если Источник.ПометкаУдаления Тогда
ТекстСобытия = "Пометку поставил пользователь: "
+ ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
ЗаписьЖурналаРегистрации("Контроль.ПометкаУдаления",
УровеньЖурналаРегистрации.Предупреждение,
Источник.Метаданные(),
Источник.Ссылка,
ТекстСобытия);
КонецЕсли;
КонецПроцедуры
Для справочников у события ПередЗаписью два параметра, как выше; у документов добавляются РежимЗаписи и РежимПроведения — заведите для них отдельную подписку с нужной сигнатурой.
Отладка пригодится, когда пометку ставит не человек, а код (обмен, обработка, регламентное задание). Включите отладку по протоколу в настройках сервера, подключитесь отладчиком к нужному сеансу, поставьте точку останова в обработчике ПередЗаписью или ПриЗаписи и дождитесь срабатывания. В стеке вызовов будет видно, какой модуль и из какой точки инициировал запись, — так вы найдёте не только пользователя, но и конкретный механизм.
Подписка на событие работает в фоне и ничего не тормозит, а отладку держите включённой только на время поиска: лишние точки останова замедляют работу всех подключённых сеансов.
Поиск через консоль запросов и SQL
Когда помеченных объектов много и нужен срез по условию (период, контрагент, сумма), быстрее всего запрос. В консоли запросов обратитесь к нужному объекту с отбором по реквизиту ПометкаУдаления:
ВЫБРАТЬ
Док.Ссылка,
Док.Дата,
Док.Номер,
Док.Контрагент
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.ПометкаУдаления = ИСТИНА
УПОРЯДОЧИТЬ ПО
Док.Дата УБЫВ
Для справочника замените Документ.РеализацияТоваровУслуг на нужный Справочник.ИмяСправочника. Так вы получите точный список с реквизитами, который можно выгрузить в таблицу.
Консоль запросов — это внешняя обработка, её открывают через Файл → Открыть в режиме «1С:Предприятие». Если под рукой её нет, тот же отбор по пометке удаления доступен в универсальной обработке работы с объектами, но для разовой выборки запрос быстрее и нагляднее. Результат запроса можно сразу сгруппировать по автору последнего изменения, если добавить соответствующий реквизит в выборку.
На уровне СУБД пометка хранится в служебном поле _Marked каждой таблицы объекта: значение 0x01 означает, что объект помечен. Имена таблиц в базе технические (_Document123, _Reference45), поэтому сопоставить метаданные с таблицами поможет метод ПолучитьСтруктуруХраненияБазыДанных() или пункт Администрирование → Структура хранения базы данных в конфигураторе.
Прямые SQL-запросы к базе 1С — только на чтение и лучше на копии. Менять _Marked напрямую в СУБД нельзя: это нарушит целостность и итоги. Снимайте пометку штатно, из «1С:Предприятия».
Восстановление ошибочно помеченных и удалённых объектов
Порядок действий зависит от того, на какой стадии находится объект.
Ещё → (Снять) пометку удаления. Движения и проводки восстановятся при перепроведении.Если версионирование было включено, прежние реквизиты удалённого объекта можно взять из его последней сохранённой версии в истории изменений и воссоздать объект вручную. Это спасает, когда резервной копии под рукой нет, а состав реквизитов известен.
Снять пометку с группы объектов проще, чем кажется: выделите строки в списке с зажатым Ctrl или Shift, затем вызовите снятие пометки через Ещё. После этого обязательно перепроведите документы — пометка снимается мгновенно, а движения по регистрам восстанавливаются только при проведении.
Перед разворачиванием резервной копии поверх рабочей базы убедитесь, что копия свежая: иначе потеряете данные, внесённые после неё. Разворачивайте копию в отдельную базу, а не поверх рабочей.
Как предотвратить случайные пометки на удаление
Большинство «пропаж» — это не злой умысел, а случайный клик или слишком широкие права. Несколько настроек снимают проблему почти полностью.
Отдельно про обработку удаления: не ставьте «Удаление помеченных объектов» на автоматический запуск без контроля. Пусть ответственный раз в период открывает её в режиме выборочного удаления, просматривает список и только потом подтверждает. Это последний рубеж перед безвозвратной потерей.
Частые вопросы
Влияют ли помеченные на удаление объекты на отчёты и остатки?
Почему объект не удаляется обработкой, хотя он помечен?
Восстановятся ли проводки после снятия пометки?
Ещё → Провести), чтобы остатки и проводки вернулись.Журнал регистрации не показывает, кто пометил объект. Почему?
Отличается ли поиск помеченных объектов в ЗУП или УТ?
ПометкаУдаления, журнал регистрации, версионирование и обработка удаления. Отличаются только названия раздела — ищите группы Обслуживание и Общие настройки в разделе администрирования своей конфигурации.