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

В этой статье мы разберём 5 способов очистки — от простых ручных методов до автоматизированных скриптов на встроенном языке. Вы узнаете, как безопасно удалить ненужные элементы, избежать ошибок ссылочной целостности и ускорить процесс с помощью обработок. Особое внимание уделим массовой очистке крупных справочников (например, Номенклатура или Контрагенты), где ручной подход неэффективен.

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

📊 Как часто вы очищаете справочники в 1С?
Раз в квартал
Раз в год
Только при критической необходимости
Никогда не очищал

1. Ручная очистка: когда и как применять

Ручной метод подходит для небольших справочников (до 500–1000 записей) или когда нужно выборочно удалить несколько элементов. Этот способ не требует знаний программирования, но занимает много времени при большом объёме данных.

Чтобы очистить справочник вручную:

  1. Откройте нужный справочник через меню Справочники → [Название справочника].
  2. Используйте фильтры (например, по дате создания, статусу или пометке на удаление), чтобы отобразить только ненужные записи.
  3. Выделите элементы с помощью клавиш Shift (диапазон) или Ctrl (выборочно).
  4. Нажмите Установить пометку удаления (или Удалить, если разрешено непосредственное удаление).
  5. Выполните команду Операции → Проведение документов → Удаление помеченных объектов.

⚠️ Внимание: В некоторых конфигурациях (например, 1С:Бухгалтерия 8) прямое удаление может быть заблокировано для справочников, связанных с документами. В этом случае используйте пометку на удаление и дожидайтесь завершения фонового процесса.

Создать резервную копию базы|Проверить права доступа (администратор или полные права)|Отфильтровать записи по критериям (дате, статусу)|Убедиться, что справочник не используется в открытых сеансах другими пользователями-->

2. Групповое удаление через обработку «Поиск и замена»

Встроенная обработка Поиск и замена значений (доступна в большинстве конфигураций на базе 1С:Предприятие 8.3) позволяет массово помечать записи на удаление по заданным критериям. Это удобно, когда нужно очистить справочник по определённому признаку, например:

  • 📅 Записи старше 3 лет
  • 🔖 Элементы с пустым наименованием
  • 📌 Записи, не используемые в документах
  • 🔄 Дубликаты по наименованию или коду

Инструкция:

  1. Откройте обработку через меню Все функции → Стандартные → Поиск и замена значений.
  2. В поле Тип объекта выберите нужный справочник.
  3. Настройте фильтр (например, ДатаСоздания <'01.01.2021').
  4. В действиях укажите Установить пометку удаления.
  5. Запустите обработку и дождитесь завершения.

💡 Совет: Если обработка не находит нужные записи, проверьте синтаксис фильтра. Например, для поиска пустых наименований используйте условие Наименование ="" (с двумя кавычками).

Что делать, если обработка зависла?

Если обработка"Поиск и замена" долго выполняется (более 30 минут), прервите её через Диспетчер задач (для локальной версии) или перезапустите сеанс в клиент-серверном варианте. После этого разбейте задачу на части: обрабатывайте записи порциями по 1000–2000 штук, используя дополнительные фильтры (например, по алфавиту: Наименование >="А" И Наименование <"М").

3. Программная очистка: скрипты на встроенном языке

Для крупных справочников (10 000+ записей) ручные методы неэффективны. В этом случае поможет скрипт на встроенном языке , который можно выполнить в Отладчике или через внешнюю обработку. Ниже приведён пример кода для массовой пометки на удаление:

Процедура ПометитьНаУдаление

Справочник = Справочники.Номенклатура; // Замените на нужный справочник

Выборка = Справочник.Выбрать;

Пока Выборка.Следующий Цикл

Если Выборка.ЭтоГруппа = Ложь Тогда // Пропускаем группы

Если Выборка.ДатаСоздания <'20200101000000' Тогда // Критерий отбора

Выборка.УстановитьПометкуУдаления(Истина);

КонецЕсли;

