Убираем ненужные позиции из базы 1С: от пометки до полной очистки
Содержание
Удалить позицию в 1С одним кликом нельзя, и это защита, а не каприз программы. Сначала объект помечают на удаление (клавиша Delete или команда «Пометить на удаление»), а потом запускают обработку Администрирование → Обслуживание → Удаление помеченных объектов. Она проверяет ссылки и физически убирает из базы только то, на что больше никто не ссылается.
Так удаляют любые позиции: номенклатуру, контрагентов, элементы справочников и документы. Прямое удаление в обход контроля есть, но доступно только администратору и в рабочей базе почти никогда не нужно.
Отдельная оговорка про документы: первичку и проводки нельзя убирать, пока не истёк срок хранения — 5 лет по ст. 29 Федерального закона № 402-ФЗ. Для таких позиций ниже есть раздел про архивацию: удалять их не нужно, нужно убрать из обихода.
Пометка на удаление: обязательный первый шаг
Пометка — это заявка «объект можно убрать». Данные при этом остаются на месте, просто получают крестик на значке.
Как пометить одну позицию:
- Откройте нужный справочник или журнал документов .
- Встаньте на строку с позицией.
- Нажмите
Deleteлибо правой кнопкой мыши → «Пометить на удаление / Снять пометку». - Подтвердите действие в окне запроса.
Помеченный объект отображается с перечёркнутым (красным) значком и остаётся видимым в списке. Он по-прежнему связан с документами — именно поэтому сама пометка ничего не ломает.
Чтобы снять пометку, повторите то же действие — команда работает как переключатель.
Несколько позиций сразу: выделите их мышью с зажатым Ctrl (вразбивку) или Shift (подряд) и нажмите Delete — пометка встанет на все выделенные строки.
Предопределённые элементы (например, служебные папки или встроенные значения конфигурации) пометить на удаление нельзя — команда будет недоступна. Это нормально: такие объекты создаёт сама конфигурация.
Главное не перепутать: пометка на удаление ничего не удаляет и не освобождает место в базе. Это только первый из двух шагов.
Удаление помеченных объектов: второй шаг с контролем ссылок
Физически позиции убирает отдельная обработка. В типовых конфигурациях на «Такси» путь один:
Администрирование → Обслуживание → Удаление помеченных объектов
Обработка предложит два режима:
- Автоматическое удаление — проверяет и удаляет сразу все помеченные объекты.
- Выборочное удаление — вы отмечаете галочками, что именно удалять.
Дальше программа ищет ссылки на каждый помеченный объект и удаляет только «чистые» — те, на которые никто не ссылается. В конце покажет сводку: сколько удалено и сколько осталось из-за связей.
Перед большой чисткой сделайте резервную копию базы. Удаление помеченных объектов необратимо: вернуть «снятием пометки» уже удалённый объект невозможно.
Запускайте обработку в тихое время, когда в базе мало пользователей. Монополия не обязательна, но на время проверки объекты блокируются, и активная работа других людей замедлит процесс.
Если помеченных объектов очень много, проверка ссылок идёт долго — это нормально, обработка перебирает все документы базы. Прерывать её на середине не стоит: часть объектов уже удалится, часть нет, и придётся запускать заново. Результат по каждому объекту обработка сохраняет, так что повторный запуск продолжит с оставшихся.
Что делать, если позицию удалить нельзя
Самая частая ситуация: вы пометили номенклатуру или контрагента, запустили обработку, а в ответ — «Объект не может быть удалён, так как на него есть ссылки». Значит, позиция где-то используется.
Это и есть контроль ссылочной целостности. Он не даёт оставить в базе документ, который ссылается на несуществующий объект, — иначе отчёты и проводки «посыпались» бы. Поэтому отказ в удалении почти всегда означает, что сначала нужно разобраться со ссылками, а не обойти проверку.
Надёжнее всего запустить удаление в выборочном режиме: обработка сама покажет полный список объектов, которые ссылаются на позицию. По любой строке из списка можно перейти двойным кликом и посмотреть, где именно она задействована.
Дальше три варианта:
- 📄 Ссылка в действующем документе, который и сам больше не нужен. Пометьте этот документ на удаление тоже — и запустите обработку повторно.
- 🔁 Ссылку можно заменить. В документе или карточке поменяйте старую позицию на актуальную, запишите — и связь пропадёт.
- 🗄 Ссылка в документе закрытого периода. Такие документы не трогают. Позицию не удаляем — переводим в архив (следующий раздел).
Архив вместо удаления: убрать позицию, сохранив историю
Если позиция участвует в проведённых документах или в закрытых периодах, удалять её не нужно и часто нельзя. Документы и регистры бухгалтерского учёта хранят 5 лет (ст. 29 Закона № 402-ФЗ, ст. 23 НК РФ), а удаление номенклатуры разорвёт эту историю.
Рабочий приём — спрятать позицию, а не стереть:
- Создайте в справочнике группу с говорящим названием, например «Архив» или «Не используется».
- Перенесите туда устаревшие позиции: выделите их и выберите в командной панели перемещение в группу (или перетащите мышью в дерево групп).
- При желании добавьте к наименованию пометку вроде «(не исп.)» — так позиция сразу видна в общих списках.
Так история в документах и отчётах остаётся целой, а в рабочих списках устаревшая позиция больше не мешает. Многие формы подбора позволяют отфильтровать или скрыть архивную группу, чтобы менеджеры не выбирали её по ошибке.
Этот способ подходит и тогда, когда объект нельзя удалить из-за ссылок, но и держать его «на виду» неудобно. Для контрагентов и договоров логика та же: вместо удаления заведите группу «Не работаем» и перенесите туда неактуальные карточки — реквизиты в закрытых актах и накладных останутся на месте.
Отдельно про остатки: прежде чем прятать номенклатуру в архив, убедитесь, что по ней нулевые остатки на складах и нет незакрытых взаиморасчётов. Позиция с движениями продолжит попадать в оборотно-сальдовую ведомость независимо от того, в какой она группе.
Массовое и программное удаление позиций
Когда убрать нужно десятки или сотни позиций, по одной это делать долго. Есть два пути.
Выделение группой. В списке отметьте нужные строки с Ctrl или Shift и нажмите Delete — пометка встанет сразу на все. Затем один раз запустите «Удаление помеченных объектов».
Программная пометка. Если позиции отбираются по условию (например, по части наименования), удобнее обработка. В «1С:Предприятии» признак удаления ставит метод УстановитьПометкуУдаления, который сам записывает объект:
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ Выборка.ЭтоГруппа И СтрНайти(Выборка.Наименование, "архив") > 0 Тогда
Объект = Выборка.ПолучитьОбъект();
Объект.УстановитьПометкуУдаления(Истина);
КонецЕсли;
КонецЦикла;
Код помечает все элементы (кроме групп), в наименовании которых есть слово «архив». После него всё равно нужно запустить обработку удаления помеченных — метод только ставит пометку.
Запускать такую обработку стоит в копии базы или в тихое время. Ошибка в условии отбора пометит на удаление не то, что нужно.
Метод Удалить() стирает объект сразу и в обход контроля ссылок — в рабочей базе им не пользуются: он оставляет те же битые ссылки, что и ручное прямое удаление.
Как убрать дубли номенклатуры и контрагентов
Чаще всего «лишние позиции» — это дубли: один и тот же товар или контрагент заведён дважды, и по каждому уже есть документы. Просто пометить дубль на удаление не выйдет — на него есть ссылки. Для этого случая в типовых конфигурациях есть отдельный инструмент.
В «1С:Бухгалтерии» 3.0 и «1С:Управлении торговлей» 11 это:
Администрирование → Обслуживание → Поиск и удаление дублей
Порядок работы:
- Выберите область поиска — например, справочник «Номенклатура» или «Контрагенты».
- Задайте правило сравнения (обычно по наименованию) и запустите поиск. Обработка сгруппирует похожие позиции.
- В каждой группе отметьте тот элемент, который останется главным.
- Нажмите команду удаления дублей.
Обработка сделает главное за вас: заменит все ссылки на дубли главным элементом во всех документах, а сами дубли пометит на удаление. После этого остаётся запустить «Удаление помеченных объектов» — теперь дубли уже ни с чем не связаны и удалятся без ошибок.
Сначала проверьте результаты поиска глазами: разные товары иногда называются почти одинаково. Неверно объединённые позиции потом разделить сложно.
Прямое удаление и вмешательство в базу через 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 (сроки хранения данных учёта)»