Убираем ненужные позиции из базы 1С: от пометки до полной очистки

· 9 мин

Содержание

Удалить позицию в 1С одним кликом нельзя, и это защита, а не каприз программы. Сначала объект помечают на удаление (клавиша Delete или команда «Пометить на удаление»), а потом запускают обработку Администрирование → Обслуживание → Удаление помеченных объектов. Она проверяет ссылки и физически убирает из базы только то, на что больше никто не ссылается.

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

Отдельная оговорка про документы: первичку и проводки нельзя убирать, пока не истёк срок хранения — 5 лет по ст. 29 Федерального закона № 402-ФЗ. Для таких позиций ниже есть раздел про архивацию: удалять их не нужно, нужно убрать из обихода.

Пометка на удаление: обязательный первый шаг

Пометка — это заявка «объект можно убрать». Данные при этом остаются на месте, просто получают крестик на значке.

Как пометить одну позицию:

  1. Откройте нужный справочник или журнал документов .
  2. Встаньте на строку с позицией.
  3. Нажмите Delete либо правой кнопкой мыши → «Пометить на удаление / Снять пометку».
  4. Подтвердите действие в окне запроса.

Помеченный объект отображается с перечёркнутым (красным) значком и остаётся видимым в списке. Он по-прежнему связан с документами — именно поэтому сама пометка ничего не ломает.

Чтобы снять пометку, повторите то же действие — команда работает как переключатель.

Несколько позиций сразу: выделите их мышью с зажатым Ctrl (вразбивку) или Shift (подряд) и нажмите Delete — пометка встанет на все выделенные строки.

Предопределённые элементы (например, служебные папки или встроенные значения конфигурации) пометить на удаление нельзя — команда будет недоступна. Это нормально: такие объекты создаёт сама конфигурация.

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

Удаление помеченных объектов: второй шаг с контролем ссылок

Физически позиции убирает отдельная обработка. В типовых конфигурациях на «Такси» путь один:

Администрирование → Обслуживание → Удаление помеченных объектов

Обработка предложит два режима:

  • Автоматическое удаление — проверяет и удаляет сразу все помеченные объекты.
  • Выборочное удаление — вы отмечаете галочками, что именно удалять.

Дальше программа ищет ссылки на каждый помеченный объект и удаляет только «чистые» — те, на которые никто не ссылается. В конце покажет сводку: сколько удалено и сколько осталось из-за связей.

Перед большой чисткой сделайте резервную копию базы. Удаление помеченных объектов необратимо: вернуть «снятием пометки» уже удалённый объект невозможно.

Запускайте обработку в тихое время, когда в базе мало пользователей. Монополия не обязательна, но на время проверки объекты блокируются, и активная работа других людей замедлит процесс.

Если помеченных объектов очень много, проверка ссылок идёт долго — это нормально, обработка перебирает все документы базы. Прерывать её на середине не стоит: часть объектов уже удалится, часть нет, и придётся запускать заново. Результат по каждому объекту обработка сохраняет, так что повторный запуск продолжит с оставшихся.

Что делать, если позицию удалить нельзя

Самая частая ситуация: вы пометили номенклатуру или контрагента, запустили обработку, а в ответ — «Объект не может быть удалён, так как на него есть ссылки». Значит, позиция где-то используется.

Это и есть контроль ссылочной целостности. Он не даёт оставить в базе документ, который ссылается на несуществующий объект, — иначе отчёты и проводки «посыпались» бы. Поэтому отказ в удалении почти всегда означает, что сначала нужно разобраться со ссылками, а не обойти проверку.

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

Дальше три варианта:

  • 📄 Ссылка в действующем документе, который и сам больше не нужен. Пометьте этот документ на удаление тоже — и запустите обработку повторно.
  • 🔁 Ссылку можно заменить. В документе или карточке поменяйте старую позицию на актуальную, запишите — и связь пропадёт.
  • 🗄 Ссылка в документе закрытого периода. Такие документы не трогают. Позицию не удаляем — переводим в архив (следующий раздел).
Диагностика: выберите симптом

Архив вместо удаления: убрать позицию, сохранив историю

Если позиция участвует в проведённых документах или в закрытых периодах, удалять её не нужно и часто нельзя. Документы и регистры бухгалтерского учёта хранят 5 лет (ст. 29 Закона № 402-ФЗ, ст. 23 НК РФ), а удаление номенклатуры разорвёт эту историю.

Рабочий приём — спрятать позицию, а не стереть:

  1. Создайте в справочнике группу с говорящим названием, например «Архив» или «Не используется».
  2. Перенесите туда устаревшие позиции: выделите их и выберите в командной панели перемещение в группу (или перетащите мышью в дерево групп).
  3. При желании добавьте к наименованию пометку вроде «(не исп.)» — так позиция сразу видна в общих списках.

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

Этот способ подходит и тогда, когда объект нельзя удалить из-за ссылок, но и держать его «на виду» неудобно. Для контрагентов и договоров логика та же: вместо удаления заведите группу «Не работаем» и перенесите туда неактуальные карточки — реквизиты в закрытых актах и накладных останутся на месте.

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

Массовое и программное удаление позиций

Когда убрать нужно десятки или сотни позиций, по одной это делать долго. Есть два пути.

