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