Удаление номенклатуры в 1С:Предприятие 7.7 — задача, с которой рано или поздно сталкивается каждый пользователь. Казалось бы, что может быть проще: выбрал позицию и нажал «Удалить». Но на практике эта операция чревата ошибками, потерей данных и нарушением целостности базы. Особенно если речь идет о позициях, которые уже использовались в документах, остатках или регистрах.

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

Важно: инструкции в статье актуальны для конфигураций 1С:Торговля и Склад 7.7, 1С:Бухгалтерия 7.7 и других типовых решений на платформе 7.7. Если вы работаете с 1С 8.x, алгоритмы будут иными — учтите это перед началом манипуляций.

📊 С какой целью вы удаляете номенклатуру в 1С 7.7?
Очистка базы от устаревших позиций
Исправление ошибок ввода
Подготовка к миграции на 1С 8
Другое

1. Подготовка к удалению: проверка связей номенклатуры

Прежде чем удалять позицию, необходимо убедиться, что она не используется в других объектах базы. В противном случае вы рискуете получить ошибку «Объект используется в документе [Номер]!» или, что хуже, нарушить целостность данных. Проверку можно выполнить несколькими способами:

Способ 1: Стандартный отчет «Анализ использования объекта»

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

  • 📄 Документы (приходные/расходные накладные, счета, акты)
  • 📊 Регистры остатков (если позиция числится на складе)
  • 🔗 Связанные справочники (например, номенклатурные группы, серии)
  • 💰 Бухгалтерские проводки (если позиция участвовала в учете)

Способ 2: Ручной поиск по базе

Если стандартный отчет не дает полной картины, используйте Ctrl+F в формах документов или выполните SQL-запрос (для опытных пользователей). Например, чтобы найти все приходные накладные с данной номенклатурой:

ВЫБРАТЬ

ПриходнаяНакладная.Номер КАК НомерДокумента,

ПриходнаяНакладная.Дата КАК ДатаДокумента

ИЗ

Документ.ПриходнаяНакладная КАК ПриходнаяНакладная

ГДЕ

ПриходнаяНакладная.Номенклатура = &СсылкаНаНоменклатуру

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

2. Стандартное удаление номенклатуры: когда оно возможно

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

  1. Откройте справочник Номенклатура (Справочники → Товары (номенклатура)).
  2. Найдите нужную позицию (используйте фильтр или поиск по коду/наименованию).
  3. Нажмите Del или выберите Действия → Удалить.
  4. Подтвердите удаление в диалоговом окне.

Что происходит при стандартном удалении?

  • 🗑️ Позиция полностью исчезает из справочника (в отличие от пометки на удаление).
  • 🔄 Освобождается код номенклатуры (его можно присвоить новой позиции).
  • 📉 Если позиция была в группах, ее придется удалять из каждой группы отдельно.

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

Сделать резервную копию базы|Проверить связи позиций в отчете "Анализ использования объекта"|Убедиться, что периоды закрыты (если удаляете из прошлых лет)|Согласовать удаление с бухгалтерией (если позиция участвовала в учете)|Подготовить замену (например, новую номенклатуру с аналогичными свойствами)

-->

3. Альтернативные методы: пометка на удаление и архивирование

Если стандартное удаление невозможно, используйте один из этих способов:

Метод 1: Пометка на удаление

Этот способ позволяет «спрятать» позицию из активного использования, не нарушая целостности базы:

  1. Откройте карточку номенклатуры.
  2. Нажмите Действия → Пометить на удаление.
  3. Подтвердите действие.

После этого позиция останется в базе, но:

  • 👀 Она не будет отображаться в списках (если не включен флаг «Показывать помеченные на удаление»).
  • 🔄 Ее можно будет восстановить через Действия → Снять пометку удаления.
  • 📊 В отчетах она будет учитываться только при включенном фильтре «Включая помеченные на удаление».

Метод 2: Перенос в архивный справочник

Если в вашей конфигурации предусмотрен справочник АрхивНоменклатуры (или аналогичный), перенесите позицию туда:

  1. Создайте новую позицию в архивном справочнике (скопируйте данные из оригинальной).
  2. В оригинальной номенклатуре установите признак Неиспользуемая (если такой реквизит есть).
  3. В документах замените старую позицию на архивную (при необходимости).
