Управление номенклатурой в 1С:Предприятие — одна из самых ресурсоемких задач для бухгалтеров и складских специалистов. Со временем база разрастается тысячами устаревших позиций, дублей и неактуальных карточек, что замедляет работу системы, усложняет поиск и увеличивает риск ошибок. По данным исследований, в средней компании до 30% номенклатурных позиций не используются более года, но продолжают занимать место в базе.
Очистка номенклатуры — это не просто удаление лишних записей. Это комплекс мер по оптимизации справочника, который включает анализ актуальности позиций, проверку связей с документами, резервное копирование и выбор безопасного метода удаления. В этой статье мы разберём 7 рабочих способов очистки (от ручного до программного), расскажем о типичных ошибках и дадим чек-лист для подготовки к процедуре. Особое внимание уделим нюансам для 1С:УТ 11, 1С:ERP и 1С:Бухгалтерия 3.0.
Почему нельзя просто удалить номенклатуру вручную
Многие пользователи пытаются очистить справочник через стандартное удаление (ПКМ → Удалить), но этот метод работает только для позиций, которые никогда не использовались в документах. Если номенклатура хоть раз фиксировалась в заказах, накладных или отчетах, система заблокирует удаление с сообщением: "Невозможно удалить объект, так как на него есть ссылки".
Дело в том, что 1С хранит все связи между объектами в базе данных. Даже если позиция давно не продаётся, она может быть привязана к:
- 📄 Документам (реализации, поступления, инвентаризации)
- 📊 Отчётам (оборотно-сальдовые ведомости, аналитика продаж)
- 🔄 Остаткам (даже нулевым, но с историей движений)
- 🔗 Другим справочникам (серии, характеристики, упаковки)
Попытка удалить такую номенклатуру без подготовки приведёт к разрыву ссылочной целостности — базовая функциональность 1С перестанет работать корректно, а при проверке конфигурации (Администрирование → Тестирование и исправление) система выдаст ошибки типа "Обнаружены битые ссылки".
⚠️ Внимание! В конфигурациях с включённым режимом "Управляемое приложение" (например, 1С:ERP 2.5) последствия разрыва ссылок могут проявиться не сразу, а через несколько дней — когда фоновые задачи начнут обрабатывать повреждённые данные.
Подготовка к очистке: 5 обязательных шагов
Прежде чем приступать к удалению, необходимо убедиться, что процедура не нарушит работоспособность системы. Вот минимальный набор действий для любой конфигурации:
Выполнить резервное копирование базы (F5 → "Сохранить данные")
Проверить права доступа (требуется роль "Администратор" или "Полные права")
Сформировать отчёт "Анализ использования номенклатуры" (Отчёты → Склад → Анализ номенклатуры)
Отключить регламентные задания (особенно фоновую обработку документов)
Предупредить пользователей о временной блокировке базы-->
Особое внимание уделите отчёту по использованию номенклатуры. В 1С:УТ 11 его можно найти по пути Отчёты → Склад → Анализ номенклатуры → Использование. Этот отчёт покажет:
- 📅 Дату последнего движения по позиции
- 📦 Количество документов, где она упоминается
- 💰 Суммарный оборот за выбранный период
Например, если позиция не использовалась более 12 месяцев и её оборот равен нулю, её можно считать кандидатом на удаление. Но даже в этом случае проверьте, не привязана ли она к серийным номерам или характеристикам — такие объекты часто блокируют очистку.
Раз в квартал
Раз в полгода
Раз в год
Никогда не очищали
Только при смене конфигурации-->
Способ 1: Ручное удаление неиспользуемых позиций
Самый простой, но самый ограниченный метод. Подходит только для номенклатуры, которая никогда не использовалась в документах и не имеет связей с другими справочниками. Алгоритм:
- Откройте справочник
Номенклатура(Справочники → Номенклатура). - Настройте отбор по дате создания (например,
"Дата создания < 01.01.2023"). - Отсортируйте по алфавиту или по дате последнего изменения.
- Выделите нужные позиции (можно использовать
Shift+кликдля группового выделения). - Нажмите
ПКМ → Удалитьили клавишуDelete.
Если система выдаёт ошибку о наличии ссылок, попробуйте:
- 🔍 Использовать отчёт
"Где используется"(ПКМ на позиции → Все действия → Где используется). - 🗑️ Удалить сначала связанные объекты (например, остатки или характеристики).
- 🔄 Переместить позицию в отдельную группу (например,
"Архив") вместо удаления.
⚠️ Внимание! В 1С:Бухгалтерия 3.0 ручное удаление номенклатуры может привести к расхождению данных в регистрах"Номенклатура организаций"и"Партии товаров". Перед массовым удалением выполните тестовое исправление базы (Администрирование → Тестирование и исправление → Проверка логической целостности).
Способ 2: Пометка на удаление с последующей очисткой
Если номенклатура используется в документах, но вы уверены, что она больше не нужна, можно применить пометку на удаление. Этот метод мягче, чем прямое удаление, так как позволяет восстановить данные при необходимости. Инструкция:
- В справочнике
Номенклатуравыделите нужные позиции. - Нажмите
ПКМ → Установить пометку удаления(илиДействия → Пометить на удаление). - Запустите обработку
"Удаление помеченных объектов"(Администрирование → Обслуживание → Удаление помеченных объектов). - В настройках обработки выберите
"Номенклатура"и запустите проверку.
Система покажет, какие объекты можно удалить без последствий, а какие имеют активные ссылки. Например, если позиция используется в непроводённом документе, её можно удалить после проведения или отмены проведения документа.
| Тип связи | Можно ли удалить? | Действие |
|---|---|---|
| Ссылка в проводённом документе | ❌ Нет | Перенести документ в архив или удалить ссылку вручную |
| Ссылка в непроводённом документе | ✅ Да | Провести или удалить документ |
| Ссылка в регистре сведений (например, цены) | ⚠️ Частично | Удалить записи из регистра через Все функции → Регистры сведений |
| Ссылка в характеристиках или сериях | ❌ Нет | Удалить сначала связанные объекты |
Если пометка на удаление не срабатывает для группы позиций, попробуйте удалять их по одной. Иногда 1С блокирует массовые операции из-за конфликтов транзакций.
Способ 3: Перенос в архивную группу
Если вы не уверены, что номенклатура больше не понадобится, но хотите убрать её из основного справочника, оптимальное решение — перенос в архивную группу. Это безопасный метод, который не нарушает ссылочную целостность и позволяет восстановить данные при необходимости.
Алгоритм:
- Создайте новую группу в справочнике
Номенклатура(например,"Архив 2023"). - Настройте для неё признак
"Использовать как архив"(если такой функционал поддерживается конфигурацией). - Перенесите номенклатуру в эту группу с помощью обработки
"Групповое перемещение"или вручную. - Скрыть архивную группу из основных отчётов (например, через настройку видимости в
Отчёты → Настройки отчётов).
Преимущества метода:
- 🔄 Обратимость: позиции можно вернуть в основной справочник.
- 📊 Сохранение истории: все движения и документы остаются доступны.
- 🔍 Упрощение поиска: архив не мешает работе с актуальными позициями.
В 1С:ERP и 1С:УТ 11 для архивных групп можно настроить автоматическое скрытие из подбора в документах. Для этого:
- Откройте настройки справочника
Номенклатура(Все функции → Настройки справочника). - Добавьте реквизит
"Архивная"типаБулево. - Настройте отбор в формах подбора:
"Архивная = Ложь".
Способ 4: Очистка через обработку "Поиск и замена"
Для массовой очистки удобно использовать стандартную обработку "Поиск и замена значений" (Администрирование → Обслуживание → Поиск и замена значений). Она позволяет найти номенклатуру по критериям (например, дате последнего использования) и выполнить с ней действия: удаление, пометка на удаление или перенос в другую группу.
Пример настройки обработки для поиска неиспользуемых позиций:
- В разделе
"Объекты поиска"выберите"Номенклатура". - Добавьте условие:
"Дата последнего движения < 01.01.2023". - В разделе
"Действия"выберите"Установить пометку удаления". - Запустите обработку в тестовом режиме (галочка
"Только показать").
После проверки результатов можно запустить обработку в рабочем режиме. Обратите внимание, что в 1С:Бухгалтерия 3.0 эта обработка может не показывать все связи с регистрами накопления (например, "Номенклатура организаций"). В таких случаях используйте дополнительные отчёты:
- 📌
"Анализ субконто"(для проверки связей с бухгалтерскими счетами). - 📌
"Остатки и обороты по номенклатуре"(для проверки складских движений).
Что делать, если обработка "зависает"?
Если обработка "Поиск и замена" долго выполняется (более 30 минут), прервите её и разбейте задачу на части
"Поиск и замена" долго выполняется (более 30 минут), прервите её и разбейте задачу на части1. Обработайте номенклатуру по алфавиту (например, только на букву "А").
2. Используйте отбор по группам (обрабатывайте по одной группе за раз).
3. Запускайте обработку в нерабочее время (ночью), так как она блокирует базу.
Способ 5: Программное удаление с помощью запросов
Для опытных пользователей и программистов 1С самый эффективный метод — очистка через запросы. Этот способ позволяет гибко настроить критерии отбора и избежать рутинных операций. Пример запроса для поиска номенклатуры без движений за последний год:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
&ДатаНачала,
&ДатаОкончания
) КАК Остатки
ПО Номенклатура.Ссылка = Остатки.Номенклатура
ГДЕ
Остатки.Номенклатура ЕСТЬ NULL
И НЕ Номенклатура.ЭтоГруппа
И Номенклатура.ДатаСоздания < &ДатаГраница
Чтобы выполнить массовое удаление по этому запросу, используйте следующий код:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
| &ДатаНачала,
| &ДатаОкончания
| ) КАК Остатки
|ПО Номенклатура.Ссылка = Остатки.Номенклатура
|ГДЕ
| Остатки.Номенклатура ЕСТЬ NULL
| И НЕ Номенклатура.ЭтоГруппа";
Запрос.УстановитьПараметр("ДатаНачала", НачалоГода(ТекущаяДата()));
Запрос.УстановитьПараметр("ДатаОкончания", ТекущаяДата());
Запрос.УстановитьПараметр("ДатаГраница", НачалоГода(ТекущаяДата()) - 365);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.УстановитьПометкуУдаления(Истина);
Объект.Записать();
КонецЦикла;
Предупреждения при использовании программного метода:
- 🔐 Блокировка базы: выполняйте код в монопольном режиме (
Файл → Открыть в монопольном режиме). - 📡 Тестирование: сначала запустите код на тестовой базе.
- 🔄 Транзакции: оберните код в транзакцию, чтобы при ошибке откатить изменения:
НачатьТранзакцию();попытка
// Ваш код здесь
ЗафиксироватьТранзакцию();
исключение
ОтменитьТранзакцию();
конецпопытки;
Программное удаление — самый быстрый способ, но требует знаний 1С:Предприятие. Если вы не уверены в коде, используйте готовые обработки от партнёров 1С (например, "Универсальный помощник по очистке базы").
Способ 6: Использование внешних обработок
Если стандартные инструменты 1С не справляются с задачей, можно воспользоваться внешними обработками от партнёров. Они предлагают расширенный функционал для очистки, включая:
- 🔍 Анализ связей с документами и регистрами.
- 🗑️ Массовое удаление с учётом ссылочной целостности.
- 📊 Отчёты по "мусорным" данным (дубли, неиспользуемые позиции).
- 🔄 Архивация с сохранением истории.
Популярные обработки для очистки номенклатуры:
| Название обработки | Поддерживаемые конфигурации | Особенности |
|---|---|---|
| "Универсальный помощник по очистке базы" (Инфостарт) | УТ 11, ERP 2, Бухгалтерия 3.0 | Автоматический поиск битых ссылок, очистка регистров |
| "Очистка и архивация данных" (КорпСофт) | УТ 10.3, ERP 2.4, КА 2 | Поддержка частичной архивации (например, только за 2020 год) |
| "Анализ и очистка справочников" (1С-Рарус) | УТ 11, ERP 2.5, Розница 2.3 | Интеграция с 1С:EDT для сложных случаев |
Прежде чем покупать обработку, проверьте:
- 📋 Совместимость с вашей версией конфигурации (например, 1С:УТ 11.5.10.х).
- 🔐 Лицензионные ограничения (некоторые обработки требуют ключ защиты).
- 📡 Отзывы пользователей на форумах (например, Инфостарт или 1С:ИТС).
⚠️ Внимание! Некоторые обработки могут конфликтовать с доработками вашей базы. Перед использованием сделайте резервную копию и протестируйте обработку на копии рабочей базы, а не на боевой!
Способ 7: Выгрузка-загрузка с фильтрацией (для сложных случаев)
Если база сильно засорена, а стандартные методы не помогают, можно применить выгрузку-загрузку данных с фильтрацией. Этот способ подходит для:
- 🏭 Крупных баз (более 50 000 позиций номенклатуры).
- 🔄 Миграции на новую конфигурацию (например, с 1С:УТ 10.3 на 1С:ERP 2.5).
- 🗑️ Глубокой очистки с удалением истории (если она не нужна).
Алгоритм:
- Выгрузите данные в
XMLилиDTчерезАдминистрирование → Выгрузка данных. - Откройте файл в текстовом редакторе (например, Notepad++) или специализированной утилите (например, XML Marker).
- Удалите ненужные позиции по критериям (например, все строки с
<ДатаПоследнегоИспользования>2022-12-31</ДатаПоследнегоИспользования>). - Загрузите отфильтрованные данные в новую базу.
Для автоматизации фильтрации можно использовать скрипты на Python или PowerShell. Пример скрипта для удаления устаревших позиций из XML:
import xml.etree.ElementTree as ET
tree = ET.parse('номенклатура.xml')
root = tree.getroot()
for item in root.findall('.//Номенклатура'):
last_used = item.find('ДатаПоследнегоИспользования')
if last_used is not None and last_used.text < '2023-01-01':
root.remove(item)
tree.write('номенклатура_очищенная.xml')
Преимущества метода:
- 🧹 Глубокая очистка: удаляются даже скрытые связи.
- 🔄 Гибкость: можно настроить любые критерии фильтрации.
- 📦 Миграция: удобно для переноса данных в новую базу.
Недостатки:
- ⚠️ Сложность: требует знаний
XML/DTи скриптов. - ⏳ Время: выгрузка-загрузка большой базы может занять несколько часов.
- 🔐 Риски: при ошибке в скрипте можно потерять критичные данные.
Типичные ошибки и как их избежать
Даже опытные пользователи 1С допускают ошибки при очистке номенклатуры. Вот самые распространённые из них и способы их предотвращения:
| Ошибка | Последствия | Как избежать |
|---|---|---|
| Удаление номенклатуры, используемой в непроводённых документах | Ошибки при проведении документов, битые ссылки | Перед удалением проведите все документы или удалите ссылки вручную |
| Игнорирование серий и характеристик | Остатки "зависнут" в регистрах, расхождения в отчётах | Сначала удалите связанные объекты через Справочники → Серии номенклатуры |
| Очистка без резервной копии | Потеря данных, невозможность восстановления | Всегда делайте бэкап перед массовыми операциями (Администрирование → Выгрузить данные) |
| Удаление номенклатуры с ненулевыми остатками | Расхождения в складском учёте, ошибки инвентаризации | Проверяйте остатки через отчёт "Остатки товаров" перед удалением |
| Использование нетестированных обработок | Повреждение базы, конфликты с доработками | Тестируйте обработки на копии базы, читайте отзывы на Инфостарт |
Ещё одна распространённая ошибка — удаление номенклатуры, которая используется в типовых операциях (например, "Услуга доставки" или "Тара"). Такие позиции часто скрыты в шаблонах документов и не видны в основных отчётах. Чтобы их найти:
- Откройте
Все функции → Поиск ссылок. - Введите название номенклатуры.
- Проверьте разделы
"Шаблоны документов"и"Последовательности документов".
FAQ: Частые вопросы по очистке номенклатуры
Можно ли удалить номенклатуру, которая есть в закрытых периодах?
Нет, если номенклатура используется в проводённых документах закрытых периодов (например, в реализациях за 2022 год), её нельзя удалить без нарушения ссылочной целостности. В таких случаях:
- Перенесите позицию в архивную группу.
- Используйте пометку на удаление (но она не сработает, если есть активные ссылки).
- Создайте новую номенклатуру и перенесите остатки через документ
"Инвентаризация".
Как очистить номенклатуру, если база очень большая (более 100 000 позиций)?
Для крупных баз рекомендуется:
- Разбить очистку на части (например, по алфавиту или группам).
- Использовать внешние обработки с поддержкой пакетной обработки (например, "Универсальный помощник" от Инфостарт).
- Выполнять очистку в нерабочее время (ночью), так как процесс блокирует базу.
- Для 1С:ERP или 1С:УТ 11 рассмотреть выгрузку-загрузку с фильтрацией через
DT.
Если база тормозит при очистке, проверьте настройки SQL-сервера (например, увеличьте лимит памяти для 1С в sqlserver.conf).
Что делать, если после очистки появились ошибки в отчётах?
Если после удаления номенклатуры в отчётах (например, "Валовая прибыль" или "Анализ продаж") появились расхождения:
- Запустите
Тестирование и исправление(Администрирование → Тестирование и исправление → Проверка логической целостности). - Проверьте регистры накопления (
Все функции → Регистры накопления) на наличие "битых" записей. - Восстановите удалённые позиции из резервной копии, если ошибки критичные.
- Для сложных случаев используйте обработку "Поиск и исправление ошибок ИБ" (доступна на Инфостарт).
Если ошибки связаны с регистром бухгалтерии, может потребоваться перепроведение документов за период.
Как очистить номенклатуру в облачной версии 1С (1С:Фреш)?
В 1С:Фреш возможности очистки ограничены, так как нет прямого доступа к базе. Варианты: