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

Очистка номенклатуры — это не просто удаление лишних записей. Это комплекс мер по оптимизации справочника, который включает анализ актуальности позиций, проверку связей с документами, резервное копирование и выбор безопасного метода удаления. В этой статье мы разберём 7 рабочих способов очистки (от ручного до программного), расскажем о типичных ошибках и дадим чек-лист для подготовки к процедуре. Особое внимание уделим нюансам для 1С:УТ 11, 1С:ERP и 1С:Бухгалтерия 3.0.

Почему нельзя просто удалить номенклатуру вручную

Многие пользователи пытаются очистить справочник через стандартное удаление (ПКМ → Удалить), но этот метод работает только для позиций, которые никогда не использовались в документах. Если номенклатура хоть раз фиксировалась в заказах, накладных или отчетах, система заблокирует удаление с сообщением: "Невозможно удалить объект, так как на него есть ссылки".

Дело в том, что хранит все связи между объектами в базе данных. Даже если позиция давно не продаётся, она может быть привязана к:

  • 📄 Документам (реализации, поступления, инвентаризации)
  • 📊 Отчётам (оборотно-сальдовые ведомости, аналитика продаж)
  • 🔄 Остаткам (даже нулевым, но с историей движений)
  • 🔗 Другим справочникам (серии, характеристики, упаковки)

Попытка удалить такую номенклатуру без подготовки приведёт к разрыву ссылочной целостности — базовая функциональность перестанет работать корректно, а при проверке конфигурации (Администрирование → Тестирование и исправление) система выдаст ошибки типа "Обнаружены битые ссылки".

⚠️ Внимание! В конфигурациях с включённым режимом "Управляемое приложение" (например, 1С:ERP 2.5) последствия разрыва ссылок могут проявиться не сразу, а через несколько дней — когда фоновые задачи начнут обрабатывать повреждённые данные.

Подготовка к очистке: 5 обязательных шагов

Прежде чем приступать к удалению, необходимо убедиться, что процедура не нарушит работоспособность системы. Вот минимальный набор действий для любой конфигурации:

Выполнить резервное копирование базы (F5 → "Сохранить данные")

Проверить права доступа (требуется роль "Администратор" или "Полные права")

Сформировать отчёт "Анализ использования номенклатуры" (Отчёты → Склад → Анализ номенклатуры)

Отключить регламентные задания (особенно фоновую обработку документов)

Предупредить пользователей о временной блокировке базы-->

Особое внимание уделите отчёту по использованию номенклатуры. В 1С:УТ 11 его можно найти по пути Отчёты → Склад → Анализ номенклатуры → Использование. Этот отчёт покажет:

  • 📅 Дату последнего движения по позиции
  • 📦 Количество документов, где она упоминается
  • 💰 Суммарный оборот за выбранный период

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

Раз в квартал

Раз в полгода

Раз в год

Никогда не очищали

Только при смене конфигурации-->

Способ 1: Ручное удаление неиспользуемых позиций

Самый простой, но самый ограниченный метод. Подходит только для номенклатуры, которая никогда не использовалась в документах и не имеет связей с другими справочниками. Алгоритм:

  1. Откройте справочник Номенклатура (Справочники → Номенклатура).
  2. Настройте отбор по дате создания (например, "Дата создания < 01.01.2023").
  3. Отсортируйте по алфавиту или по дате последнего изменения.
  4. Выделите нужные позиции (можно использовать Shift+клик для группового выделения).
  5. Нажмите ПКМ → Удалить или клавишу Delete.

Если система выдаёт ошибку о наличии ссылок, попробуйте:

  • 🔍 Использовать отчёт "Где используется" (ПКМ на позиции → Все действия → Где используется).
  • 🗑️ Удалить сначала связанные объекты (например, остатки или характеристики).
  • 🔄 Переместить позицию в отдельную группу (например, "Архив") вместо удаления.
⚠️ Внимание! В 1С:Бухгалтерия 3.0 ручное удаление номенклатуры может привести к расхождению данных в регистрах "Номенклатура организаций" и "Партии товаров". Перед массовым удалением выполните тестовое исправление базы (Администрирование → Тестирование и исправление → Проверка логической целостности).

Способ 2: Пометка на удаление с последующей очисткой

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

  1. В справочнике Номенклатура выделите нужные позиции.
  2. Нажмите ПКМ → Установить пометку удаления (или Действия → Пометить на удаление).
  3. Запустите обработку "Удаление помеченных объектов" (Администрирование → Обслуживание → Удаление помеченных объектов).
  4. В настройках обработки выберите "Номенклатура" и запустите проверку.

