Очистка базы 1С от объектов, помеченных на удаление
Содержание
Пометка на удаление сама по себе ничего из базы не убирает — она только ставит на объекте красный крестик. Физически данные стираются отдельной обработкой Удаление помеченных объектов. Открыть её быстрее всего через главное меню: Все функции → Стандартные → Удаление помеченных объектов. В типовых конфигурациях на платформе 8.3 она же лежит в разделе Администрирование → Обслуживание (в части сборок — внутри подраздела Корректировка данных).
Обработка работает в два прохода: сначала ищет все помеченные элементы, затем проверяет, не ссылается ли на них что-то ещё. Если ссылок нет — объект удаляется, если есть — программа его оставит и покажет, кто держит ссылку. Поэтому «не удаляется» почти всегда означает не сбой, а живую связь внутри базы.
Ниже — порядок действий целиком: от подготовки базы до пересчёта итогов после массовой чистки, с разбором клиент-серверного варианта и типовых причин, по которым элемент отказывается уходить.
Что проверить перед запуском чистки
Удаление помеченных объектов — операция необратимая. Восстановить стёртый элемент можно только из резервной копии, поэтому перед массовым удалением обязательно сделайте архив базы.
Обработка запрашивает монопольный (исключительный) доступ к базе. Пока в ней работают другие пользователи, удаление не начнётся — программа предложит либо дождаться выхода всех, либо завершить их сеансы. В рабочее время такую чистку не запускают.
Монополия нужна по делу: во время удаления программа перестраивает ссылки, и параллельная работа пользователей привела бы к рассогласованию данных. В файловой базе достаточно, чтобы все закрыли программу. В клиент-серверной сеансы завершают через консоль администрирования (об этом — в разделе про сервер).
Отдельно про права: запускать обработку должен пользователь с ролью администратора. У обычного оператора пункта меню может не быть вовсе, а контроль ссылок без полных прав отработает некорректно.
Стандартный механизм удаления помеченных объектов
После запуска обработка предлагает один из двух режимов.
- 🔵 Автоматический — программа сама находит все помеченные объекты и удаляет те, на которые нет ссылок. Подходит для регулярной плановой чистки.
- 🟡 Выборочный — вы сами отмечаете галочками, что именно удалять. Нужен, когда чистите точечно или когда объектов много и часть из них трогать рано.
Какой режим выбрать — зависит от задачи:
| Режим | Когда удобен | Риск |
|---|---|---|
| Автоматический | Плановая чистка, когда можно убрать всё без ссылок | Удалит всё помеченное, что развязано — проверяйте, нет ли случайных пометок |
| Выборочный | Точечное удаление, большой объём, часть объектов трогать рано | Дольше: нужно вручную расставить галочки |
Порядок работы одинаков для обоих режимов:
- Выберите режим и нажмите кнопку удаления (
УдалитьилиУдалить помеченные). - Программа соберёт список всех помеченных элементов — на большой базе это занимает от нескольких секунд до десятков минут.
- Пойдёт контроль ссылочной целостности: для каждого объекта проверяется, не используется ли он в других документах, справочниках, регистрах.
- Объекты без ссылок удаляются сразу.
- Объекты, на которые остались ссылки, выводятся отдельным списком с колонкой «Место использования» — удаление по ним не выполняется.
Не закрывайте окно с результатом сразу. Именно список «не удалось удалить» и показывает, что мешает чистке. По двойному клику на строке программа открывает сам объект-препятствие, и вы сразу видите, где спрятана ссылка.
По итогу вы получаете два множества: удалённое и оставшееся. С оставшимся дальше работают вручную — снимают ссылки и запускают обработку повторно.
Когда удалять помеченное не стоит
Не всякую пометку нужно гнать в удаление сразу. Есть случаи, когда объект лучше оставить:
- 🔸 Элемент фигурирует в закрытых периодах. Если на него ссылаются документы прошлых лет, которые уже вошли в сданную отчётность, удаление заставит перепроводить закрытый период. Обычно такие справочники оставляют помеченными, но не стирают.
- 🔸 Вы не уверены, кто его пометил. Чужая пометка на удаление в общей базе — повод уточнить, а не удалять. Снять крестик всегда проще, чем восстанавливать из архива.
- 🔸 Идёт обмен данными. Если база участвует в распределённой информационной базе (РИБ) или синхронизации, удаление должно пройти по всем узлам. Стихийная чистка в одном узле рассинхронизирует базы.
В этих ситуациях пометку оставляют как есть: она не мешает работе и не искажает учёт, а служит лишь визуальным признаком «объект больше не используется».
Почему объект не удаляется: ссылки и блокировки
Это ключевой момент всей процедуры. Элемент не уходит из базы, когда на него кто-то ссылается. Разберём по симптомам.
Логика простая: программа не удалит объект, пока хоть одна действующая ссылка способна «повиснуть». Поэтому порядок всегда такой — сначала развязать ссылки, потом удалять. Если ссылок много и они однотипные, используйте Все функции → Стандартные → Поиск и замена значений: обработка меняет один элемент на другой во всех местах сразу.
Бывает, что ссылку держит сам помеченный объект из другой пары. Тогда помогает повторный запуск: после первого прохода часть препятствий исчезает, и со второго-третьего раза список «не удалось» сокращается до нуля.
Отдельная частая ситуация — удаляемая номенклатура, контрагент или статья затрат, прописанные в настройках и значениях по умолчанию: в учётной политике, в настройках пользователей, в правилах подстановки. Такие ссылки «Место использования» тоже показывает, но искать их приходится не в документах, а в разделах настроек. Пока значение по умолчанию ссылается на объект, он не удалится.
Движения документов и записи регистров
С документами отдельная тонкость. Записи в регистрах (накопления, бухгалтерии, сведений) привязаны к своему регистратору — документу, который их сформировал. Когда вы удаляете проведённый документ, его движения уходят вместе с ним автоматически, отдельно чистить регистры не нужно.
Проблема возникает, если движения «осиротели» — документ распровели или удалили нештатно, а строки в регистре остались. Признак: в отчёте есть обороты, а документа-основания уже нет.
Правильный порядок для документов такой:
- Сначала отмените проведение документа (кнопка
Ещё → Отменить проведениеили значок в списке) — это уберёт его движения из всех регистров. - Затем пометьте документ на удаление.
- И только потом запускайте
Удаление помеченных объектов.
Не удаляйте движения регистров руками через конфигуратор или внешнюю обработку, если не понимаете структуру учёта. Ручная правка регистра ломает итоги и сверки — восстанавливать придётся из копии.
Если осиротевшие движения всё же появились, самый безопасный способ — найти документ-регистратор по ссылке из строки регистра и перепровести его либо отменить проведение. Напрямую записи регистров в типовых конфигурациях не редактируют.
Отложенное удаление и регулярная чистка
В конфигурациях на библиотеке стандартных подсистем есть режим отложенного удаления. Смысл: пометку на удаление ставят в течение дня многие пользователи, а физическое удаление запускается по расписанию отдельным регламентным заданием — обычно ночью, когда база свободна.
Включается режим в настройках той же обработки (Администрирование → Обслуживание, раздел про удаление помеченных объектов). Там же задаётся расписание. Плюс подхода — пользователи не ждут монопольного доступа в разгар дня, минус — удаление происходит не сразу, и до ночного прохода помеченные объекты продолжают числиться в базе.
Для небольших файловых баз отложенное удаление обычно не нужно: проще раз в месяц пройтись обработкой вручную в автоматическом режиме. Для крупных клиент-серверных баз с десятками пользователей расписание удобнее.
Удаление помеченных объектов на сервере 1С
В клиент-серверном варианте всё то же самое, но монопольный доступ получают иначе — через консоль администрирования кластера (или утилиту rac).
Последовательность безопасной чистки:
- В консоли кластера откройте список информационных баз, зайдите в свойства нужной базы.
- Установите блокировку начала сеансов и при необходимости — блокировку регламентных заданий. Задайте код разрешения, чтобы зайти самому.
- Завершите активные сеансы пользователей (
rac session list, затем завершение сеансов; в консоли — удаление сеансов вручную). - Зайдите в базу с кодом разрешения и запустите
Удаление помеченных объектов. - После завершения снимите блокировку начала сеансов, иначе пользователи не войдут.
Завершение сеансов и блокировка базы обрывают работу всех, кто в ней находится, — несохранённые данные в открытых формах будут потеряны. Делайте это только по согласованию и вне рабочего времени.
Если точных подкоманд rac не помните — не угадывайте параметры, а посмотрите встроенную справку командой rac help. Для просмотра кластера и сеансов надёжно работают rac cluster list и rac session list.
На сервере удаление идёт в фоновом процессе и может прилично грузить CPU и память: на большой базе планируйте чистку на ночь и следите, чтобы одновременно не стартовало резервное копирование или обновление конфигурации.
Ещё одно отличие от файлового варианта — поведение при зависших сеансах. Иногда сеанс пользователя формально закрыт, но процесс на сервере ещё держит соединение несколько минут. Если обработка жалуется, что получить монополию не удаётся, хотя по консоли активных пользователей нет, подождите пару минут: кластер сам завершит «висящие» соединения по тайм-ауту, и доступ освободится. Принудительно перезапускать службу 1C:Enterprise Server ради этого не нужно — перезапуск оборвёт все рабочие процессы и сеансы разом.
Пересчёт итогов и перепроведение после чистки
После того как из базы массово удалены документы и элементы, полезно привести в порядок итоги регистров — иначе отчёты могут считаться дольше обычного, а в редких случаях показать расхождения.
Два действия, которые делают в паре:
| Действие | Зачем | Где запускать |
|---|---|---|
| Групповое перепроведение документов | Пересобрать движения за период после удаления | Операции → Групповое перепроведение документов |
| Пересчёт (управление) итогов | Актуализировать итоги регистров накопления и бухгалтерии | Операции → Управление итогами (или через Все функции) |
Групповое перепроведение запускают за нужный период и по нужным видам документов. Пересчёт итогов в типовых делают после крупных удалений или по итогам закрытого периода.
Если названия пунктов в вашей конфигурации отличаются, оба инструмента гарантированно находятся через Все функции → Стандартные — там они называются «Групповое перепроведение документов» и «Управление итогами».
Перепроводить всю базу «на всякий случай» не нужно: это долгая операция, которая сама по себе создаёт нагрузку. Достаточно периода, затронутого удалением.
Признак, что пересчёт действительно требуется: после чистки отчёт по остаткам или оборотам считается заметно медленнее прежнего либо показывает цифры, которые не бьются с первичкой. В штатной ситуации, когда удалялись только справочные элементы без движений, перепроведение и пересчёт итогов можно пропустить — они нужны в первую очередь после удаления проведённых документов.
Частые вопросы
Можно ли удалить объект сразу, без пометки?
Удаление помеченных объектов с контролем ссылок.Как снять пометку на удаление, если передумал?
Установить/снять пометку удаления (или пункт в меню Ещё). Крестик исчезнет, объект снова станет обычным.Удалённый объект можно вернуть?
Почему обработка требует, чтобы все вышли из базы?
Что делать, если список «не удалось удалить» не пустеет?
Поиск и замена значений, затем запускать обработку повторно.