КонецЕсли;

КонецЦикла;

Сообщить("Обработано записей:" + Справочник.ПолучитьКоличество);

КонецПроцедуры

Чтобы выполнить скрипт:

  1. Откройте Отладчик через меню Сервис → Отладка → Отладчик.
  2. Вставьте код в окно и нажмите Выполнить.
  3. После завершения выполните удаление помеченных объектов.

⚠️ Внимание: Скрипт не проверяет ссылочную целостность! Если в справочнике есть ссылки из документов или других справочников, удаление может привести к ошибкам. Перед массовой очисткой запустите проверку целостности базы (Администрирование → Тестирование и исправление).

Метод очистки Скорость Сложность Риски
Ручная очистка Низкая Просто Минимальные
Обработка «Поиск и замена» Средняя Средне Ссылочная целостность
Скрипт на встроенном языке Высокая Сложно Потеря данных при ошибке
Внешняя обработка Очень высокая Средне Зависит от качества обработки

4. Использование внешних обработок для массовой очистки

Если вы не хотите писать код самостоятельно, можно воспользоваться готовыми обработками от сообщества . Популярные решения:

  • 🛠 «Универсальная очистка справочников» (от Infostart) — поддерживает фильтры, проверку ссылок и логгирование.
  • 🧹 «Чистка базы» (от 1С-Софт) — удаляет неиспользуемые элементы с анализом связей.
  • 🔍 «Поиск и удаление дублей» — специализирована на поиске дублирующихся записей.

Как установить обработку:

  1. Скачайте файл с расширением .epf или .erf с проверенного источника (например, Infostart или 1С:ИТС).
  2. В откройте Файл → Открыть → Выбрать файл обработки.
  3. Следуйте инструкциям в интерфейсе обработки (обычно нужно выбрать справочник, настроить фильтры и запустить очистку).

🔹 Преимущество внешних обработок: они часто содержат дополнительные функции, такие как:

  • Предварительный просмотр записей перед удалением.
  • Экспорт списка удаляемых элементов в Excel.
  • Автоматическая проверка ссылочной целостности.
💡

Перед использованием внешней обработки проверьте её совместимость с вашей версией 1С:Предприятие. Некоторые решения работают только на платформе 8.3.20+.

5. Очистка через SQL-запросы (для опытных пользователей)

Для администраторов баз данных или пользователей с доступом к SQL-серверу возможна очистка непосредственно через запросы. Этот метод самый быстрый для крупных баз (100 000+ записей), но требует осторожности — неправильный запрос может повредить данные.

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

UPDATE _Reference162 SET DeletionMark = 1

WHERE Date_Creation <'2020-01-01'

AND IsFolder = 0

Где:

  • _Reference162 — системное имя таблицы справочника (узнать можно через Конфигуратор → Все таблицы базы данных).
  • DeletionMark — поле пометки на удаление.
  • IsFolder — признак группы (0 — элемент, 1 — группа).

⚠️ Внимание: Прямые SQL-запросы обходят механизмы ссылочной целостности ! После массового обновления обязательно:

  1. Выполните тестирование и исправление базы (Администрирование → Тестирование и исправление).
  2. Проверьте логи на наличие ошибок.
  3. Сделайте резервную копию после очистки.
💡

SQL-запросы следует использовать только в крайних случаях, когда другие методы неэффективны. Всегда тестируйте запросы на копии базы перед применением на рабочей версии.

6. Автоматизация очистки: регламентные задания

Если справочники засоряются регулярно (например, из-за импорта данных или тестовых записей), настройте регламентное задание для автоматической очистки. Это позволит поддерживать базу в актуальном состоянии без ручного вмешательства.

Как создать регламентное задание:

  1. Перейдите в Администрирование → Регламентные задания.
  2. Создайте новое задание с типом Выполнение кода.
  3. Вставьте скрипт очистки (аналогичный из раздела 3) или укажите путь к внешней обработке.
  4. Настройте расписание (например, раз в месяц в нерабочее время).
  5. Укажите пользователя, от имени которого будет выполняться задание (нужны права администратора).

