Как окончательно убрать из базы 1С всё, что помечено на удаление

· 9 мин

Содержание

Помеченные на удаление объекты в 1С 8.3 удаляют обработкой Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. Обработка находит все пометки, проверяет, не ссылаются ли на объект другие данные, и стирает из базы только «свободные» объекты. Остальные она оставляет и показывает, где они используются. Механизм общий для платформы, путь одинаков в БП 3.0 и ЗУП 3.1; в УТ 11 раздел называется НСИ и администрирование → Администрирование → Обслуживание.

Типичная картина: справочник контрагентов зарос перечёркнутыми строками, документы-черновики висят в журналах годами, а при запуске обработки половина объектов «не удаляется». Причина почти всегда одна: на эти объекты ещё ссылаются рабочие документы, и платформа защищает учёт от битых ссылок.

Как устроена пометка на удаление

Клавиша Del в списке справочника или журнале документов не стирает данные. Она ставит флаг «Пометка удаления»: строка становится перечёркнутой, но остаётся в базе. Повторное нажатие Del снимает пометку.

Так задумано ради ссылочной целостности. В типовой базе один контрагент может встречаться в сотнях документов, в договорах, в регистрах расчётов. Если стереть его сразу, в этих местах останутся «битые ссылки» — <Объект не найден> вместо названия.

Поэтому удаление в 1С двухэтапное:

  1. 🏷️ Пользователь ставит пометку — быстро, обратимо, без проверок.
  2. 🧹 Администратор запускает удаление помеченных — платформа ищет ссылки и удаляет только те объекты, на которые никто не ссылается.

Что происходит с разными видами данных при пометке:

ОбъектЧто делает пометка
Элемент справочникаТолько ставит флаг. В формах выбора по умолчанию помеченные не предлагаются
Проведённый документОтменяет проведение: движения по регистрам удаляются, остатки и обороты пересчитываются
Непроведённый документТолько ставит флаг
Группа справочникаПомечает группу вместе со всеми вложенными элементами

Пометка проведённого документа сразу меняет учёт. Пометили реализацию за закрытый квартал — выручка и НДС в отчётах за этот квартал уменьшатся, хотя документ формально ещё в базе.

Прямое удаление без пометки (Shift+Del) в типовых конфигурациях обычно недоступно даже администратору: для него нужно отдельное право, и его намеренно не выдают.

Права для удаления помеченных объектов

Ставить пометку может любой пользователь, у которого есть право изменять объект. Окончательное удаление — операция администратора.

В пользовательском режиме права выдают через группы доступа:

  1. Откройте Администрирование → Настройки пользователей и прав → Группы доступа.
  2. Включите пользователя в группу с профилем «Администратор». Если права администратора давать не хотите, создайте отдельный профиль на основе подходящего и добавьте в него роль, разрешающую удаление помеченных объектов: найдите её поиском по слову «помеченных» в списке ролей профиля.
  3. Пользователю нужно перезапустить сеанс, чтобы новые права применились.

На уровне платформы за операцию отвечают два права в ролях конфигурации:

  • 🔑 «Интерактивное удаление помеченных» — разрешает удалять помеченные объекты через стандартную обработку;
  • 🔑 «Удаление» — разрешает удалять объект программно, из кода.

Их видно в Конфигураторе: откройте нужную роль в ветке Общие → Роли и посмотрите права по объекту. Без этих прав обработка отработает, но объекты не удалит и сообщит Нарушение прав доступа!.

Если удаление нужно бухгалтеру раз в месяц, проще дать ему разовую задачу на администратора, чем расширять права. Удаление помеченных затрагивает всю базу, а не только его участок.

Перед удалением: что помечено и где используется

Обработка удаляет всё, что помечено, у чего нет ссылок. Иногда среди пометок оказываются объекты, помеченные по ошибке. После удаления вернуть их можно только из резервной копии.

Перед массовым удалением сделайте резервную копию базы . Для файловой базы — выгрузка через Конфигуратор → Администрирование → Выгрузить информационную базу или копия каталога базы, когда в ней никто не работает . Для серверной — бэкап средствами СУБД.

