База данных 1С со временем обрастает тысячами позиций номенклатуры, которые давно не используются в работе: устаревшие товары, снятые с производства модели, тестовые записи или дубликаты. Такие «мертвые» позиции замедляют работу системы, усложняют поиск актуальных товаров и увеличивают размер резервных копий. Однако их удаление — задача не из простых: неправильные действия могут привести к потере связей в документах, ошибкам в отчетности или даже краху базы.
В этой статье мы разберем безопасные способы очистки номенклатуры в 1С: от ручной проверки до автоматизированных обработок, включая нюансы для разных конфигураций (1С:Управление торговлей, 1С:Бухгалтерия, 1С:ERP). Вы узнаете, как выявить действительно ненужные позиции, проверить их на связи с документами, и какие инструменты помогут сделать это быстро — без риска для бизнес-процессов. Особое внимание уделим скрытой проблеме «сиротских» ссылок в регистрах накопления, которые часто остаются незамеченными при стандартной чистке.
Почему нельзя просто удалить номенклатуру вручную
Многие пользователи 1С пытаются удалить ненужные позиции прямо из справочника Номенклатура, нажав Del или кнопку «Удалить». Это грубейшая ошибка, которая может привести к:
- 🔗 Разрыву связей в документах (накладные, счета, акты) — система не позволит удалить позицию, если она используется хотя бы в одном документе, но при forced-удалении через
Пометить на удалениесвязи могут повредиться. - 📊 Искажению отчетности — если номенклатура участвовала в движениях по регистрам (остатки, себестоимость, продажи), ее удаление нарушит целостность данных.
- 🛑 Остановке бизнес-процессов — например, если позиция привязана к правилам ценообразования или маркетинговым акциям.
- 🗑️ Потере истории — даже если товар давно не продается, его данные могут потребоваться для анализа прошлых периодов или аудита.
Более того, в некоторых конфигурациях (например, 1С:ERP) номенклатура может быть связана с:
- 📦 Серийными номерами и партиями на складе;
- 📈 Планами продаж и закупок;
- 🔄 Межскладскими перемещениями;
- 💰 Расчетами себестоимости (особенно критично для производственных предприятий).
⚠️ Внимание: В конфигурациях с включенным механизмом Управление версиями данных (например, 1С:ERP 2.5+) даже «удаленная» номенклатура может оставаться в истории изменений и занимать место в базе. Для полной очистки потребуются специальные обработки.
Как выявить неиспользуемую номенклатуру: критерии и инструменты
Прежде чем что-то удалять, нужно точно определить, какие позиции действительно не используются. Критериев может быть несколько:
| Критерий | Как проверить | Риски ложного срабатывания |
|---|---|---|
| Отсутствие движений за N лет | Отчет Анализ субконто по регистру Остатки товаров или Продажи |
Могут быть «спящие» позиции, которые продаются раз в несколько лет (например, запчасти) |
| Нулевые остатки на всех складах | Отчет Ведомость по товарам на складах с фильтром по нулевому остатку |
Позиция может быть в пути (транзит) или резервирована под заказ |
| Отсутствие ссылок в документах | Запрос через Консоль запросов или обработку Поиск ссылок |
Не учитывает ссылки в непериодических регистрах (например, Цены номенклатуры) |
| Пометка «Не используется» | Реквизит справочника Номенклатура (если ведется вручную) |
Субъективный критерий — пользователи могут забывать проставлять пометку |
| Даты создания/изменения | Отбор по дате в справочнике Номенклатура (например, не изменялась >2 лет) |
Не актуально для позиций, которые создавались заранее (например, под будущие заказы) |
Для автоматизации поиска можно использовать:
- 📊 Стандартные отчеты:
Анализ номенклатуры(разделОтчеты → Товары);Ведомость по товарамс отбором по нулевым остаткам;Оборотно-сальдовая ведомость по субконто(для бухгалтерских конфигураций).
- 🛠️ Внешние обработки:
- «Поиск и удаление неиспользуемой номенклатуры» (от 1С-Битрикс);
- «Анализ справочников» (от фирмы «Альт-Софт»);
- «Управление данными» (встроена в некоторые дистрибутивы 1С:ERP).
- 🔍 Запросы на языке 1С (для опытных пользователей):
ВЫБРАТЬНоменклатура.Ссылка КАК Ссылка,
Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК Остатки
ПО Номенклатура.Ссылка = Остатки.Номенклатура
ГДЕ
Остатки.Номенклатура ЕСТЬ NULL
И НЕ Номенклатура.ПометкаУдаления
Подготовка к удалению: резервное копирование и тестирование
Перед любыми манипуляциями с номенклатурой обязательно выполните:
Создать резервную копию базы (полную, не инкрементальную)|Проверить права доступа (нужны права администратора)|Отключить пользователей от базы на время чистки|Запустить тестовый прогон на копии базы|Подготовить журнал изменений (для отката при ошибках)-->
Особое внимание уделите резервному копированию:
- 💾 Полная копия — через
Администрирование → Выгрузить информационную базу(формат.dt). - 🔄 Тестовый прогон — сначала очистите копию базы и проверьте:
- Открываются ли документы, где была использована номенклатура;
- Корректно ли строятся отчеты (особенно
Оборотно-сальдовая ведомость); - Нет ли ошибок при проведении новых документов.
- 📝 Журнал изменений — ведите протокол удаляемых позиций (артикул, наименование, дата последнего использования).
⚠️ Внимание: В облачных версиях 1С (например, 1С:Fresh) резервное копирование выполняется автоматически, но восстановление из бэкапа может занять до 24 часов. Перед массовой чисткой уточните этот момент в технической поддержке.
Если вы работаете в 1С:ERP или 1С:КА 2, перед удалением проверьте:
- 📌 Связи с производственными спецификациями — даже если товар не продается, он может быть компонентом в БОМ (Bill of Materials).
- 📊 Участие в бюджетировании — позиция может быть включена в планы закупок или продаж.
- 🔄 Интеграции с внешними системами — например, синхронизация с 1С:Документооборот или CRM.
Перед массовым удалением экспортируйте справочник номенклатуры в Excel через Файл → Сохранить как.... Это поможет быстро восстановить данные, если что-то пойдет не так.
Способы удаления неиспользуемой номенклатуры
В зависимости от конфигурации и объема данных можно использовать разные методы:
1. Ручное удаление через справочник
Подходит для небольшого количества позиций (до 50-100 штук). Алгоритм:
- Откройте справочник
Номенклатура(Справочники → Товары → Номенклатура). - Установите отбор по дате последнего изменения (например, «не изменялась с 2020 года»).
- Для каждой позиции проверьте:
- Остатки на складах (
Ctrl+Shift+F→ введите артикул); - Ссылки в документах (кнопка
Поиск ссылокв карточке номенклатуры).
- Остатки на складах (
Пометить на удаление (не Удалить!).Операции → Удаление помеченных объектов.2. Массовое удаление через обработку
Для больших баз (тысячи позиций) ручная чистка неэффективна. Используйте обработки:
- 📥 Стандартная обработка «Удаление помеченных объектов»:
- Позволяет удалить до 10 000 объектов за один прогон;
- Доступна по пути
Сервис → Удаление помеченных объектов; - Перед запуском обязательно снимите флаг
Удалять объекты с ссылками!
- 🛠️ Внешние обработки:
- «Поиск и удаление дублей номенклатуры» (от Инфостарт);
- «Чистка справочников» (от КорпСофт);
- «Управление данными» (встроена в 1С:ERP 2.4+).
Эти инструменты умеют:
- 🔍 Искать дубли по артикулу, наименованию, штрихкоду;
- 📊 Анализировать связи с документами и регистрами;
- 🗑️ Удалять пачками с контролем ошибок.
3. Удаление через запросы (для программистов)
Если вы владеете языком 1С, можно написать скрипт для массового удаления. Пример запроса для поиска и пометки на удаление:
Процедура ПометитьНеиспользуемуюНоменклатуру()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК Остатки
| ПО Номенклатура.Ссылка = Остатки.Номенклатура
|ГДЕ
| Остатки.Номенклатура ЕСТЬ NULL
| И НЕ Номенклатура.ПометкаУдаления
| И Номенклатура.ДатаИзменения < &ДатаГраница";
ДатаГраница = ТекущаяДата() - 365*2; // Не изменялась 2 года
Запрос.УстановитьПараметр("ДатаГраница", ДатаГраница);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.УстановитьПометкуУдаления(Истина);
Объект.Записать();
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: В конфигурациях с включенным механизмомРасширенная аналитика(например, 1С:ERP 2.5) удаление номенклатуры может привести к ошибкам в кубах OLAP. Перед чисткой отключите этот механизм в настройках функциональности (Администрирование → Настройки программы → Функциональность).
- Правилам автоматического создания заказов;
- Маркетинговым акциям (скидки, наборы);
- Настройкам печатных форм (шаблоны этикеток, ценников).
Всегда проверяйте эти связи перед удалением!-->
Что делать, если номенклатура используется в документах
Если позиция участвует хотя бы в одном документе, ее нельзя удалить стандартными средствами. В этом случае есть несколько вариантов:
1. Архивация вместо удаления
Самый безопасный способ — не удалять, а переносить в архив:
- 📁 Создайте отдельную группу в справочнике
Номенклатура(например, «Архив 2020-2022»). - 🏷️ Помечайте архивные позиции реквизитом «Архивная» или «Не используется».
- 🔍 Настройте отборы в отчетах и документах, чтобы архивные позиции не отображались по умолчанию.
2. Замена на аналогичную номенклатуру
Если позиция дублирует другую (например, старый и новый артикул одного товара), можно:
- Создать обработку для массовой замены ссылок в документах (пример кода ниже).
- Проверить корректность замены в тестовой базе.
- Удалить старую номенклатуру после подтверждения, что все ссылки заменены.
Пример запроса для замены ссылок в документах РеализацияТоваровУслуг:
Процедура ЗаменитьНоменклатуруВДокументах(СтараяСсылка, НоваяСсылка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.ТабличнаяЧастьТовары.Номенклатура = &СтараяСсылка";
Запрос.УстановитьПараметр("СтараяСсылка", СтараяСсылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Док = Выборка.Ссылка.ПолучитьОбъект();
Для Каждого Строка Из Док.Товары Цикл
Если Строка.Номенклатура = СтараяСсылка Тогда
Строка.Номенклатура = НоваяСсылка;
КонецЕсли;
КонецЦикла;
Док.Записать();
КонецЦикла;
КонецПроцедуры
3. Обнуление движений по номенклатуре
Крайний метод — обнулить остатки и удалить движения по регистрам. Это рискованно, но иногда необходимо. Порядок действий:
- Создайте резервную копию базы.
- Используйте обработку «Корректировка регистров» (
Сервис → Корректировка регистров). - Обнулите остатки по номенклатуре в регистрах:
ОстаткиТоваров;ПартииТоваровНаСкладах(если используется партионный учет);СебестоимостьТоваров(для бухгалтерских конфигураций).
Консоль запросов.⚠️ Внимание: Обнуление движений может привести к расхождению данных в бухгалтерском и налоговом учете. В конфигурациях 1С:Бухгалтерия 3.0 и 1С:ERP после такой операции обязательно перепроведите документы за текущий период и сверьте обороты с предыдущими периодами.
Очистка связей в регистрах и справочниках
Даже после удаления номенклатуры из справочника ее «следы» могут оставаться в:
- 📊 Регистрах накопления (например,
ОстаткиТоваров,Продажи); - 📈 Регистрах сведений (например,
ЦеныНоменклатуры,Себестоимость); - 🔗 Регистрах бухгалтерии (проводки по счетам 41, 43, 10);
- 📎 Внешних справочниках (например,
ДополнительныеРеквизитыИСведения).
Для полной очистки используйте:
1. Обработка «Поиск и удаление битых ссылок»
Внешняя обработка (доступна на Инфостарт или 1С-Софт) позволяет:
- 🔍 Найти все ссылки на удаленную номенклатуру;
- 🗑️ Очистить регистры от «сиротских» записей;
- 🔄 Восстановить целостность индексов.
2. Ручное удаление через консоль запросов
Для опытных пользователей — пример запроса для очистки регистра ЦеныНоменклатуры:
Процедура ОчиститьЦеныПоУдаленнойНоменклатуре()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| УДАЛИТЬ ИЗ РегистрСведений.ЦеныНоменклатуры
|ГДЕ
| Номенклатура В (
| ВЫБРАТЬ
| Номенклатура.Ссылка
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.ПометкаУдаления = ИСТИНА
| )";
Запрос.Выполнить();
КонецПроцедуры
3. Перепроведение документов
После очистки регистров рекомендуется перепровести документы за последний год:
- Откройте
Операции → Регламентные операции → Перепроведение документов. - Установите период (например, с 01.01.2023 по 31.12.2023).
- Выберите типы документов:
Поступление товаров,Реализация,Инвентаризация. - Запустите перепроведение и дождитесь завершения.
Что будет, если не очищать регистры после удаления номенклатуры?
Неочищенные регистры приводят к:
- Замедлению работы отчетов (система продолжает сканировать удаленные позиции);
- Ошибкам при проведении документов (например, «Не найдена номенклатура с таким кодом»);
- Некорректному расчету себестоимости (если удаленная номенклатура участвовала в распределении затрат).
В крайних случаях это может привести к невозможности обновления конфигурации.
Автоматизация очистки: регламентные задачи и скрипты
Чтобы не чистить номенклатуру вручную, настройте автоматическую очистку:
1. Регламентное задание в 1С
Создайте задание для ежемесячной проверки неиспользуемой номенклатуры:
- Перейдите в
Администрирование → Регламентные задания. - Создайте новое задание с типом
Выполнение кода. - Установите расписание (например, каждое 1-е число месяца в 2:00).
- Вставьте код для поиска и пометки на удаление (пример ниже).
Пример кода для регламентного задания:
Процедура ВыполнитьПоискНеиспользуемойНоменклатуры() Экспорт
ДатаГраница = ТекущаяДата() - 365*3; // Не использовалась 3 года
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК Остатки
| ПО Номенклатура.Ссылка = Остатки.Номенклатура
|ГДЕ
| Остатки.Номенклатура ЕСТЬ NULL
| И НЕ Номенклатура.ПометкаУдаления
| И Номенклатура.ДатаИзменения < &ДатаГраница";
Запрос.УстановитьПараметр("ДатаГраница", ДатаГраница);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.УстановитьПометкуУдаления(Истина);
Объект.Записать();
КонецЦикла;
// Отправляем отчет администратору
ТекстОтчета = "Помечено на удаление " + Результат.Количество() + " позиций номенклатуры";
ОтправитьEmail("admin@company.ru", "Отчет по очистке номенклатуры", ТекстОтчета);
КонецПроцедуры
2. Интеграция с внешними системами
Если вы используете 1С:ERP или 1С:УТ 11, можно настроить автоматическую архивацию номенклатуры через:
- 🤖 Роботы RPA (например, 1С:Робот или UiPath);
- 📤 Обмен с MDM-системой (Master Data Management);
- 🔄 Скрипты на Python через COM-соединение или REST API.
3. Настройка прав доступа
Чтобы предотвратить хаотичное создание номенклатуры:
- 🔒 Ограничьте права на добавление новых позиций (разрешите только менеджерам категорий).
- 📝 Введите обязательные реквизиты (например, «Категория», «Поставщик»), чтобы сократить количество «мусорных» записей.
- 🔔 Настройте уведомления о создании дублей (через
Подписки на события).
Восстановление данных после ошибок
Если после очистки возникли проблемы (не открываются документы, ошибки в отчетах), воспользуйтесь этими методами восстановления:
1. Восстановление из резервной копии
Самый надежный способ — откат к бэкапу:
- Закройте всех пользователей в базе.
- Перейдите в
Администрирование → Загрузить информационную базу. - Выберите резервную копию (файл
.dt). - Дождитесь завершения загрузки.
2. Восстановление через журнал регистрации
Если резервной копии нет, попробуйте восстановить данные через Журнал регистрации:
- Откройте
Администрирование → Журнал регистрации. - Найдите записи об удалении номенклатуры (фильтр по типу
Удаление объекта). - Экспортируйте данные в
.xmlи попробуйте восстановить черезЗагрузка данных.
3. Ручное восстановление связей
Если проблема в битых ссылках, используйте обработку «Восстановление связей»: