Удаление строки из справочника номенклатуры в 1С:Предприятие — операция, которая только кажется простой. На практике она чревата ошибками, если не учесть связи с документами, остатки на складах или использование позиции в других справочниках. Например, попытка удалить номенклатуру, которая фигурирует в реализации за прошлый год, может привести к обрыву цепочки проводок и ошибкам при закрытии периода.
В этой статье разберём все возможные сценарии: от ручного удаления через интерфейс до программных методов с использованием 1С:Предприятие 8.3 и 8.2. Особое внимание уделим проверке связей, альтернативным способам (пометка на удаление, перенос в архив) и типичным ошибкам, которые допускают пользователи. Если вы администрируете базу или занимаетесь настройкой 1С, эти инструкции помогут избежать потери данных и сбоев в учёте.
Предупреждение для бухгалтеров: удаление номенклатуры может повлиять на налоговый учёт (например, если позиция использовалась в декларациях по НДС). Перед массовым удалением рекомендуем согласовать действия с главбухом или аудитором.
1. Когда можно удалить строку номенклатуры, а когда нельзя
Перед удалением проверьте, не используется ли номенклатура в:
- 📄 Документах (реализация, поступление, инвентаризация, заказы клиентов).
- 📊 Регистрах накопления (остатки товаров, себестоимость).
- 🔗 Других справочниках (например, как компонент в номенклатурных наборах или комплектах).
- 💰 Бухгалтерских проводках (если номенклатура участвовала в операциях).
Если позиция никогда не использовалась (например, была создана ошибочно), её можно удалить без последствий. В остальных случаях лучше использовать пометку на удаление или перенос в архивный раздел. Это сохранит историю операций и избежит ошибок при формировании отчётности.
Критический момент: в конфигурациях типа 1С:УТ 11 или 1С:ERP некоторые операции (например, Расчёт себестоимости) могут блокировать удаление номенклатуры даже после пометки. В этом случае требуется перепроводить документы или использовать обработку для очистки связей.
⚠️ Внимание: В 1С:Бухгалтерии 3.0 удаление номенклатуры, использовавшейся в закрытых периодах, может привести к расхождению данных в отчётахАнализ счётаиОборотно-сальдовая ведомость. Перед удалением проверьте настройки учёта в разделеАдминистрирование → Настройки программы → Учётная политика.
2. Способ 1: Удаление через интерфейс 1С (ручной метод)
Самый простой способ — удалить строку непосредственно из справочника Номенклатура. Подходит для позиций, которые не использовались в документах или были созданы по ошибке.
Пошаговая инструкция:
- Откройте справочник
Номенклатурачерез менюСправочники → Товары (номенклатура). - Найдите нужную строку с помощью поиска (
Ctrl+F) или фильтров. - Выделите строку и нажмите
Deleteили кнопкуУдалитьна панели инструментов. - Подтвердите действие в диалоговом окне.
Если кнопка Удалить неактивна, значит, номенклатура используется в базе. В этом случае 1С предложит пометить на удаление (об этом — в следующем разделе).
Номенклатура не используется в документах
Нет остатков на складах
Позиция не входит в комплекты или наборы
Нет ссылок в регистрах учёта-->
Важно: В некоторых конфигурациях (например, 1С:Розница) при удалении номенклатуры может потребоваться пересчёт итогов в регистрах. Это занимает время, особенно в больших базах. Если база работает в файловом варианте, дождитесь завершения операции — прерывание может привести к повреждению данных.
3. Способ 2: Пометка на удаление — когда прямое удаление невозможно
Если номенклатура используется в документах или регистрах, 1С заблокирует её удаление. В этом случае система предложит пометить объект на удаление. Это означает, что:
- 🗑️ Строка останется в базе, но будет скрыта в интерфейсе (если не включен режим показа помеченных объектов).
- 🔄 Данные о номенклатуре сохранятся в истории (её можно будет восстановить).
- ⚠️ В некоторых отчётах (например,
Анализ продаж) позиция может продолжать отображаться.
Как пометить на удаление:
- Откройте карточку номенклатуры двойным кликом.
- В меню
ДействиявыберитеПометить на удаление. - Подтвердите действие.
Чтобы полностью удалить помеченную номенклатуру, нужно:
- Запустить
Администрирование → Поддержка и обслуживание → Тестирование и исправление. - Выбрать
Удаление помеченных объектови выполнить операцию.
Что будет, если не удалять помеченные объекты?
Помеченные на удаление объекты занимают место в базе и могут замедлять её работу, особенно если их тысячи. Кроме того, они продолжают участвовать в некоторых отчётах (например, в Остатки товаров при включении галочки "Показывать помеченные на удаление"). Регулярная очистка базы от ненужных помеченных объектов — часть технического обслуживания 1С.
Нюанс для ERP-систем: В 1С:ERP пометка на удаление может заблокировать операции, связанные с планированием закупок или производством, если номенклатура включена в планы. Перед пометкой проверьте разделы Производство → Планы и Закупки → Заказы поставщикам.
4. Способ 3: Программное удаление через код (для разработчиков)
Если нужно удалить много строк или автоматизировать процесс, используйте встроенный язык 1С. Ниже приведён пример кода для удаления номенклатуры с проверкой связей.
Пример кода для удаления одной позиции:
Процедура УдалитьНоменклатуру(СсылкаНаНоменклатуру)
Если Номенклатура.Ссылка.Пустая() Тогда
Возврат;
КонецЕсли;
// Проверяем, используется ли номенклатура в документах
Если Номенклатура.Ссылка.ИспользуетсяВДокументах() Тогда
Сообщить("Номенклатура используется в документах! Удаление невозможно.");
Возврат;
КонецЕсли;
// Пытаемся удалить
Попытка
Номенклатура.Ссылка.Удалить();
Сообщить("Номенклатура успешно удалена!");
Исключение
Сообщить("Ошибка при удалении: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Для массового удаления можно использовать следующий код (с осторожностью!):
Процедура МассовоеУдалениеНоменклатуры()
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ Выборка.Ссылка.ИспользуетсяВДокументах() Тогда
Попытка
Выборка.Ссылка.Удалить();
Исключение
Продолжить;
КонецПопытки;
КонецЕсли;
КонецЦикла;
Сообщить("Удаление завершено!");
КонецПроцедуры
Предупреждение: Массовое удаление может заблокировать базу на длительное время. Выполняйте его в нерабочие часы или на тестовой копии. Для больших баз (более 10 000 позиций) лучше использовать фоновые задания.
Перед массовым удалением сделайте резервную копию базы через Администрирование → Выгрузка/загрузка данных. В случае ошибки вы сможете быстро восстановить данные.
5. Способ 4: Перенос в архив вместо удаления
Если номенклатура больше не используется, но её нельзя удалить из-за связей, лучший вариант — перенести её в архивный раздел. Это сохранит историю и избежит ошибок в отчётах.
Как создать архивный раздел:
- Откройте справочник
Номенклатура. - В дереве групп создайте новую группу (например,
Архив 2026). - Перенесите ненужные позиции в эту группу вручную или с помощью обработки.
- Настройте права доступа так, чтобы пользователи не могли случайно использовать архивные позиции (в
Администрирование → Настройки пользователей).
Преимущества этого метода:
| Критерий | Удаление | Архивирование |
|---|---|---|
| Сохранение истории | ❌ Удаляется навсегда | ✅ Сохраняется |
| Влияние на отчёты | ❌ Может исказить данные | ✅ Не влияет |
| Возможность восстановления | ❌ Только из резервной копии | ✅ Можно вернуть в основной справочник |
| Скорость операции | ✅ Быстро | ✅ Быстро |
В 1С:УТ 11 и 1С:ERP можно автоматизировать архивирование с помощью регламентного задания. Например, переносить в архив позиции, которые не использовались более года.
6. Способ 5: Использование обработок для очистки связей
Если номенклатура используется в документах, но вы всё равно хотите её удалить, придётся сначала очистить связи. Для этого можно:
- 🔄 Перепровести документы с заменой номенклатуры на другую.
- 🧹 Использовать специализированные обработки (например, "Поиск и замена ссылок" или "Очистка базы").
- 📝 Вручную исправить регистры (только для опытных пользователей!).
Пример обработки для замены номенклатуры в документах:
Процедура ЗаменитьНоменклатуруВДокументах(СтараяНоменклатура, НоваяНоменклатура)
// Получаем все документы, где используется старая номенклатура
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Документ
|ГДЕ
| Документ.Товары.Номенклатура = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СтараяНоменклатура);
Результат = Запрос.Выполнить();
// Проходим по всем найденным документам и заменяем номенклатуру
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Док = Выборка.Ссылка.ПолучитьОбъект();
Для Каждого СтрокаТовары Из Док.Товары Цикл
Если СтрокаТовары.Номенклатура = СтараяНоменклатура Тогда
СтрокаТовары.Номенклатура = НоваяНоменклатура;
КонецЕсли;
КонецЦикла;
Док.Записать();
КонецЦикла;
КонецПроцедуры
Важно: После замены номенклатуры в документах необходимо перепровести их, чтобы обновились движения по регистрам. В некоторых конфигурациях (например, 1С:Комплексная автоматизация) может потребоваться пересчёт себестоимости.
⚠️ Внимание: Очистка связей вручную или через обработки может нарушить целостность данных, если не учесть все зависимости. Например, в 1С:ERP замена номенклатуры в документеЗаказ клиентане всегда автоматически обновляет связанныйДокумент реализации. Проверяйте связанные объекты вручную!
7. Типичные ошибки и как их избежать
Даже опытные пользователи 1С допускают ошибки при удалении номенклатуры. Вот самые распространённые:
- 🚫 Удаление без проверки остатков — приводит к отрицательным остаткам на складах.
- 🔄 Игнорирование пометки на удаление — помеченные объекты продолжают занимать место в базе.
- 📉 Удаление в рабочее время — блокирует работу других пользователей.
- 🔍 Неполная очистка связей — номенклатура остаётся в регистрах, что искажает отчёты.
Как избежать проблем:
- Всегда делайте резервную копию перед массовыми операциями.
- Используйте тестовую базу для отработки сценариев.
- Проверяйте логи транзакций после удаления (в
Администрирование → Журнал регистрации).
Если после удаления возникли ошибки (например, "Объект не найден" в отчётах), восстановите данные из резервной копии и повторите операцию с учётом всех зависимостей.
Перед удалением номенклатуры всегда проверяйте её использование в документах, регистрах и других справочниках. Лучше архивировать, чем удалять — это сохранит историю и избежит ошибок в учёте.
FAQ: Частые вопросы по удалению номенклатуры в 1С
Можно ли удалить номенклатуру, если она используется в закрытом периоде?
Нет, в большинстве конфигураций (например, 1С:Бухгалтерия 3.0) это приведёт к ошибкам при формировании регламентированной отчётности. Лучше пометить её на удаление или перенести в архив. Если необходимо полностью удалить, предварительно переоткройте период в настройках учёта (раздел Администрирование → Настройки программы → Учётная политика).
Как узнать, в каких документах используется номенклатура?
Откройте карточку номенклатуры, перейдите на закладку Связи или используйте отчёт Анализ использования объекта (доступен в некоторых конфигурациях через Все функции → Стандартные отчёты). Также можно выполнить запрос:
ВЫБРАТЬ
Документ.Вид() КАК ВидДокумента,
Документ.Ссылка КАК Ссылка
ИЗ
Документ КАК Документ
ГДЕ
Документ.Ссылка В (
ВЫБРАТЬ
Документ.Ссылка
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
ГДЕ
Документ.Товары.Номенклатура = &СсылкаНаНоменклатуру
)
Что делать, если при удалении появляется ошибка "Объект используется"?
Эта ошибка означает, что номенклатура связана с другими объектами. Варианты решений:
- Используйте пометку на удаление.
- Найдите и удалите все ссылки вручную (через отчёт
Анализ связей). - Замените номенклатуру на другую в связанных документах (см. раздел про обработки).
В 1С:УТ 11 для поиска связей можно использовать обработку "Поиск и замена значений" из стандартного набора.
Как восстановить номенклатуру после пометки на удаление?
Чтобы восстановить помеченную номенклатуру:
- Включите отображение помеченных объектов в настройках справочника (галочка
Показывать помеченные на удаление). - Найдите нужную строку, откройте её карточку.
- В меню
ДействиявыберитеСнять пометку удаления.
Если номенклатура уже была физически удалена (после очистки помеченных объектов), восстановить её можно только из резервной копии.
Можно ли удалить номенклатуру через SQL-запрос к базе?
Технически да, но это крайне не рекомендуется. Прямое вмешательство в базу через SQL может нарушить целостность данных, особенно в конфигурациях с сложной структурой (например, 1С:ERP). Если необходимо массовое удаление, лучше написать обработку на встроенном языке 1С с проверкой всех связей.
Пример опасности: удаление строки из таблицы SC{ГУИД} (где хранятся справочники) без очистки регистров приведёт к обрыву ссылок и ошибкам при проведении документов.