Как окончательно убрать из базы 1С всё, что помечено на удаление
Содержание
Помеченные на удаление объекты в 1С 8.3 удаляют обработкой Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. Обработка находит все пометки, проверяет, не ссылаются ли на объект другие данные, и стирает из базы только «свободные» объекты. Остальные она оставляет и показывает, где они используются. Механизм общий для платформы, путь одинаков в БП 3.0 и ЗУП 3.1; в УТ 11 раздел называется НСИ и администрирование → Администрирование → Обслуживание.
Типичная картина: справочник контрагентов зарос перечёркнутыми строками, документы-черновики висят в журналах годами, а при запуске обработки половина объектов «не удаляется». Причина почти всегда одна: на эти объекты ещё ссылаются рабочие документы, и платформа защищает учёт от битых ссылок.
Как устроена пометка на удаление
Клавиша Del в списке справочника или журнале документов не стирает данные. Она ставит флаг «Пометка удаления»: строка становится перечёркнутой, но остаётся в базе. Повторное нажатие Del снимает пометку.
Так задумано ради ссылочной целостности. В типовой базе один контрагент может встречаться в сотнях документов, в договорах, в регистрах расчётов. Если стереть его сразу, в этих местах останутся «битые ссылки» — <Объект не найден> вместо названия.
Поэтому удаление в 1С двухэтапное:
- 🏷️ Пользователь ставит пометку — быстро, обратимо, без проверок.
- 🧹 Администратор запускает удаление помеченных — платформа ищет ссылки и удаляет только те объекты, на которые никто не ссылается.
Что происходит с разными видами данных при пометке:
| Объект | Что делает пометка |
|---|---|
| Элемент справочника | Только ставит флаг. В формах выбора по умолчанию помеченные не предлагаются |
| Проведённый документ | Отменяет проведение: движения по регистрам удаляются, остатки и обороты пересчитываются |
| Непроведённый документ | Только ставит флаг |
| Группа справочника | Помечает группу вместе со всеми вложенными элементами |
Пометка проведённого документа сразу меняет учёт. Пометили реализацию за закрытый квартал — выручка и НДС в отчётах за этот квартал уменьшатся, хотя документ формально ещё в базе.
Прямое удаление без пометки (Shift+Del) в типовых конфигурациях обычно недоступно даже администратору: для него нужно отдельное право, и его намеренно не выдают.
Права для удаления помеченных объектов
Ставить пометку может любой пользователь, у которого есть право изменять объект. Окончательное удаление — операция администратора.
В пользовательском режиме права выдают через группы доступа:
- Откройте
Администрирование → Настройки пользователей и прав → Группы доступа. - Включите пользователя в группу с профилем «Администратор». Если права администратора давать не хотите, создайте отдельный профиль на основе подходящего и добавьте в него роль, разрешающую удаление помеченных объектов: найдите её поиском по слову «помеченных» в списке ролей профиля.
- Пользователю нужно перезапустить сеанс, чтобы новые права применились.
На уровне платформы за операцию отвечают два права в ролях конфигурации:
- 🔑 «Интерактивное удаление помеченных» — разрешает удалять помеченные объекты через стандартную обработку;
- 🔑 «Удаление» — разрешает удалять объект программно, из кода.
Их видно в Конфигураторе: откройте нужную роль в ветке Общие → Роли и посмотрите права по объекту. Без этих прав обработка отработает, но объекты не удалит и сообщит Нарушение прав доступа!.
Если удаление нужно бухгалтеру раз в месяц, проще дать ему разовую задачу на администратора, чем расширять права. Удаление помеченных затрагивает всю базу, а не только его участок.
Перед удалением: что помечено и где используется
Обработка удаляет всё, что помечено, у чего нет ссылок. Иногда среди пометок оказываются объекты, помеченные по ошибке. После удаления вернуть их можно только из резервной копии.
Перед массовым удалением сделайте резервную копию базы
. Для файловой базы — выгрузка через Конфигуратор → Администрирование → Выгрузить информационную базу или копия каталога базы, когда в ней никто не работает
. Для серверной — бэкап средствами СУБД.
Как посмотреть, что помечено:
- 📋 В любом списке помеченные строки видны перечёркнутыми и отмечены значком в первой колонке.
- 🔍 Отсортируйте или отфильтруйте список по колонке «Пометка удаления», если она выведена.
- 🗂️ Самый удобный способ — сама обработка удаления: она до удаления показывает дерево всех помеченных объектов по видам, и в нём можно снять галочки с тех, что трогать не нужно.
Как найти места использования конкретного объекта:
- Откройте карточку объекта или выделите его в списке.
- В меню
Ещёвыберите «Места использования». - Отчёт покажет все документы, справочники и записи регистров, где объект указан.
Если объект нужно удалить, а он используется, есть три пути:
| Ситуация | Что делать |
|---|---|
| Ссылается другой помеченный объект | Ничего — удалите оба за один запуск, обработка учтёт цепочку |
| Ссылается рабочий документ, а объект — дубль | Замените ссылку на правильный элемент, затем удаляйте |
| Ссылается рабочий документ, объект нужен | Снимите пометку: удалять нельзя |
Для дублей контрагентов и номенклатуры в БП 3.0 и УТ 11 есть отдельная обработка «Поиск и удаление дублей»: она переносит все ссылки на оставшийся элемент и помечает дубль. После неё обычная очистка проходит без остатков.
Ручное удаление помеченных объектов
Основной способ — обработка из раздела администрирования. Последовательность для БП 3.0 и ЗУП 3.1:
- Откройте
Администрирование → Обслуживание. - Раскройте группу
Корректировка данныхи нажмитеУдаление помеченных объектов. - Выберите режим: удалить все помеченные или только выбранные. Во втором случае обработка построит дерево объектов, и вы отметите нужные галочками.
- Нажмите кнопку удаления и дождитесь окончания. На большой базе это может занять от нескольких минут до часов.
- Изучите результат. Удалённые объекты исчезнут, а не удалённые останутся в списке с причиной — местами, где они используются.
Обработка работает в фоне: окно можно не держать открытым, но сеанс закрывать не стоит до окончания.
Если раздела Администрирование в интерфейсе нет или конфигурация нетиповая, используйте стандартную обработку платформы:
- Включите команду «Все функции»:
Сервис и настройки → Параметры → Отображать команду «Все функции». - Откройте
Главное меню → Все функции → Стандартные → Удаление помеченных объектов. - Запустите поиск, проверьте список и выполните удаление.
Удаление идёт быстрее и реже упирается в блокировки, когда в базе никто не работает. Запускайте его вечером или в выходной. Для серверной базы в том же разделе Обслуживание есть «Блокировка работы пользователей»: установите её заранее и предупредите коллег — их сеансы будут завершены.
Удаление помеченных по расписанию
В типовых конфигурациях есть регламентное задание «Удаление помеченных объектов». Оно делает то же, что ручная обработка, но без участия человека и в назначенное время.
Как включить:
- Откройте
Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. - Найдите в списке «Удаление помеченных объектов».
- Откройте задание, установите флажок «Включено» и задайте расписание, например ежедневно в 03:00 или раз в неделю в ночь на воскресенье.
- Сохраните. Результаты выполнения видно в том же списке и в журнале регистрации.
В свежих релизах БП 3.0 и ЗУП 3.1 рядом со ссылкой на обработку удаления есть флажок автоматического удаления по расписанию — он включает то же самое задание.
Где регламентные задания выполняются сами, а где нет:
| Вариант базы | Как работают регламентные задания |
|---|---|
| Клиент-серверная | Выполняются сервером 1С по расписанию, даже если никто не вошёл |
| Файловая | Выполняются только в открытом сеансе пользователя, обычно у первого вошедшего |
| 1С:Фреш и облака | Включение зависит от провайдера: часть заданий настраивает он |
Автоматическая очистка удаляет всё помеченное без вопросов. Если пользователи привыкли «прятать» элементы пометкой вместо архива, включение задания однажды сотрёт эти данные. Сначала договоритесь: пометка означает «удалить», а не «скрыть».
Конфигуратор и обработка, когда штатной формы мало
Конфигуратор понадобится в трёх ситуациях.
Выдать права в нетиповой конфигурации. Откройте роль в ветке Общие → Роли, найдите объекты и включите право «Интерактивное удаление помеченных». После правки — Конфигурация → Обновить конфигурацию базы данных.
Исправить битые ссылки. Если объекты когда-то удалили без контроля и в документах появилось <Объект не найден>, запустите Администрирование → Тестирование и исправление. Включите «Проверка ссылочной целостности информационной базы» и выберите реакцию на ссылки на несуществующие объекты: создавать объекты, очищать ссылки или не изменять. Тестирование требует монопольного доступа: все пользователи должны выйти из базы.
Удалить программно. Для нетиповой базы или нестандартного отбора подойдёт внешняя обработка. Пример ниже удаляет только помеченные объекты, на которые нет ссылок из других данных:
&НаСервере
Процедура УдалитьСвободныеПомеченныеНаСервере()
Помеченные = НайтиПомеченныеНаУдаление();
Использования = НайтиПоСсылкам(Помеченные);
// Объекты, на которые ссылаются другие данные
Занятые = Новый Соответствие;
Для Каждого Строка Из Использования Цикл
Если Строка.Данные <> Строка.Ссылка Тогда
Занятые.Вставить(Строка.Ссылка, Истина);
КонецЕсли;
КонецЦикла;
Удалено = 0;
Для Каждого Ссылка Из Помеченные Цикл
Если Занятые[Ссылка] <> Неопределено Тогда
Продолжить;
КонецЕсли;
Попытка
Объект = Ссылка.ПолучитьОбъект();
Если Объект <> Неопределено Тогда
Объект.Удалить();
Удалено = Удалено + 1;
КонецЕсли;
Исключение
Сообщить(СтрШаблон("Не удалён %1: %2", Ссылка,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;
КонецЦикла;
Сообщить(СтрШаблон("Удалено %1 из %2, занято: %3",
Формат(Удалено, "ЧГ=0"),
Формат(Помеченные.Количество(), "ЧГ=0"),
Формат(Занятые.Количество(), "ЧГ=0")));
КонецПроцедуры
Метод Удалить() сам ссылки не проверяет, поэтому проверка через НайтиПоСсылкам() здесь обязательна. Если помеченный документ ссылается на помеченного контрагента, за первый проход удалится документ, за второй — контрагент. Запустите обработку повторно, пока счётчик удалённых не станет нулевым.
Не удаляйте объекты из кода без проверки ссылок — это и есть источник битых ссылок, которые потом лечат тестированием.
Почему объект не удаляется: ошибки и решения
Отдельный случай — объект, который пометили и удалили зря. Восстановить его в рабочей базе нельзя. Разверните резервную копию рядом, во временную базу, найдите там объект и перенесите его выгрузкой или вручную. Ссылки в документах от этого не восстановятся: у нового объекта будет другой внутренний идентификатор.