⚠️ Внимание: Если вы работаете с 1С:УТ 7.7 или 1С:БП 7.7, проверьте, не используется ли номенклатура в регламентных операциях (например, в закрытии месяца). Ее удаление может привести к ошибкам при проведении документов.
Метод Когда использовать Плюсы Минусы
Стандартное удаление Позиция не используется нигде Полностью очищает базу, освобождает код Не работает при наличии связей
Пометка на удаление Позиция используется в документах, но не нужна в работе Не ломает целостность базы, можно восстановить Остается в базе, занимает место
Архивирование Нужно сохранить историю по позиции Сохраняет данные для отчетности Требует ручной перенос в архивный справочник
Программное удаление Массовое удаление или сложные связи Может обойти ограничения стандартных методов Требует знаний 1С:Предприятие или помощи программиста

4. Программное удаление: для опытных пользователей

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

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

Процедура УдалитьНоменклатуру(СсылкаНаНоменклатуру)

НачатьТранзакцию();

Попытка

// Проверяем, есть ли остатки

Если НЕ ПустоеЗначение(СсылкаНаНоменклатуру.ОстаткиТоваров()) Тогда

Предупреждение("Невозможно удалить: есть остатки на складах!");

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

Возврат;

КонецЕсли;

// Удаляем все связи в документах (если нужно)

Запрос = СоздатьОбъект("Запрос");

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

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

ИЗ

Документ.ПриходнаяНакладная КАК Документ

ГДЕ

Документ.Номенклатура = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", СсылкаНаНоменклатуру);

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

Пока Результат.Следующий() Цикл

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

Док.Номенклатура = Неопределено; // или другая номенклатура

Док.Записать();

КонецЦикла;

// Удаляем саму номенклатуру

СсылкаНаНоменклатуру.Удалить();

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

Сообщить("Номенклатура удалена успешно!");

Исключение

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

Сообщить(ОписаниеОшибки());

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

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

Как использовать этот код?

  • 🖥️ Откройте Конфигуратор 1С 7.7 (Файл → Открыть конфигурацию).
  • 📝 Перейдите в Отладка → Открыть окно отладки.
  • 🔧 Вставьте код в окно и выполните его, передав ссылку на номенклатуру.
⚠️ Внимание: Перед выполнением программного удаления обязательно сделайте резервную копию базы через Администрирование → Выгрузить данные. Восстановление после ошибок в коде может быть невозможно!
💡

Если вы не уверены в своих силах, попробуйте сначала выполнить код на тестовой копии базы. Для этого скопируйте файл 1Cv7.MD в отдельную папку и работайте с ним.

5. Восстановление удаленной номенклатуры: возможно ли?

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

1. Если была использована пометка на удаление:

Вернуть позицию можно за несколько кликов:

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

2. Если было стандартное или программное удаление:

В этом случае восстановить позицию через интерфейс 1С 7.7 невозможно. Варианты решений:

  • 🔄 Восстановление из резервной копии (если она есть).
  • 📝 Ручной ввод — создайте позицию заново с теми же реквизитами.
  • 💻 Использование утилит вроде 1Cv7.DT для низкоуровневого восстановления (только для опытных пользователей!).

3. Если позиция использовалась в документах:

При восстановлении проверьте:

  • 📌 Совпадение кода номенклатуры (если он использовался в обмене данными).
  • 🔄 Корректность ссылок в документах (иногда требуется перепроведение).
  • 📊 Остатки — если позиция числилась на складе, может потребоваться инвентаризация.
Что делать, если после восстановления документы не проводятся?

Если после восстановления номенклатуры документы (например, реализации или приходные накладные) перестали проводиться, выполните следующие действия:

  1. Проверьте, не изменился ли идентификатор объекта (внутренний номер в базе). Если да — придется вручную исправлять ссылки в документах.
  2. Выполните тестирование и исправление базы (Администрирование → Тестирование и исправление).
  3. Если ошибка сохраняется, попробуйте пересчитать итоги по регистрам, связанным с номенклатурой.

6. Типичные ошибки и как их избежать

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

Ошибка 1: «Объект используется в документе [Номер]!»

Причина: Позиция упоминается в проведенном документе (даже если количество = 0).

Решение:

  • 🔍 Найдите документ через Анализ использования объекта.
  • 📝 Отмените проведение документа, удалите или замените номенклатуру, затем проведите заново.
  • 🗑️ Если документ неважен, удалите его полностью.

Ошибка 2: «Невозможно удалить: есть остатки!»