Пример кода для регламентного задания (очистка справочника Номенклатура раз в квартал):

Если ТекущаяДата.Месяц = 1 Или ТекущаяДата.Месяц = 4 Или

ТекущаяДата.Месяц = 7 Или ТекущаяДата.Месяц = 10 Тогда

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

Выборка = Справочник.Выбрать;

Пока Выборка.Следующий Цикл

Если Выборка.ДатаСоздания < НачалоГода(ТекущаяДата) - 365*3 Тогда

Выборка.УстановитьПометкуУдаления(Истина);

КонецЕсли;

КонецЦикла;

КонецЕсли;

🔹 Важно: Регламентные задания выполняются в фоновом режиме и могут нагружать сервер. Настройте их на время минимальной активности пользователей (например, ночью).

7. Проверка результатов и восстановление данных

После очистки справочника необходимо:

  1. Убедиться, что удалены только целевые записи (проверьте количество оставшихся элементов).
  2. Запустить Тестирование и исправление для поиска ошибок ссылочной целостности.
  3. Проверить работоспособность связанных документов (например, если очищали Номенклатуру, откройте несколько документов Реализация товаров).

Если были удалены нужные данные:

  • 🔄 Восстановите базу из резервной копии (если очистка проводилась недавно).
  • 📤 Используйте журнал регистрации (Администрирование → Журнал регистрации), чтобы найти информацию об удалённых записях.
  • 🛠 Воспользуйтесь специализированными обработками для восстановления (например, «Восстановление удалённых данных» от 1С-Рарус).

⚠️ Внимание: В облачных версиях 1С:Фреш возможности восстановления ограничены. Уточните условия в личном кабинете или у партнёра .

FAQ: Частые вопросы по очистке справочников

Можно ли удалить записи из справочника, если они используются в документах?

Нет, удаление заблокировано. Сначала нужно:

  1. Удалить или перепровести документы, ссылающиеся на запись.
  2. Использовать пометку на удаление (УстановитьПометкуУдаления(Истина)).
  3. Выполнить процедуру Удаление помеченных объектов.

Если документы архивные, их можно перенести в отдельную базу перед очисткой.

Как очистить справочник от дублей?

Используйте обработку «Поиск и удаление дублей» или напишите скрипт с группировкой по полю Наименование:

Запрос = Новый Запрос;

Запрос.Текст ="ВЫБРАТЬ

Наименование,

КОЛИЧЕСТВО(*) КАК Количество

ИЗ

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

ГДЕ

НЕ ЭтоГруппа

СГРУППИРОВАТЬ ПО

Наименование

ИМЕЮЩИЕ

КОЛИЧЕСТВО(*) > 1";

Результат = Запрос.Выполнить;

После этого вручную или через скрипт оставьте одну запись из каждой группы.

Почему после очистки справочника Контрагенты перестали открываться некоторые документы?

Это означает, что в документах остались ссылки на удалённые записи. Восстановите данные из резервной копии или:

  1. Найдите проблемные документы через Журнал регистрации (ошибки типа "Не найден объект Справочник.Контрагенты.Ссылка...").
  2. Замените ссылки на актуальные контрагентов вручную или через обработку.
Как очистить справочник в 1С:УТ 11 без прав администратора?

Без полных прав вы можете:

  • Помечать записи на удаление вручную (если разрешено в ролевых настройках).
  • Использовать обработки, не требующие административных прав (например, для фильтрации данных).

Для массовых операций обратитесь к администратору базы.

Можно ли очистить справочник через 1С:EDT (Eclipse)?

Да, в 1С:EDT можно написать серверный код для очистки, но:

  • Требуются знания Java и 1С-скриптов.
  • Код выполняется на сервере, что ускоряет обработку крупных справочников.
  • Необходимо учитывать блокировки транзакций при массовых операциях.