Справочники и Данные · 11 мин
Как удалить объект справочника в 1С
Как удалить элемент справочника в 1С: пометка на удаление, контроль ссылочной целостности, права доступа, удаление через код и типичные ошибки.
Удаление элемента справочника в 1С — операция, которая почти никогда не выполняется мгновенным стиранием записи. Платформа защищает ссылочную целостность базы: если на элемент ссылаются документы, регистры или другие справочники, прямое удаление приведёт к «битым» ссылкам и ошибкам в отчётах. Поэтому стандартный механизм двухступенчатый: сначала объект помечается на удаление, затем специальная обработка проверяет наличие ссылок и только после этого физически удаляет запись.
Ошибки при удалении элементов справочников — одна из частых причин «мусора» в базе: дубли контрагентов, неиспользуемая номенклатура и объекты со ссылкой «<Объект не найден>». Понимание того, как работает пометка на удаление, контроль ссылок и программное удаление, позволяет чистить данные безопасно и не ломать учёт.
Как устроено удаление в 1С и почему оно двухэтапное
В 1С:Предприятии 8 различают пометку на удаление и непосредственное (физическое) удаление. Пометка — это просто установка флага у объекта: данные остаются в базе, документы продолжают открываться, отчёты строятся без ошибок. Помеченный элемент обычно визуально выделяется в списке перечёркиванием и перестаёт подставляться в новые документы при быстром подборе.
Физическое удаление выполняет механизм контроля ссылочной целостности. Платформа сканирует все объекты конфигурации и ищет ссылки на помеченный элемент. Если ссылки найдены, удаление блокируется, а пользователь видит список мест использования. Если ссылок нет — запись удаляется из таблиц базы данных окончательно.
Такое устройство — не неудобство, а защита. Например, контрагент, по которому проведены реализации за прошлые периоды, не должен исчезать: иначе первичные документы, проводки и регистры потеряют смысл. Поэтому перед удалением всегда стоит задать себе вопрос: использовался ли этот элемент в учёте, и не проще ли его просто пометить и забыть.
Как пометить элемент справочника на удаление
Стандартный способ доступен почти в каждой типовой конфигурации. Откройте нужный справочник (например, «Номенклатура» или «Контрагенты»), найдите элемент, выделите его в списке и нажмите клавишу Delete либо выберите в меню «Ещё» команду «Пометить на удаление». Платформа попросит подтвердить действие, после чего элемент будет перечёркнут.
Пометка работает и в обратную сторону: повторное нажатие Delete на помеченном элементе снимает пометку. Это удобно, если объект пометили ошибочно. Учтите, что в иерархических справочниках пометка группы обычно не помечает автоматически вложенные элементы — их нужно обрабатывать отдельно или массовой обработкой.
- 1Откройте справочник и найдите нужный элемент через поиск или отбор
- 2Выделите элемент и нажмите Delete или «Ещё» → «Пометить на удаление»
- 3Подтвердите действие в диалоге
- 4Убедитесь, что элемент отображается перечёркнутым
Если команда недоступна или платформа отвечает отказом, причина почти всегда в правах: у роли пользователя нет права «Удаление» или «Интерактивная пометка на удаление» для этого объекта. Проверить это можно через администратора в настройках ролей конфигуратора или профилей групп доступа.
Физическое удаление через обработку «Удаление помеченных объектов»
После того как все ненужные элементы помечены, запустите штатную обработку. В типовых конфигурациях она находится в разделе «Администрирование» → «Обслуживание» → «Удаление помеченных объектов» (в некоторых конфигурациях путь может отличаться, но название обработки сохраняется). Для запуска нужны права администратора и монопольный доступ к базе либо отсутствие блокирующих сеансов.
Обработка предлагает два режима: автоматическое удаление всех помеченных объектов и выборочное. В выборочном режиме вы сами отмечаете, какие объекты удалять. После запуска платформа проверяет ссылки: объекты без ссылок удаляются, а для объектов со ссылками выводится список мест использования.
Если обработка показала, что элемент используется, у вас три варианта: оставить его помеченным (он не мешает учёту), убрать ссылки вручную (заменить элемент в документах и других объектах) или удалить вместе со ссылающимися объектами, если они тоже не нужны. Третий вариант опасен: удаление документов прошлых периодов искажает отчётность и может нарушить требования к хранению первичных документов.
Что делать, если элемент используется в других объектах
Самая частая ситуация — дубли. В справочнике «Контрагенты» или «Номенклатура» завели два одинаковых элемента, и документы разошлись по обоим. Удалить дубль напрямую нельзя, потому что на него есть ссылки. Правильное решение — замена ссылок: во всех объектах, где используется лишний элемент, подставить правильный, после чего дубль можно удалить.
Во многих типовых конфигурациях есть встроенные средства: обработка «Поиск и удаление дублей» (обычно в разделе «Администрирование» → «Обслуживание») автоматически находит похожие элементы по заданным правилам и выполняет замену ссылок с последующей пометкой дублей на удаление. Это безопаснее ручной правки десятков документов.
Как поступить с помеченным элементом
Удаление элемента справочника программно (в коде)
Разработчику и администратору иногда нужно удалить элемент из внешней обработки, регламентного задания или при обмене данными. Встроенный язык предоставляет два метода: УстановитьПометкуУдаления() — аналог интерактивной пометки, и Удалить() — непосредственное удаление объекта.
СправочникОбъект = Справочники.Номенклатура.НайтиПоКоду("000123").ПолучитьОбъект();
СправочникОбъект.УстановитьПометкуУдаления(Истина);
// Непосредственное удаление без контроля ссылок:
// СправочникОбъект.Удалить();Критически важно понимать разницу: метод Удалить() не выполняет контроль ссылочной целостности. Если на элемент есть ссылки, после такого удаления в базе появятся «битые» ссылки. Поэтому в прикладном коде почти всегда правильнее ставить пометку, а физическое удаление оставлять штатной обработке. Метод Удалить() оправдан только для технических, заведомо нигде не используемых объектов — например, временных элементов, созданных обменом.
Права доступа и ограничения
Возможность удаления регулируется на двух уровнях. На уровне ролей конфигурации существуют отдельные права «Удаление» и «Интерактивное удаление» для каждого объекта метаданных; пометка на удаление контролируется правом «Интерактивная пометка на удаление». В типовых конфигурациях поверх ролей работают профили групп доступа, где удаление справочников часто отключено для рядовых пользователей.
Дополнительные ограничения: запуск «Удаления помеченных объектов» требует монопольного режима или отсутствия активных сеансов с блокируемыми объектами; в клиент-серверном варианте обработка может занять заметное время на больших базах. Предопределённые элементы, создаваемые конфигурацией, удалять нельзя — платформа это запретит. Также объекты могут быть недоступны для удаления из-за дат запрета изменения данных, если настройка затрагивает связанные объекты.
Как проверить результат удаления
Отсутствует в списке либо перечёркнут (если удаление не завершено)
Отображается как обычный активный элемент
Объект в списке удалённых, ошибок нет
Объект в списке неудалённых с перечнем мест использования
Открываются без сообщений об отсутствующем объекте
В полях отображается «<Объект не найден>»
Массовое удаление и очистка справочников
Когда нужно удалить не один элемент, а сотни устаревших позиций, ручная пометка неэффективна. Практичные варианты: групповое изменение реквизитов (обработка «Групповое изменение реквизитов» в типовых конфигурациях умеет устанавливать пометку на удаление для отобранного списка), обработка «Поиск и удаление дублей» для задвоенных данных, либо собственная внешняя обработка с отбором по условиям.
Общий порядок безопасной массовой чистки: сделайте резервную копию, сформируйте список кандидатов на удаление с отбором (например, номенклатура без движений за длительный период), выверите список с ответственными за учёт, установите пометку, затем запустите «Удаление помеченных объектов» и разберите остаток со ссылками. Такой поэтапный подход исключает ситуацию, когда после чистки обнаруживается, что удалён рабочий элемент.
Что важно запомнить
Удаление в 1С двухэтапное: пометка на удаление, затем обработка «Удаление помеченных объектов» с контролем ссылок. Перед физическим удалением делайте резервную копию. Элементы со ссылками из закрытых периодов не удаляйте — достаточно пометки. В коде используйте УстановитьПометкуУдаления(), а не Удалить().
Частые вопросы
Почему обработка «Удаление помеченных объектов» не удаляет элемент?
Потому что на элемент есть ссылки из документов, регистров или других справочников. Обработка показывает список мест использования — откройте его, замените или удалите ссылающиеся объекты и повторите удаление. Если ссылки находятся в документах закрытых периодов, правильнее оставить элемент помеченным.
Чем пометка на удаление отличается от физического удаления?
Пометка — это флаг: данные остаются в базе, документы и отчёты работают, элемент просто перечёркивается в списке и не подбирается в новые документы. Физическое удаление стирает запись из базы окончательно и возможно только при отсутствии ссылок на объект.
Можно ли восстановить удалённый элемент справочника?
После физического удаления — нет, штатных средств восстановления в платформе нет. Восстановить данные можно только из резервной копии базы. Поэтому перед запуском «Удаления помеченных объектов» всегда делайте выгрузку базы. Помеченный, но не удалённый элемент восстанавливается простым снятием пометки.
Почему кнопка удаления недоступна или неактивна?
У вашей учётной записи нет права на удаление этого объекта: в ролях не установлено право «Интерактивная пометка на удаление» или «Интерактивное удаление», либо ограничение задано профилем группы доступа. Обратитесь к администратору 1С для настройки прав. Также удаление может быть заблокировано для предопределённых элементов конфигурации.
Как удалить сразу много элементов справочника?
Используйте обработку «Групповое изменение реквизитов»: отберите элементы по условию и установите пометку на удаление массово. Для дублей подойдёт «Поиск и удаление дублей». После пометки запустите «Удаление помеченных объектов». Перед массовой операцией обязательно сделайте резервную копию и согласуйте список с ответственными за данные.
Опасен ли метод Удалить() в коде 1С?
Да: в отличие от пометки с последующей штатной обработкой, метод Удалить() стирает объект без контроля ссылочной целостности. Если на объект есть ссылки, в базе появятся «битые» ссылки «<Объект не найден>». В прикладном коде почти всегда следует использовать УстановитьПометкуУдаления(), а Удалить() оставить для заведомо неиспользуемых технических объектов.