Выделение группой. В списке отметьте нужные строки с Ctrl или Shift и нажмите Delete — пометка встанет сразу на все. Затем один раз запустите «Удаление помеченных объектов».

Программная пометка. Если позиции отбираются по условию (например, по части наименования), удобнее обработка. В «1С:Предприятии» признак удаления ставит метод УстановитьПометкуУдаления, который сам записывает объект:

Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
    Если НЕ Выборка.ЭтоГруппа И СтрНайти(Выборка.Наименование, "архив") > 0 Тогда
        Объект = Выборка.ПолучитьОбъект();
        Объект.УстановитьПометкуУдаления(Истина);
    КонецЕсли;
КонецЦикла;

Код помечает все элементы (кроме групп), в наименовании которых есть слово «архив». После него всё равно нужно запустить обработку удаления помеченных — метод только ставит пометку.

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

Метод Удалить() стирает объект сразу и в обход контроля ссылок — в рабочей базе им не пользуются: он оставляет те же битые ссылки, что и ручное прямое удаление.

Как убрать дубли номенклатуры и контрагентов

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

В «1С:Бухгалтерии» 3.0 и «1С:Управлении торговлей» 11 это:

Администрирование → Обслуживание → Поиск и удаление дублей

Порядок работы:

  1. Выберите область поиска — например, справочник «Номенклатура» или «Контрагенты».
  2. Задайте правило сравнения (обычно по наименованию) и запустите поиск. Обработка сгруппирует похожие позиции.
  3. В каждой группе отметьте тот элемент, который останется главным.
  4. Нажмите команду удаления дублей.

Обработка сделает главное за вас: заменит все ссылки на дубли главным элементом во всех документах, а сами дубли пометит на удаление. После этого остаётся запустить «Удаление помеченных объектов» — теперь дубли уже ни с чем не связаны и удалятся без ошибок.

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

Прямое удаление и вмешательство в базу через SQL

Иногда в списке у администратора есть команда «Удалить непосредственно» (меню «Ещё»). Она удаляет позицию мгновенно, без проверки ссылок. Применять её безопасно только к свежесозданным тестовым данным, на которые заведомо никто не ссылается.

В рабочей базе прямое удаление оставляет в документах надпись <Объект не найден> — восстановить такие связи без копии базы нельзя.

Про удаление строк напрямую в SQL (через SSMS для клиент-серверной базы) короткий ответ: так не делают. Причины:

  • Имена таблиц в базе 1С изменены платформой (вида _Reference123), и угадать их сложно.
  • Итоги регистров хранятся отдельно от данных, и удаление строки оставит рассинхрон.
  • Любое прямое изменение таблиц делает базу некорректной и снимает её с поддержки.

Прямое удаление и правка таблиц в SQL обрывают ссылочную целостность — в рабочей базе так не делают. Для служебной чистки администраторы используют штатные средства платформы: «Тестирование и исправление» в Конфигураторе, а для файловой базы — утилиту chdbfl.exe. Но эти инструменты чинят базу, а не удаляют позиции учёта — легального «быстрого» способа стереть объект через SQL нет.

Чем отличаются версии 1С и типовые конфигурации

Механизм удаления одинаков в конфигурациях на базе Библиотеки стандартных подсистем — «1С:Бухгалтерия» 3.0, «1С:Зарплата и управление персоналом» 3.1, «1С:Управление торговлей» 11, «Комплексная автоматизация», ERP. Путь к обработке везде один: Администрирование → Обслуживание → Удаление помеченных объектов.

Разница есть по версиям платформы:

  • 1С 8.3 (интерфейс «Такси») — всё как описано выше, обработка умеет работать фоновым заданием.
  • 1С 8.2 (обычное приложение) — та же логика двух шагов, но команда удаления помеченных вызывалась из меню Операции, а интерфейс выглядел иначе.

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

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

Частые вопросы

Можно ли вернуть позицию, если я пометил её на удаление по ошибке?
Да, пока не запущена обработка «Удаление помеченных объектов». Встаньте на строку и повторите команду пометки — она снимется. После физического удаления вернуть объект можно только из резервной копии.
Освобождается ли место в базе после пометки на удаление?
Нет. Пометка — это только заявка. Объект остаётся в базе и участвует в учёте, пока вы не запустите обработку удаления помеченных.
Нужна ли монополия (блокировка всех пользователей), чтобы удалить помеченные объекты?
Нет, обработка работает и при активных пользователях. Но на время проверки ссылок объекты блокируются, поэтому запускать её лучше в тихое время.
Можно ли удалить проведённый документ?
Сначала отмените проведение, затем пометьте документ и запустите обработку. Но документы закрытого периода и в пределах срока хранения не удаляют — переводите их в архив.
Почему в старых документах появилось «<Объект не найден>»?
Позицию удалили напрямую, в обход контроля ссылок. Эти связи уже разорваны — восстановить их можно только откатом базы на резервную копию, сделанную до удаления.

Источники

  • «Федеральный закон № 402-ФЗ «О бухгалтерском учёте», ст. 29 (сроки хранения документов)»
  • «Налоговый кодекс РФ, ст. 23 (сроки хранения данных учёта)»