Как посмотреть, что помечено:

  • 📋 В любом списке помеченные строки видны перечёркнутыми и отмечены значком в первой колонке.
  • 🔍 Отсортируйте или отфильтруйте список по колонке «Пометка удаления», если она выведена.
  • 🗂️ Самый удобный способ — сама обработка удаления: она до удаления показывает дерево всех помеченных объектов по видам, и в нём можно снять галочки с тех, что трогать не нужно.

Как найти места использования конкретного объекта:

  1. Откройте карточку объекта или выделите его в списке.
  2. В меню Ещё выберите «Места использования».
  3. Отчёт покажет все документы, справочники и записи регистров, где объект указан.

Если объект нужно удалить, а он используется, есть три пути:

СитуацияЧто делать
Ссылается другой помеченный объектНичего — удалите оба за один запуск, обработка учтёт цепочку
Ссылается рабочий документ, а объект — дубльЗамените ссылку на правильный элемент, затем удаляйте
Ссылается рабочий документ, объект нуженСнимите пометку: удалять нельзя

Для дублей контрагентов и номенклатуры в БП 3.0 и УТ 11 есть отдельная обработка «Поиск и удаление дублей»: она переносит все ссылки на оставшийся элемент и помечает дубль. После неё обычная очистка проходит без остатков.

Ручное удаление помеченных объектов

Основной способ — обработка из раздела администрирования. Последовательность для БП 3.0 и ЗУП 3.1:

  1. Откройте Администрирование → Обслуживание.
  2. Раскройте группу Корректировка данных и нажмите Удаление помеченных объектов.
  3. Выберите режим: удалить все помеченные или только выбранные. Во втором случае обработка построит дерево объектов, и вы отметите нужные галочками.
  4. Нажмите кнопку удаления и дождитесь окончания. На большой базе это может занять от нескольких минут до часов.
  5. Изучите результат. Удалённые объекты исчезнут, а не удалённые останутся в списке с причиной — местами, где они используются.

Обработка работает в фоне: окно можно не держать открытым, но сеанс закрывать не стоит до окончания.

Если раздела Администрирование в интерфейсе нет или конфигурация нетиповая, используйте стандартную обработку платформы:

  1. Включите команду «Все функции»: Сервис и настройки → Параметры → Отображать команду «Все функции».
  2. Откройте Главное меню → Все функции → Стандартные → Удаление помеченных объектов.
  3. Запустите поиск, проверьте список и выполните удаление.

Удаление идёт быстрее и реже упирается в блокировки, когда в базе никто не работает. Запускайте его вечером или в выходной. Для серверной базы в том же разделе Обслуживание есть «Блокировка работы пользователей»: установите её заранее и предупредите коллег — их сеансы будут завершены.

Удаление помеченных по расписанию

В типовых конфигурациях есть регламентное задание «Удаление помеченных объектов». Оно делает то же, что ручная обработка, но без участия человека и в назначенное время.

Как включить:

  1. Откройте Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.
  2. Найдите в списке «Удаление помеченных объектов».
  3. Откройте задание, установите флажок «Включено» и задайте расписание, например ежедневно в 03:00 или раз в неделю в ночь на воскресенье.
  4. Сохраните. Результаты выполнения видно в том же списке и в журнале регистрации.

В свежих релизах БП 3.0 и ЗУП 3.1 рядом со ссылкой на обработку удаления есть флажок автоматического удаления по расписанию — он включает то же самое задание.

Где регламентные задания выполняются сами, а где нет:

Вариант базыКак работают регламентные задания
Клиент-сервернаяВыполняются сервером 1С по расписанию, даже если никто не вошёл
ФайловаяВыполняются только в открытом сеансе пользователя, обычно у первого вошедшего
1С:Фреш и облакаВключение зависит от провайдера: часть заданий настраивает он

Автоматическая очистка удаляет всё помеченное без вопросов. Если пользователи привыкли «прятать» элементы пометкой вместо архива, включение задания однажды сотрёт эти данные. Сначала договоритесь: пометка означает «удалить», а не «скрыть».

Конфигуратор и обработка, когда штатной формы мало

Конфигуратор понадобится в трёх ситуациях.

Выдать права в нетиповой конфигурации. Откройте роль в ветке Общие → Роли, найдите объекты и включите право «Интерактивное удаление помеченных». После правки — Конфигурация → Обновить конфигурацию базы данных.

Исправить битые ссылки. Если объекты когда-то удалили без контроля и в документах появилось <Объект не найден>, запустите Администрирование → Тестирование и исправление. Включите «Проверка ссылочной целостности информационной базы» и выберите реакцию на ссылки на несуществующие объекты: создавать объекты, очищать ссылки или не изменять. Тестирование требует монопольного доступа: все пользователи должны выйти из базы.

Удалить программно. Для нетиповой базы или нестандартного отбора подойдёт внешняя обработка. Пример ниже удаляет только помеченные объекты, на которые нет ссылок из других данных:

&НаСервере
Процедура УдалитьСвободныеПомеченныеНаСервере()

    Помеченные = НайтиПомеченныеНаУдаление();
    Использования = НайтиПоСсылкам(Помеченные);

    // Объекты, на которые ссылаются другие данные
    Занятые = Новый Соответствие;
    Для Каждого Строка Из Использования Цикл
        Если Строка.Данные <> Строка.Ссылка Тогда
            Занятые.Вставить(Строка.Ссылка, Истина);
        КонецЕсли;
    КонецЦикла;

    Удалено = 0;
    Для Каждого Ссылка Из Помеченные Цикл
        Если Занятые[Ссылка] <> Неопределено Тогда
            Продолжить;
        КонецЕсли;
        Попытка
            Объект = Ссылка.ПолучитьОбъект();
            Если Объект <> Неопределено Тогда
                Объект.Удалить();
                Удалено = Удалено + 1;
            КонецЕсли;
        Исключение
            Сообщить(СтрШаблон("Не удалён %1: %2", Ссылка,
                КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
        КонецПопытки;
    КонецЦикла;

    Сообщить(СтрШаблон("Удалено %1 из %2, занято: %3",
        Формат(Удалено, "ЧГ=0"),
        Формат(Помеченные.Количество(), "ЧГ=0"),
        Формат(Занятые.Количество(), "ЧГ=0")));

КонецПроцедуры

Метод Удалить() сам ссылки не проверяет, поэтому проверка через НайтиПоСсылкам() здесь обязательна. Если помеченный документ ссылается на помеченного контрагента, за первый проход удалится документ, за второй — контрагент. Запустите обработку повторно, пока счётчик удалённых не станет нулевым.

Не удаляйте объекты из кода без проверки ссылок — это и есть источник битых ссылок, которые потом лечат тестированием.

Почему объект не удаляется: ошибки и решения

Диагностика: выберите симптом

Отдельный случай — объект, который пометили и удалили зря. Восстановить его в рабочей базе нельзя. Разверните резервную копию рядом, во временную базу, найдите там объект и перенесите его выгрузкой или вручную. Ссылки в документах от этого не восстановятся: у нового объекта будет другой внутренний идентификатор.

Частые вопросы

Можно ли вернуть объект после удаления помеченных?
Нет. Удаление физически стирает запись из базы. Вернуть объект можно только из резервной копии, сделанной до удаления.
Почему помеченный документ пропал из отчётов, хотя ещё не удалён?
Пометка проведённого документа отменяет его проведение. Движения по регистрам удаляются сразу, поэтому отчёты его уже не видят.
Как часто нужно удалять помеченные объекты?
Жёсткого правила нет. В небольших базах достаточно раза в месяц после закрытия периода. В крупных с активным обменом удобнее еженедельное регламентное задание ночью.
Влияет ли удаление помеченных на размер базы?
Да, но не сразу. Файл файловой базы сам не уменьшается: место освобождается внутри. Чтобы сжать файл, нужно тестирование и исправление со сжатием таблиц или выгрузка и загрузка базы.
Можно ли удалить только часть помеченных, например одни документы?
Да. В обработке выберите режим удаления выбранных объектов и оставьте галочки только на нужных видах. Остальные пометки останутся до следующего запуска.