Система покажет, какие объекты можно удалить без последствий, а какие имеют активные ссылки. Например, если позиция используется в непроводённом документе, её можно удалить после проведения или отмены проведения документа.

Тип связи Можно ли удалить? Действие
Ссылка в проводённом документе ❌ Нет Перенести документ в архив или удалить ссылку вручную
Ссылка в непроводённом документе ✅ Да Провести или удалить документ
Ссылка в регистре сведений (например, цены) ⚠️ Частично Удалить записи из регистра через Все функции → Регистры сведений
Ссылка в характеристиках или сериях ❌ Нет Удалить сначала связанные объекты
💡

Если пометка на удаление не срабатывает для группы позиций, попробуйте удалять их по одной. Иногда блокирует массовые операции из-за конфликтов транзакций.

Способ 3: Перенос в архивную группу

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

Алгоритм:

  1. Создайте новую группу в справочнике Номенклатура (например, "Архив 2023").
  2. Настройте для неё признак "Использовать как архив" (если такой функционал поддерживается конфигурацией).
  3. Перенесите номенклатуру в эту группу с помощью обработки "Групповое перемещение" или вручную.
  4. Скрыть архивную группу из основных отчётов (например, через настройку видимости в Отчёты → Настройки отчётов).

Преимущества метода:

  • 🔄 Обратимость: позиции можно вернуть в основной справочник.
  • 📊 Сохранение истории: все движения и документы остаются доступны.
  • 🔍 Упрощение поиска: архив не мешает работе с актуальными позициями.

В 1С:ERP и 1С:УТ 11 для архивных групп можно настроить автоматическое скрытие из подбора в документах. Для этого:

  1. Откройте настройки справочника Номенклатура (Все функции → Настройки справочника).
  2. Добавьте реквизит "Архивная" типа Булево.
  3. Настройте отбор в формах подбора: "Архивная = Ложь".

Способ 4: Очистка через обработку "Поиск и замена"

Для массовой очистки удобно использовать стандартную обработку "Поиск и замена значений" (Администрирование → Обслуживание → Поиск и замена значений). Она позволяет найти номенклатуру по критериям (например, дате последнего использования) и выполнить с ней действия: удаление, пометка на удаление или перенос в другую группу.

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

  1. В разделе "Объекты поиска" выберите "Номенклатура".
  2. Добавьте условие: "Дата последнего движения < 01.01.2023".
  3. В разделе "Действия" выберите "Установить пометку удаления".
  4. Запустите обработку в тестовом режиме (галочка "Только показать").

После проверки результатов можно запустить обработку в рабочем режиме. Обратите внимание, что в 1С:Бухгалтерия 3.0 эта обработка может не показывать все связи с регистрами накопления (например, "Номенклатура организаций"). В таких случаях используйте дополнительные отчёты:

  • 📌 "Анализ субконто" (для проверки связей с бухгалтерскими счетами).
  • 📌 "Остатки и обороты по номенклатуре" (для проверки складских движений).
Что делать, если обработка "зависает"?

Если обработка "Поиск и замена" долго выполняется (более 30 минут), прервите её и разбейте задачу на части

1. Обработайте номенклатуру по алфавиту (например, только на букву "А").

2. Используйте отбор по группам (обрабатывайте по одной группе за раз).

3. Запускайте обработку в нерабочее время (ночью), так как она блокирует базу.

Способ 5: Программное удаление с помощью запросов

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

ВЫБРАТЬ

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

ИЗ

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

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(

&ДатаНачала,

&ДатаОкончания

) КАК Остатки

ПО Номенклатура.Ссылка = Остатки.Номенклатура

ГДЕ

Остатки.Номенклатура ЕСТЬ NULL

И НЕ Номенклатура.ЭтоГруппа

И Номенклатура.ДатаСоздания < &ДатаГраница

Чтобы выполнить массовое удаление по этому запросу, используйте следующий код:

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

Запрос.Текст =

"ВЫБРАТЬ

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

|ИЗ

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

|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(

| &ДатаНачала,

| &ДатаОкончания

| ) КАК Остатки

|ПО Номенклатура.Ссылка = Остатки.Номенклатура

|ГДЕ

| Остатки.Номенклатура ЕСТЬ NULL

