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

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

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

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

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

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

Что такое предопределённые элементы и почему они не удаляются

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

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

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

Подготовка: резервная копия и монопольный доступ

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

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

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

Способ 1: пометка на удаление через групповую обработку

В типовых конфигурациях на БСП (Библиотека стандартных подсистем) есть обработка «Групповое изменение реквизитов» и механизм «Все функции» → «Стандартные» → «Пометить на удаление». Практичный путь: откройте список справочника, выделите все элементы (Ctrl+A), откройте команду «Пометить на удаление / Снять пометку». Платформа автоматически пропустит предопределённые элементы с сообщением.

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

Для документов действует дополнительное условие: пометить на удаление можно только непроведённый документ либо сначала отменить проведение. Массовая отмена проведения выполняется через «Групповое изменение реквизитов» или стандартную обработку «Проведение документов».

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

Способ 2: выборочная пометка запросом или обработкой

Когда нужно пометить тысячи объектов по условию, удобнее использовать консоль запросов или универсальную обработку «Поиск и удаление дублей», «Групповая обработка справочников и документов» (доступна на диске ИТС и в составе типовых инструментов разработчика). В запросе предопределённые элементы отсекаются условием по полю «Предопределенный».

Типовой фрагмент запроса для выборки кандидатов на удаление выглядит так:

ВЫБРАТЬ

Номенклатура.Ссылка

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

НЕ Номенклатура.Предопределенный

И НЕ Номенклатура.ПометкаУдаления

Полученный список загружается в обработку группового изменения, где выполняется установка пометки удаления. Такой подход безопасен: условие «НЕ Предопределенный» гарантирует, что служебные элементы не попадут в выборку даже при программной обработке.

bsl
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ НЕ Предопределенный И НЕ ПометкаУдаления");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
  Объект = Выборка.Ссылка.ПолучитьОбъект();
  Объект.УстановитьПометкуУдаления(Истина);
КонецЦикла;

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

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

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

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

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

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

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

Остались только предопределённые элементы и сознательно оставленные записи

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

Пропали служебные элементы, конфигурация выдаёт ошибки обращения к объекту

Отчёт об удалении
Норма

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

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

Масса объектов с пометкой осталась из-за ссылок, которые никто не обработал

Работа типовых операций
Норма

Документы проводятся, отчёты формируются без ошибок

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

Ошибки «Объект не найден» при проведении или в отчётах

Частые ошибки и ограничения

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

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

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

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

Альтернативы полному удалению

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

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

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

Пометка + штатное удаление помеченных

Подходит для точечной и средней очистки; безопасно для предопределённых, но требует разбора ссылок

Запрос с условием НЕ Предопределенный + групповая обработка

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

Новая база из шаблона + перенос нужных данных

Самый безопасный вариант для «чистой» копии; дольше по времени и требует настройки переноса

Итог

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

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

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

Можно ли вообще удалить предопределённый элемент в 1С?

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

Что делать, если предопределённый элемент пропал после нештатной обработки?

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

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

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

Нужно ли удалять предопределённые элементы при переносе данных в новую базу?

Нет. При загрузке данных в новую базу предопределённые элементы уже существуют и сопоставляются по внутреннему имени. Типовые обработки переноса корректно обрабатывают это сопоставление, дубли не создаются.

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

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

Опасно ли удалять помеченные объекты в клиент-серверной базе?

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