Удаление помеченных объектов: все способы очистки базы 1С
Содержание
Помеченные на удаление объекты физически остаются в базе и исчезают только после отдельной процедуры. В типовых конфигурациях на платформе 8.3 (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP) её запускают прямо в режиме 1С:Предприятие: раздел Администрирование → Обслуживание → Удаление помеченных объектов. Там механизм сам проверит ссылки и удалит то, что ни с чем не связано.
Пометка — это ещё не удаление. Объект с красным крестиком продолжает занимать место, участвует в контроле ссылочной целостности и может мешать перепроведению. Поэтому пометку ставят, когда документ или элемент справочника больше не нужен, а чистку базы делают пакетно — вручную, по расписанию или через Конфигуратор.
Удаление помеченных объектов необратимо. Снять пометку можно в любой момент, а вот вернуть физически удалённый объект — только из резервной копии. Сделайте копию базы перед запуском.
Чем пометка отличается от физического удаления
Когда вы нажимаете Del на строке списка или выбираете в контекстном меню «Пометить на удаление», 1С только меняет признак объекта. В списках он отображается со значком перечёркнутого элемента, но все его данные, движения и ссылки сохраняются.
Такой двухэтапный механизм защищает базу от случайной потери данных. Удалить объект сразу нельзя: если на него ссылаются другие документы или справочники, прямое удаление порвало бы ссылочную целостность. Поэтому платформа сначала собирает «кандидатов», а затем проверяет каждого на связи.
Снять пометку так же просто: выделите объект и повторно нажмите «Пометить на удаление / Снять пометку» — признак снимется. Пока объект только помечен, он восстанавливается мгновенно. После физической чистки — уже нет.
Как найти все помеченные на удаление объекты
Отдельного «списка помеченных» в типовой конфигурации нет, но увидеть их можно несколькими способами.
- 📋 В конкретном справочнике или журнале документов помеченные строки видны по значку. Отфильтровать список по этому признаку в типовой форме обычно нельзя — удобнее смотреть сразу через механизм удаления.
- 🔎 Сам механизм
Администрирование → Обслуживание → Удаление помеченных объектовв выборочном режиме показывает полный перечень всех помеченных объектов по всей базе, сгруппированный по типам. Это и есть самый полный «реестр». - 🧰 В Конфигураторе пункт
Администрирование → Удаление помеченных объектовпосле поиска выводит такое же дерево кандидатов.
Выборочный режим удобен ещё и тем, что показывает количество: сразу видно, разрослась база на десятки объектов или на десятки тысяч.
Помеченные объекты накапливаются незаметно: пользователи помечают ошибочные документы, обмены создают и бракуют служебные записи, при переносе данных остаются дубли. Если чистку не делать месяцами, список кандидатов на удаление может вырасти до тысяч строк — тогда разумнее удалять их не одним проходом, а порциями по типам объектов, начиная с документов и заканчивая справочниками.
Ручное удаление через режим 1С:Предприятие
Это основной способ для пользователя с правами администратора. Ничего, кроме доступа в базу, не нужно.
- Откройте
Администрирование → Обслуживание → Удаление помеченных объектов. В УТ 11 и ERP раздел называетсяНСИ и администрирование, дальше путь тот же. - Выберите режим. Автоматический удаляет сразу все помеченные объекты, по которым нет блокирующих ссылок. Выборочный даёт дерево объектов, где галочками отмечают, что именно удалять.
- Нажмите «Удалить». Механизм в фоне найдёт ссылки на каждый объект.
- Дождитесь отчёта. Удалённые объекты пропадут, а по неудалённым появится список: что помешало и где стоит ссылка.
Расположение пункта меню по конфигурациям:
| Конфигурация | Путь к механизму |
|---|---|
| Бухгалтерия 3.0 | Администрирование → Обслуживание → Удаление помеченных объектов |
| ЗУП 3.1 | Администрирование → Обслуживание → Удаление помеченных объектов |
| УТ 11, ERP, КА | НСИ и администрирование → Администрирование → Обслуживание → Удаление помеченных объектов |
Останавливать работу пользователей для этой операции в типовых конфигурациях не требуется: механизм обрабатывает объекты в фоновом задании и блокирует их по одному. Но крупную чистку (тысячи объектов) лучше запускать в период низкой нагрузки — она создаёт заметную нагрузку на базу.
Пометить сразу группу объектов тоже можно: выделите несколько строк списка мышью с зажатым Ctrl или Shift, нажмите правую кнопку и выберите «Пометить на удаление / Снять пометку». Так удобно готовить к чистке пачку старых документов за один раз, а потом удалять их общим проходом.
Что делать, если объект не удаляется. Главная причина, по которой объект остаётся после запуска, — на него ссылаются другие данные. Контроль ссылочной целостности не даст удалить документ, если он используется.
Чтобы удалить «застрявший» объект, сначала разорвите ссылки на него: найдите в отчёте все объекты-источники, при необходимости пометьте их на удаление или отредактируйте, затем запустите механизм повторно. Удаление идёт «снизу вверх» — сначала зависимые данные, потом то, на что они ссылались.
В отчёте о неудалённых объектах каждую ссылку можно открыть двойным щелчком — платформа покажет сам документ-источник, где используется объект. Это быстрее, чем искать его вручную по журналам. Если ссылок много и они тянутся цепочкой, двигайтесь от самых «нижних» объектов: часто достаточно удалить один документ, чтобы следом освободились остальные.
Отдельный случай — распределённые базы (РИБ). Удаление помеченных объектов в главном узле передаётся в подчинённые обычным обменом, поэтому запускать чистку в каждом узле отдельно не нужно; достаточно выполнить её там, где разрешено изменение данных, и дождаться синхронизации.
Удаление по расписанию через регламентное задание
Если базу засоряют служебные объекты (например, автоматически создаваемые и помечаемые записи обменов), чистку можно автоматизировать. В типовых конфигурациях на БСП есть регламентное задание «Удаление помеченных объектов».
- Откройте
Администрирование → Обслуживание → Регламентные и фоновые задания. - Найдите в списке задание с названием про удаление помеченных объектов и откройте его.
- Включите флажок «Включено» и задайте расписание — например, раз в сутки ночью.
- Сохраните.
Автоматическое удаление по расписанию снимает «страховку» в виде ручного контроля. Включайте его только если точно знаете, что в базу не попадают ошибочно помеченные объекты. Для рабочих баз с ручной пометкой документов безопаснее оставить удаление ручным.
В файловой базе регламентные задания выполняются, только пока открыт сеанс 1С:Предприятие, поэтому на практике автоматическая чистка по расписанию реально работает в клиент-серверном варианте.
Удаление через Конфигуратор
Второй штатный способ — пункт Администрирование → Удаление помеченных объектов в Конфигураторе. Он пригодится, когда база сильно засорена или механизм в пользовательском режиме недоступен.
Порядок действий:
- Закройте все пользовательские сеансы. Конфигуратор для этой операции требует монопольного (исключительного) доступа к базе — если в базе работают люди, операция не начнётся.
- Откройте базу в Конфигураторе, меню
Администрирование → Удаление помеченных объектов. - Нажмите «Поиск» — платформа соберёт список помеченных объектов и ссылок на них.
- Снимите галочки с того, что удалять не нужно, и нажмите «Удалить».
Этот способ дольше пользовательского, но даёт полную картину зависимостей в одном окне. Для клиент-серверной базы монопольный доступ удобно устанавливать через консоль администрирования или rac — но это уже отдельная операция; смотрите справку rac help, если работаете через командную строку.
Можно ли удалить объекты напрямую через SQL
Технически в SQL-базе 1С таблицы доступны, но удалять записи запросами DELETE нельзя. Это ломает базу.
Причины:
- 🔒 Имена таблиц и полей обфусцированы (
_Reference123,_Document456), и прямойDELETEне трогает связанные таблицы движений, итогов и реквизитов. - 🔗 Нарушается ссылочная целостность: другие документы продолжат ссылаться на удалённый объект, и база начнёт выдавать ошибки «ссылка на несуществующий объект».
- 🚫 Фирма 1С такие изменения не поддерживает — после прямого вмешательства в SQL снять базу с поддержки по гарантии нельзя.
Если нужно удалить большой объём данных, которые штатный механизм не берёт (например, старые документы за закрытые периоды), используйте предназначенные для этого обработки свёртки базы или удаления по условию, а физическую чистку всё равно завершайте штатным механизмом удаления помеченных объектов. SQL оставьте для резервного копирования, а не для правки данных.
Восстановление ошибочно удалённых объектов
Пока объект только помечен — просто снимите пометку, и он вернётся со всеми данными. После физического удаления вариант один: восстановление из резервной копии.
- 💾 Если есть свежая копия базы (
.dtили бэкап SQL) до удаления — разверните её в отдельную базу, найдите нужный объект и перенесите данные вручную или через выгрузку. - 🔁 Разворачивать копию поверх рабочей базы ради одного документа не стоит — потеряете всё, что ввели после. Поднимите копию рядом и перенесите только нужное.
- ⏱ Если копии нет, восстановить удалённый объект штатными средствами невозможно. Поэтому резервная копия перед чисткой — не формальность.
Отсюда простое правило: не включайте автоматическое удаление по расписанию на базах, где пометки ставят вручную, и всегда держите бэкап на день операции.
Оптимизация базы после чистки
Удаление помеченных объектов освобождает логическое место, но физический размер файлов базы сразу не уменьшается — таблицы остаются «раздутыми». После крупной чистки имеет смысл оптимизировать базу.
Файловая база. Запустите в Конфигураторе Администрирование → Тестирование и исправление информационной базы, включите пункт про сжатие таблиц информационной базы. Это уплотнит файл 1Cv8.1CD и пересоберёт индексы. Операция требует монопольного доступа и может идти долго.
Клиент-серверная база
(SQL). Здесь чистку дополняют обслуживанием на стороне СУБД: перестроение (реиндексация) индексов и обновление статистики. Делать SHRINK файла данных после каждой чистки не нужно — это снова фрагментирует индексы; его применяют разово, когда освободился действительно большой объём. Перестроение индексов и обновление статистики имеет смысл настроить как регулярное обслуживание СУБД, а не выполнять только после разовой чистки.
Если база хранится на SQL Server, учтите: освобождённое после удаления место сначала возвращается внутрь файла базы данных как свободное, а не операционной системе. Для рабочей базы это нормально — пространство будет переиспользовано под новые данные. Возвращать место на диск через SHRINK стоит, только если вы удалили большой исторический массив и повторного роста до прежнего размера не ожидается.
В обоих вариантах полезно периодически запускать штатное «Тестирование и исправление» в 1С:Предприятие (раздел Администрирование → Обслуживание) — оно проверяет логическую целостность данных уже после удаления.