К статье
Практический материал

Администрирование · 11 мин

Как удалить помеченные на удаление объекты в 1С

Как удалить помеченные на удаление объекты в 1С 8.3: где находится обработка, как работают режимы удаления, что делать с ссылками и типичные ошибки.

Пометка на удаление в 1С — это не само удаление, а только первый этап. Объект остаётся в базе, продолжает занимать место и виден в списках со специальным значком, пока администратор не выполнит процедуру удаления помеченных объектов. Это сделано намеренно: система защищает данные от случайной потери и даёт время проверить, не используется ли объект в других документах и справочниках.

Физическое удаление выполняется штатной обработкой «Удаление помеченных объектов», которая есть во всех типовых конфигурациях на платформе 1С:Предприятие 8.3. Обработка проверяет ссылочную целостность: если на помеченный элемент ссылаются другие объекты, удаление будет заблокировано либо потребует дополнительных действий.

Ниже разобраны оба способа удаления — через интерфейс и программно, режимы работы обработки, типичные проблемы со ссылками и меры предосторожности, которые защитят базу от необратимых ошибок.

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

В типовых конфигурациях (Бухгалтерия предприятия, Управление торговлей, ERP, Зарплата и управление персоналом) путь к обработке одинаковый: раздел «Администрирование» → группа «Обслуживание» → ссылка «Удаление помеченных объектов». В некоторых конфигурациях пункт может называться «Удаление помеченных» или находиться в подразделе «Корректировка данных».

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

В старых конфигурациях на обычных формах (например, Управление торговлей 10.3) обработка находится в меню «Операции → Удаление помеченных объектов». Логика работы там та же, отличается только внешний вид окна.

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

Перед запуском обработки выполните три обязательных действия. Во-первых, сделайте резервную копию базы: для файлового варианта достаточно скопировать файл 1Cv8.1CD, для клиент-серверного — выполнить выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу) или штатными средствами СУБД. Удаление — необратимая операция, и копия является единственным способом вернуть ошибочно удалённые данные.

Во-вторых, завершите сеансы других пользователей. Это можно сделать через консоль кластера серверов 1С или через функцию «Блокировка сеансов» в типовых конфигурациях (Администрирование → Обслуживание → Блокировка работы пользователей). В файловой базе достаточно попросить всех выйти и проверить отсутствие активных сеансов.

В-третьих, оцените масштаб: откройте список помеченных объектов и прикиньте их количество. Если помечены тысячи элементов за несколько лет, удаление займёт заметное время, и его лучше запланировать на нерабочие часы.

Пошаговое удаление через типовую обработку

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

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

Порядок действий
  1. 1
    Сделайте резервную копию базы и завершите сеансы других пользователей
  2. 2
    Откройте Администрирование → Обслуживание → Удаление помеченных объектов
  3. 3
    Выберите режим: автоматическое удаление всех помеченных или выборочное
  4. 4
    Нажмите «Удалить» и дождитесь окончания контроля ссылочной целостности
  5. 5
    Изучите список неудалённых объектов и причин — ссылки из других документов
  6. 6
    Уберите ссылки (перепроведите или пометьте документы, очистите реквизиты) и повторите удаление
  7. 7
    Проверьте результат: помеченные объекты исчезли из списков

Что делать с объектами, которые не удаляются

Самая частая причина отказа — ссылки на помеченный объект из других мест базы. Например, помеченная номенклатура используется в проведённой накладной, или помеченный контрагент указан в акте сверки. Пока эти ссылки существуют, 1С не даст удалить элемент, иначе в документах появятся «битые ссылки» вида «Объект не найден».

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

Для массовой замены ссылок удобно использовать обработку «Поиск и замена значений» (обычно находится там же, в разделе «Обслуживание»). Она позволяет во всех документах заменить помеченный элемент справочника на правильный дубликат — это типовой сценарий при задвоении номенклатуры или контрагентов.

Типичные ошибки
01
Удаление без резервной копии — при ошибке данные не восстановить
02
Запуск обработки при работающих пользователях — часть объектов блокируется и не удаляется
03
Попытка удалить документы закрытого периода — нарушается последовательность проведения и отчётность
04
Многократный повторный запуск без разбора ссылок — список неудалённых не уменьшается, время тратится впустую
05
Игнорирование регистров сведений, где объект используется как измерение — ссылка неочевидна и её пропускают

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

Для разработчиков и администраторов, автоматизирующих обслуживание, есть метод встроенного языка УдалениеПомеченныхОбъектов(). Он выполняет ту же операцию, что и интерактивная обработка, и может запускаться в регламентном задании — например, ночью, когда база свободна. Метод должен вызываться в монопольном режиме, иначе часть объектов не удалится из-за блокировок.

Также доступен метод НайтиПомеченныеНаУдаление(), который возвращает таблицу помеченных объектов — его используют для предварительной оценки объёма работ или для выборочной обработки. Прямой вызов Удалить() у объекта без проверки ссылок возможен только в режиме «ОбменДанными.Загрузка = Истина» и крайне не рекомендуется: он создаёт битые ссылки.

bsl
// Удаление всех помеченных объектов (требуется монопольный режим)
Если МонопольныйРежим() Тогда
    УдалениеПомеченныхОбъектов();
Иначе
    УстановитьМонопольныйРежим(Истина);
    УдалениеПомеченныхОбъектов();
    УстановитьМонопольныйРежим(Ложь);
КонецЕсли;

Особенности для файловых и клиент-серверных баз

В файловых базах удаление помеченных объектов выполняется быстрее при небольших объёмах, но на больших базах может занимать часы, и прервать его без повреждения файла базы рискованно. После массового удаления файл базы физически не уменьшается — освободившееся место остаётся внутри файла. Чтобы реально сжать базу, выполните тестирование и исправление (chdbfl или через конфигуратор) либо выгрузку и загрузку базы в новый файл.

В клиент-серверном варианте (MS SQL, PostgreSQL) размер файлов базы данных тоже не уменьшается автоматически — потребуется сжатие (shrink) средствами СУБД, которое выполняет администратор баз данных. Сама процедура удаления помеченных объектов при этом работает одинаково.

Сравнение вариантов

Автоматическое удаление

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

Выборочное удаление

Подходит, когда среди помеченных есть спорные объекты. Медленнее, но даёт контроль над каждым элементом.

Регламентное задание с УдалениеПомеченныхОбъектов()

Подходит для автоматизации в крупных базах. Требует разработки и гарантированного монопольного доступа в момент выполнения.

Проверка результата и регулярное обслуживание

После завершения обработки убедитесь, что помеченные объекты действительно исчезли: откройте соответствующие списки справочников и документов, включите отбор по пометке удаления — список должен быть пуст. Проверьте журнал регистрации: там фиксируются события удаления и возможные ошибки.

Хорошая практика — проводить удаление помеченных объектов регулярно, например раз в месяц, а не накапливать годами. Небольшие порции удаляются быстро, не блокируют работу надолго и упрощают разбор ссылок. Заодно стоит проверять, кто и почему помечает объекты: систематические пометки без удаления часто означают, что пользователи не до конца понимают процедуру.

Контрольные точки

Как проверить результат

Списки справочников и документов
Норма

Помеченные объекты отсутствуют

Тревожный признак

Объекты с пометкой остались — значит, есть ссылки или обработка завершилась с ошибкой

Журнал регистрации
Норма

Есть события удаления без ошибок

Тревожный признак

Ошибки блокировок или отказа в доступе

Окно результатов обработки
Норма

Список неудалённых пуст или содержит осознанно оставленные объекты

Тревожный признак

Масса неудалённых объектов без разбора причин

Часто задаваемые вопросы

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

Ссылки могут скрываться в неочевидных местах: регистрах сведений, где объект используется как измерение или ресурс, в реквизитах других справочников, в настройках отчётов и в сохранённых вариантах. В окне результатов удаления раскройте объект — обработка покажет все места использования. Также проверьте, не заблокирован ли объект активным сеансом другого пользователя.

Можно ли восстановить удалённый объект?

Штатными средствами — нет, физическое удаление необратимо. Восстановление возможно только из резервной копии базы. Именно поэтому копия перед удалением обязательна, а пометка на удаление существует как промежуточный «безопасный» этап: пока объект только помечен, её можно снять в любой момент.

Как удалить помеченные объекты, если нет прав администратора?

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

Уменьшится ли размер базы после удаления помеченных объектов?

Логически место освобождается, но файл базы (1Cv8.1CD или файлы СУБД) автоматически не сжимается. Для файловой базы выполните тестирование и исправление с реструктуризацией или выгрузку-загрузку в новый файл. Для клиент-серверной базы сжатие выполняется средствами СУБД администратором.

Можно ли настроить автоматическое удаление помеченных объектов по расписанию?

Да, через регламентное задание, вызывающее метод УдалениеПомеченныхОбъектов(). Учтите два условия: задание должно выполняться, когда в базе нет активных пользователей, и перед ним желательно автоматизировать создание резервной копии. В типовых конфигурациях готового регламентного задания для этого нет — потребуется доработка.

Чем пометка на удаление отличается от непосредственного удаления?

Пометка — обратимый статус: объект скрывается из обычной работы, но физически остаётся в базе, и пометку можно снять. Непосредственное удаление (через обработку или Shift+Delete с соответствующими правами) стирает объект из базы окончательно. В типовых конфигурациях непосредственное удаление обычно запрещено настройками прав.

Итог

Что важно запомнить

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