| И НЕ Номенклатура.ЭтоГруппа";

Запрос.УстановитьПараметр("ДатаНачала", НачалоГода(ТекущаяДата()));

Запрос.УстановитьПараметр("ДатаОкончания", ТекущаяДата());

Запрос.УстановитьПараметр("ДатаГраница", НачалоГода(ТекущаяДата()) - 365);

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

Выборка = Результат.Выбрать();

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

Объект = Выборка.Ссылка.ПолучитьОбъект();

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

Объект.Записать();

КонецЦикла;

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

  • 🔐 Блокировка базы: выполняйте код в монопольном режиме (Файл → Открыть в монопольном режиме).
  • 📡 Тестирование: сначала запустите код на тестовой базе.
  • 🔄 Транзакции: оберните код в транзакцию, чтобы при ошибке откатить изменения:
    НачатьТранзакцию();
    

    попытка

    // Ваш код здесь

    ЗафиксироватьТранзакцию();

    исключение

    ОтменитьТранзакцию();

    конецпопытки;

💡

Программное удаление — самый быстрый способ, но требует знаний 1С:Предприятие. Если вы не уверены в коде, используйте готовые обработки от партнёров (например, "Универсальный помощник по очистке базы").

Способ 6: Использование внешних обработок

Если стандартные инструменты не справляются с задачей, можно воспользоваться внешними обработками от партнёров. Они предлагают расширенный функционал для очистки, включая:

  • 🔍 Анализ связей с документами и регистрами.
  • 🗑️ Массовое удаление с учётом ссылочной целостности.
  • 📊 Отчёты по "мусорным" данным (дубли, неиспользуемые позиции).
  • 🔄 Архивация с сохранением истории.

Популярные обработки для очистки номенклатуры:

Название обработки Поддерживаемые конфигурации Особенности
"Универсальный помощник по очистке базы" (Инфостарт) УТ 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).
  • 🗑️ Глубокой очистки с удалением истории (если она не нужна).

Алгоритм:

  1. Выгрузите данные в XML или DT через Администрирование → Выгрузка данных.
  2. Откройте файл в текстовом редакторе (например, Notepad++) или специализированной утилите (например, XML Marker).
  3. Удалите ненужные позиции по критериям (например, все строки с <ДатаПоследнегоИспользования>2022-12-31</ДатаПоследнегоИспользования>).
  4. Загрузите отфильтрованные данные в новую базу.

Для автоматизации фильтрации можно использовать скрипты на 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. Откройте Все функции → Поиск ссылок.
  2. Введите название номенклатуры.
  3. Проверьте разделы "Шаблоны документов" и "Последовательности документов".

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

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

Нет, если номенклатура используется в проводённых документах закрытых периодов (например, в реализациях за 2022 год), её нельзя удалить без нарушения ссылочной целостности. В таких случаях:

  • Перенесите позицию в архивную группу.
  • Используйте пометку на удаление (но она не сработает, если есть активные ссылки).
  • Создайте новую номенклатуру и перенесите остатки через документ "Инвентаризация".
Как очистить номенклатуру, если база очень большая (более 100 000 позиций)?

Для крупных баз рекомендуется:

  1. Разбить очистку на части (например, по алфавиту или группам).
  2. Использовать внешние обработки с поддержкой пакетной обработки (например, "Универсальный помощник" от Инфостарт).
  3. Выполнять очистку в нерабочее время (ночью), так как процесс блокирует базу.
  4. Для 1С:ERP или 1С:УТ 11 рассмотреть выгрузку-загрузку с фильтрацией через DT.

Если база тормозит при очистке, проверьте настройки SQL-сервера (например, увеличьте лимит памяти для в sqlserver.conf).

Что делать, если после очистки появились ошибки в отчётах?

Если после удаления номенклатуры в отчётах (например, "Валовая прибыль" или "Анализ продаж") появились расхождения:

  1. Запустите Тестирование и исправление (Администрирование → Тестирование и исправление → Проверка логической целостности).
  2. Проверьте регистры накопления (Все функции → Регистры накопления) на наличие "битых" записей.
  3. Восстановите удалённые позиции из резервной копии, если ошибки критичные.
  4. Для сложных случаев используйте обработку "Поиск и исправление ошибок ИБ" (доступна на Инфостарт).

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

Как очистить номенклатуру в облачной версии 1С (1С:Фреш)?

В 1С:Фреш возможности очистки ограничены, так как нет прямого доступа к базе. Варианты: