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

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

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

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

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

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

Материал описывает работу в типовых конфигурациях на управляемых формах (Бухгалтерия, Управление торговлей, ERP и подобных), а также действия администратора и разработчика. Конкретные названия пунктов меню могут немного отличаться между версиями конфигураций, но общая логика везде одинакова.

Как устроено удаление объектов в 1С

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

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

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

Пометка на удаление: первый этап

Чтобы пометить объект на удаление, откройте список документов или справочник, выделите нужную строку и нажмите клавишу Delete либо выберите в меню «Ещё» команду «Пометить на удаление / Снять пометку». Та же команда доступна в форме самого объекта. Помеченные элементы обычно отображаются с перечёркнутой или серой пиктограммой.

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

Как пометить объект на удаление
  1. 1
    Откройте список объектов (справочник или журнал документов)
  2. 2
    Выделите нужную строку или несколько строк через Ctrl/Shift
  3. 3
    Нажмите Delete или «Ещё → Пометить на удаление»
  4. 4
    Подтвердите действие в диалоге
  5. 5
    Убедитесь, что у объекта появился признак пометки (перечёркнутая пиктограмма)

Групповая пометка

Если нужно пометить много объектов, выделите их в списке с зажатой клавишей Ctrl (отдельные строки) или Shift (диапазон) и примените команду ко всем сразу. Для массовой обработки по условию — например, пометить всех контрагентов без документов за период — используются типовые обработки группового изменения реквизитов или специализированные сервисы, но такие операции стоит выполнять только после резервного копирования.

Удаление помеченных объектов: второй этап

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

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

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

Что делать, если объект не удаляется из-за ссылок

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

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

Маршрут решения

Как выбрать действие

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

Объекты в закрытых периодах

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

Непосредственное удаление и его риски

В конфигураторе пользователю можно назначить права «Интерактивное удаление» и «Интерактивное удаление помеченных», которые позволяют удалять объекты напрямую, минуя контроль ссылок (через Shift+Delete или соответствующие команды). В типовых конфигурациях эти права по умолчанию не выдаются даже администраторам, и это осознанное ограничение.

Прямое удаление создаёт в базе битые ссылки: в документах и регистрах вместо значения появляется «Объект не найден». Такие ссылки ломают отчёты, вызывают ошибки при проведении и обмене данными, а исправлять их приходится вручную по всей базе. Единственный оправданный сценарий — целевая чистка заведомо мусорных объектов опытным специалистом с последующей проверкой целостности.

Удаление данных через конфигуратор и код

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

bsl
// Пометка на удаление
ОбъектКонтрагента = СсылкаКонтрагент.ПолучитьОбъект();
ОбъектКонтрагента.УстановитьПометкуУдаления(Истина);

// Поиск ссылок перед удалением
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СсылкаКонтрагент);
ТаблицаСсылок = НайтиПоСсылкам(МассивСсылок);
Если ТаблицаСсылок.Количество() = 0 Тогда
    ОбъектКонтрагента.Удалить();
КонецЕсли;

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

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

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

Для глубокой проверки используйте «Тестирование и исправление» информационной базы (в конфигураторе: Администрирование → Тестирование и исправление) с проверкой ссылочной целостности. Эта процедура выполняется в монопольном режиме и на больших базах может занять продолжительное время, поэтому планируйте её на нерабочие часы.

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

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

Повторный запуск удаления помеченных
Норма

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

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

Объекты без ссылок снова не удаляются — проверьте права и блокировки

Отчёты и документы
Норма

Открываются без сообщений «Объект не найден»

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

Появляются битые ссылки — выполните тестирование и исправление

Обмены данными
Норма

Синхронизации проходят без ошибок ссылок

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

Ошибки при загрузке — найдите источник битых ссылок до обмена

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

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

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

Почему объект помечен на удаление, но не исчезает из базы?

Пометка — только первый этап. Физическое удаление выполняет обработка «Удаление помеченных объектов» в разделе «Администрирование». Пока она не запущена, объект остаётся в базе и может быть восстановлен снятием пометки.

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

Откройте список с отображением помеченных объектов (обычно через настройку списка или команду показа помеченных), выделите объект и выберите «Ещё → Снять пометку» или нажмите Delete повторно. Документ после этого нужно перепровести, если он был проведён.

Что означает «Объект не найден» в документах?

Это битая ссылка: документ ссылается на объект, который был удалён напрямую, без контроля ссылочной целостности. Исправить можно, заменив значение в документе вручную, а для массовой диагностики — запустить «Тестирование и исправление» базы.

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

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

Как удалить сразу много объектов?

Выделите группу строк в списке через Ctrl или Shift и пометьте их командой Delete, затем запустите «Удаление помеченных объектов». Для массовой пометки по условию используйте обработку группового изменения реквизитов, предварительно сделав резервную копию.

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

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

Итог

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

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