Причина: На складе числится ненулевой остаток по позиции.

Решение:

  • 📊 Проверьте остатки через отчет Ведомость по товарам на складах.
  • 🔄 Если остатки нулевые, но ошибка сохраняется, выполните пересчет итогов.
  • 📦 Если остатки реальные — проведите списание или инвентаризацию.

Ошибка 3: «Нарушение прав доступа»

Причина: У вашего пользователя нет прав на удаление справочников.

Решение:

  • 👤 Зайдите в систему под пользователем с правами Администратор.
  • 🔧 Настройте права в Сервис → Пользователи → Настройка прав.

Ошибка 4: Зависание 1С при удалении

Причина: Большой объем связанных данных или повреждение базы.

Решение:

  • 🖥️ Перезапустите 1С:Предприятие и повторите попытку.
  • 🛠️ Выполните тестирование и исправление базы.
  • 📡 Если проблема сохраняется, попробуйте удалить позицию на локальной копии базы.
💡

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

7. Массовое удаление номенклатуры: автоматизация процесса

Если нужно удалить десятки или сотни позиций, ручной метод неэффективен. В этом случае поможет обработка для массового удаления. Ее можно написать самостоятельно или скачать готовую (например, с сайтов infostart.ru или 1c-pro.ru).

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

  1. Экспортируйте список номенклатуры в Excel или TXT.
  2. Отфильтруйте позиции, которые нужно удалить (например, по группе или дате последнего использования).
  3. Загрузите список в обработку и запустите проверку связей.
  4. Удалите позиции пакетом (с возможностью отката).

Где найти готовые обработки?

  • 🌐 Infostart.ru (раздел «Обработки для 1С 7.7»).
  • 📁 1C-Pro.ru (каталог внешних обработок).
  • 💾 Локальные форумы пользователей 1С (например, forum.1c.ru).
⚠️ Внимание: Перед использованием сторонних обработок проверьте их на тестовой базе. Некоторые скрипты могут содержать ошибки или не учитывать особенности вашей конфигурации.

Альтернатива: перенос в архив пакетом

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

Процедура ПеренестиВАрхив(МассивСсылок)

Архив = СоздатьОбъект("Справочник.АрхивНоменклатуры");

Для Каждого Ссылка Из МассивСсылок Цикл

НоваяЗапись = Архив.Добавить();

ЗаполнитьЗначенияСвойств(НоваяЗапись, Ссылка.ПолучитьОбъект());

НоваяЗапись.Записать();

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

КонецЦикла;

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

FAQ: Частые вопросы по удалению номенклатуры в 1С 7.7

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

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

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

🔹 Как удалить номенклатуру, если она используется в документе, который нельзя редактировать?

Есть несколько способов:

  1. Создайте документ-дублер с другой номенклатурой, затем удалите оригинальный документ.
  2. Используйте программное удаление (см. раздел 4), чтобы обнулить ссылку на номенклатуру в документе.
  3. Если документ системный (например, Закрытие месяца), попробуйте отменить его проведение через конфигуратор.
🔹 Почему после удаления номенклатуры в отчетах остаются старые данные?

Это происходит из-за того, что итоги не пересчитаны. После удаления:

  1. Выполните Тестирование и исправление базы с галочкой Пересчет итогов.
  2. Проверьте настройки отчетов — возможно, включен флаг Показывать помеченные на удаление.
  3. Если используете 1С:Торговлю, обновите данные в регистрах ОстатковТоваров и ПартииТоваров.
🔹 Как удалить номенклатуру вместе со всеми ее модификациями?

В 1С 7.7 модификации (например, размеры или цвета) часто хранятся как отдельные позиции. Чтобы удалить их пакетом:

  1. Найдите головную номенклатуру (ту, у которой есть модификации).
  2. Откройте ее и перейдите на закладку Модификации.
  3. Удалите сначала модификации, затем саму позицию.

Если модификации используются в документах, сначала замените их на другие позиции.

🔹 Можно ли восстановить номенклатуру после стандартного удаления без резервной копии?

К сожалению, нет. В 1С 7.7 стандартное удаление физически удаляет запись из базы данных. Единственные варианты:

  • Восстановить из резервной копии (если она есть).
  • Создать позицию заново вручную (с тем же кодом и наименованием).
  • Использовать низкоуровневые утилиты вроде 1Cv7.DT, но это рискованно и требует навыков администрирования.