Справочники и Данные · 11 мин
Как быстро очистить справочник в 1С
Как быстро очистить справочник в 1С: пометка на удаление, групповая обработка, запрос и код. Проверка ссылок, риски, типовые ошибки и FAQ для администратора.
Очистка справочника в 1С — типовая задача при подготовке базы к новому периоду, переносе данных или избавлении от накопившегося «мусора»: дублей контрагентов, устаревшей номенклатуры, тестовых элементов. Проблема в том, что удалить элементы «в лоб» часто нельзя — на них ссылаются документы, регистры и другие справочники, а платформа защищает целостность данных.
Скорость очистки зависит от трёх факторов: объёма справочника, количества ссылок на его элементы и выбранного инструмента. Для справочника на пару сотен позиций хватит штатной пометки на удаление через интерфейс. Для десятков тысяч элементов разумнее использовать групповую обработку или код, выполняемый пакетно.
Ниже разобраны рабочие способы — от безопасного интерактивного до программного, с проверкой ссылочной целостности, типовыми ошибками и критериями выбора метода под вашу ситуацию.
Подготовка: что проверить перед очисткой справочника
Перед любыми массовыми действиями сделайте резервную копию базы. Для файловой базы достаточно скопировать файл 1Cv8.1CD при остановленной работе пользователей, для клиент-серверной — выполнить выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу) или средствами СУБД. Без копии откатить ошибочное удаление будет невозможно.
Оцените объём работ: сколько элементов в справочнике и сколько из них реально нужно удалить. Откройте список справочника, включите отбор по нужным условиям (по группе, пометке, реквизиту) и посмотрите количество строк. Если элементов больше нескольких тысяч, интерактивное удаление займёт неоправданно много времени.
Проверьте, есть ли у вас права. Для пометки на удаление нужны права на интерактивное удаление или хотя бы на изменение, для окончательного удаления — право «Удаление» и «Интерактивное удаление» в роли. В типовых конфигурациях полный набор действий доступен пользователю с правами администратора.
Способ 1. Пометка на удаление через интерфейс
Штатный путь подходит для небольших справочников и не требует никаких инструментов разработчика. Откройте список справочника, выделите нужные элементы (Ctrl+A — все видимые, Ctrl+клик — выборочно, Shift — диапазон) и нажмите Delete или кнопку «Пометить на удаление / снять пометку» в меню «Ещё».
Если нужно пометить элементы по условию, сначала настройте отбор в списке (через «Ещё → Настроить список»), затем выделите отфильтрованные строки. Учтите ограничение: пометка ставится только на видимые, загруженные в список строки, поэтому при динамической подгрузке длинных списков прокрутите список до конца или используйте вывод всех строк.
После пометки элементы визуально отображаются зачёркнутыми, но физически остаются в базе. Это безопасная промежуточная стадия: пометку можно снять в любой момент, и документы с такими элементами продолжают работать.
Способ 2. Удаление помеченных объектов
Физическое удаление выполняется штатной обработкой: в типовых конфигурациях это раздел «Администрирование → Обслуживание → Удаление помеченных объектов», в конфигураторе и простых интерфейсах — «Операции → Удаление помеченных объектов». Для запуска требуется монопольный доступ к базе — все пользователи и фоновые задания должны быть отключены.
Обработка предлагает два режима: автоматическое удаление всех помеченных объектов и выборочное, где вы сами отмечаете, что удалять. Для очистки конкретного справочника удобнее выборочный режим — так вы не заденете помеченные объекты из других разделов.
Платформа автоматически проверяет ссылки: если на помеченный элемент ссылаются документы или другие объекты, он не будет удалён, а в отчёте появится список мест использования. Это встроенная защита целостности — не пытайтесь её обходить без понимания последствий.
- 1Сделайте резервную копию базы
- 2Пометьте элементы справочника на удаление (вручную или обработкой)
- 3Завершите работу пользователей и фоновых заданий
- 4Откройте Администрирование → Удаление помеченных объектов
- 5Выберите выборочный режим и отметьте нужный справочник
- 6Запустите удаление и изучите список неудалённых объектов
- 7Разберите ссылки: удалите или перепроведите связанные документы, затем повторите
Способ 3. Групповая обработка и типовые инструменты
Когда элементов много и вручную их не выделить, используйте обработку «Групповое изменение реквизитов» (в типовых конфигурациях: Администрирование → Обслуживание → Корректировка данных). Она позволяет отобрать элементы справочника по произвольным условиям и массово установить пометку удаления.
Порядок такой: выберите тип объекта (нужный справочник), задайте отбор — например, по группе, дате создания, значению реквизита или признаку «не используется в документах за период». Затем в списке изменяемых реквизитов выберите «Пометка удаления» и установите значение «Истина». Обработка выполнит пакетное изменение заметно быстрее ручной работы.
Для файловых баз и конфигураций без БСП подойдут внешние универсальные обработки поиска и удаления объектов. Их запускают через «Файл → Открыть». Перед применением на рабочей базе обязательно проверьте логику отбора на копии — ошибка в условии пометит лишние элементы.
Способ 4. Программная очистка через код
Максимально быстрый способ для больших объёмов — выполнить код через внешнюю обработку или консоль кода. Классический вариант: выбрать элементы запросом и пометить их на удаление вызовом УстановитьПометкуУдаления().
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.УстановитьПометкуУдаления(Истина);
КонецЦикла;
Для очень больших справочников разбивайте работу на порции: ограничивайте выборку (например, по тысяче элементов за итерацию) и фиксируйте транзакцию после каждой порции. Это снижает риск блокировок и переполнения журнала транзакций на клиент-серверной базе.
Прямое удаление методом Удалить() без пометки и проверки ссылок технически возможно, но опасно: платформа не проверит ссылочную целостность, и в базе останутся битые ссылки. Используйте такой приём только для гарантированно изолированных данных — например, для тестового справочника, который нигде не используется.
Как ускорить процесс и избежать блокировок
На клиент-серверных базах массовые операции выполняйте в нерабочее время или при минимальной нагрузке. Длинная транзакция на десятки тысяч записей удерживает блокировки и может остановить работу пользователей. Порционная обработка с фиксацией каждые 500–1000 элементов снимает эту проблему.
Отключите на время очистки ненужные фоновые задания и регламентные операции, которые могут обращаться к справочнику: синхронизации, обмены, полнотекстовое индексирование. Это и ускорит обработку, и уменьшит вероятность конфликтов.
Если база файловая, выполняйте очистку локально на машине с файлом базы, а не по сети — сетевой доступ к файлу 1CD многократно замедляет массовые операции. После завершения имеет смысл выполнить тестирование и исправление базы с реструктуризацией, чтобы файл сжался после удаления записей.
Как выбрать способ
Проверка результата после очистки
После удаления откройте список справочника и убедитесь, что остались только нужные элементы. Сбросьте отборы и включите показ помеченных, чтобы увидеть полную картину. Если помеченные элементы остались — значит, на них есть ссылки, и штатная обработка показала, где именно.
Для контроля целостности выполните поиск битых ссылок: в конфигураторе — «Администрирование → Тестирование и исправление» с проверкой ссылочной целостности (в режиме проверки, без исправления, чтобы сначала оценить масштаб). Появление записей вида «Объект не найден» — сигнал, что что-то было удалено принудительно.
Проверьте работу смежных механизмов: откройте пару типовых документов, отчёты по справочнику, обмены данными. Если после очистки отчёт строится с ошибками или документ не открывается — восстанавливайте базу из копии и повторяйте процедуру аккуратнее.
Как проверить результат
Остались только нужные элементы, помеченных нет
Остались помеченные элементы — есть ссылки, смотрите отчёт об удалении
Проверка ссылочной целостности не выявляет ошибок
Записи «Объект не найден» — выполнялось прямое удаление, нужна реструктуризация или откат
Открываются и строятся без ошибок
Ошибки при открытии — удалён элемент, участвовавший в данных
После реструктуризации файл уменьшился
Размер не изменился — физическое удаление не завершено
Частые вопросы
Можно ли очистить справочник без монопольного режима?
Пометку на удаление можно ставить и при работающих пользователях, если нет конфликтов по конкретным записям. А вот физическое удаление помеченных объектов штатными средствами требует монопольного доступа. Порционное программное удаление возможно и без монопольного режима, но с риском блокировок.
Почему элемент не удаляется, хотя помечен?
На него есть ссылки из других объектов: документов, регистров, других справочников. Откройте отчёт об удалении помеченных объектов — он перечисляет все места использования. Удалите или измените эти объекты, затем повторите удаление.
Как удалить только дубли элементов, а не весь справочник?
Используйте типовую обработку «Поиск и удаление дублей» (Администрирование → Обслуживание). Она находит одинаковые элементы по заданным правилам и автоматически заменяет ссылки во всех документах на выбранный «правильный» элемент, после чего дубли можно безопасно удалить.
Что делать с предопределёнными элементами, которые мешают?
Удалять их нельзя — на них ссылается код конфигурации. Если элемент не нужен функционально, его можно переименовать или отметить как неиспользуемый в прикладной логике, но физическое удаление приведёт к ошибкам при обращении к нему из кода.
Очистка справочника уменьшит размер базы?
Записи удаляются, но файл базы сам по себе обычно не сжимается. Для файловой базы выполните тестирование и исправление с реструктуризацией таблиц. На клиент-серверной базе сжатие выполняется средствами СУБД (shrink для MS SQL и аналоги).
Можно ли восстановить случайно удалённые элементы?
Только из резервной копии — в 1С нет «корзины» для физически удалённых объектов. Если удалили лишнее, восстановите копию в отдельную базу и перенесите нужные элементы обработкой выгрузки-загрузки данных. Именно поэтому копия перед очисткой обязательна.
Что важно запомнить
Быстрая очистка справочника строится по одной схеме: резервная копия → массовая пометка (вручную, групповой обработкой или кодом) → штатное удаление помеченных в монопольном режиме → проверка ссылочной целостности. Чем больше объём, тем раньше стоит переходить от ручной работы к обработкам и коду, а прямое удаление без проверки ссылок оставить только для заведомо изолированных данных.