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

· 9 мин

Содержание

Элементы справочников и документы в 1С 8.3 удаляют в два шага. Сначала объект помечают на удаление клавишей Del или командой «Пометить на удаление» в списке. Потом администратор запускает обработку Администрирование → Обслуживание → Удаление помеченных объектов, и программа стирает из базы только то, на что больше никто не ссылается.

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

Как устроено удаление объектов в 1С

Платформа различает объекты ссылочных типов и записи регистров. От этого зависит, есть ли промежуточная пометка.

Что удаляемЕсть пометка на удалениеКак удаляется физически
Элемент или группа справочникаДаОбработкой удаления помеченных
ДокументДаОбработкой удаления помеченных
План видов характеристик, план счетов, бизнес-процесс, задачаДаОбработкой удаления помеченных
Запись независимого регистра сведенийНетСразу, по Del в списке
Движения регистров накопления и бухгалтерииНетВместе с отменой проведения документа-регистратора
Запись регистрации изменений в плане обменаНетИз формы состава изменений или кодом

Зачем нужна пометка? Объекты связаны ссылками. Если стереть контрагента сразу, в поступлениях, счетах-фактурах и проводках вместо него появится <Объект не найден>. Пометка — это отложенное решение: обработка удаления сначала проверяет все ссылки и только потом стирает.

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

Пометка на удаление: справочники, документы, группы

Как поставить и снять пометку

  1. Откройте список справочника или журнал документов .
  2. Выделите строку. Для нескольких строк держите Ctrl или Shift.
  3. Нажмите Del или выберите в меню «Ещё» команду пометки на удаление.
  4. Подтвердите вопрос программы.

Снимают пометку так же: повторный Del на помеченной строке, и программа спросит, снять ли пометку.

Что происходит с документом

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

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

Группы справочника

Когда помечаете группу, платформа помечает и все вложенные элементы и подгруппы. Если внутри есть элементы, которые нужно сохранить, сначала перенесите их в другую группу — перетаскиванием мышью или изменением поля «Родитель» в карточке.

Как найти все помеченные объекты

  • 🔍 В списке справочника или документа настройте отбор по полю «Пометка удаления».
  • 📋 Обработка удаления помеченных сама собирает полный перечень по всей базе — по нему удобнее всего проверять, что будет стёрто.

Физическое удаление помеченных объектов

Через раздел «Администрирование»

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

  1. Сделайте резервную копию базы : выгрузку .dt через Конфигуратор или копию средствами СУБД.
  2. Откройте обработку удаления помеченных объектов.
  3. Выберите режим: удалить всё помеченное автоматически или выборочно.
  4. В выборочном режиме отметьте флажками объекты, которые действительно нужно стереть.
  5. Запустите удаление и дождитесь окончания проверки ссылок.
  6. Изучите итог: что удалено и что осталось.

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

Почему объект не удаляется

После проверки обработка показывает объекты, которым мешают ссылки, и сами ссылающиеся объекты. Варианты действий:

  • ✅ Ссылка из такого же помеченного объекта — удалятся оба, если отметить оба.
  • 🔁 Ссылка из рабочего документа — замените ссылку на правильный элемент. Для дублей контрагентов и номенклатуры в БСП есть обработка поиска и удаления дублей в том же разделе Администрирование → Обслуживание: она переносит ссылки на оригинал и помечает дубль.
  • ❌ Ссылка из документа, который тоже не нужен, — пометьте документ и повторите удаление.

Стандартная обработка платформы

В конфигурациях без БСП или при сбое обработки конфигурации есть встроенный вариант. Включите в параметрах (меню с шестерёнкой → «Параметры») флажок «Отображать команду «Все функции»». Затем откройте Все функции → Стандартные → Удаление помеченных объектов. Логика та же: поиск, контроль ссылок, удаление.

Удаление по расписанию

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

Удалённый физически объект восстанавливается только из резервной копии. Отменить удаление командой нельзя.

Удаление движений документов и перепроведение

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

Отмена проведения

Самый безопасный путь — отменить проведение. В списке документов выделите строку и выберите команду отмены проведения в меню «Ещё» или на панели. Платформа удалит все движения документа по регистрам накопления, сведений (подчинённым регистратору) и бухгалтерии. Документ останется в базе непроведённым.

Ручная корректировка движений

В Бухгалтерии 3.0 у многих документов на вкладке проводок есть флажок «Ручная корректировка». Поставили флажок — можно удалять и править отдельные проводки и записи регистров вручную. Такой документ при групповом перепроведении не перезаполняет движения, пока флажок не снят. Через год об этом все забывают, поэтому ручные правки лучше фиксировать в комментарии документа.

Перепроведение после удаления движений

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

ДействиеЧто удаляетсяКогда применять
Отмена проведенияВсе движения документаДокумент проведён ошибочно, но нужен в базе
Пометка на удалениеДвижения сразу, сам документ — позжеДокумент не нужен совсем
Ручная корректировкаОтдельные проводкиНужно поправить одну-две записи, а не весь документ
Запись пустого набора кодомДвижения по одному региструРемонт данных администратором

Очистка регистрации изменений в планах обмена

Когда настроен обмен (РИБ, синхронизация Бухгалтерии с УТ или с сайтом), каждое изменение объекта регистрируется для узла-получателя. Если обмен давно не работал или узел удалён, таблицы регистрации раздуваются до миллионов строк. Записи висят в базе, а каждая выгрузка пытается отправить всё накопленное.

Через форму синхронизации

В типовых конфигурациях откройте Администрирование → Синхронизация данных, выберите настройку обмена. В меню «Ещё» есть команда просмотра состава отправляемых данных. В ней видно, сколько объектов каждого типа ждёт отправки, и можно отменить регистрацию выбранных.

Кодом во внешней обработке

Для ремонта используют метод менеджера планов обмена. Пример снимает регистрацию всех изменений для одного узла:

// Узел — ссылка на узел плана обмена, например найденный по коду
Узел = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерия.НайтиПоКоду("УТ");
Если Не Узел.Пустая() Тогда
    ПланыОбмена.УдалитьРегистрациюИзменений(Узел);
КонецЕсли;

Имя плана обмена и код узла замените на свои: посмотреть их можно в Конфигураторе в ветке «Планы обмена». Вторым параметром метод принимает объект или объект метаданных, если нужно снять регистрацию только для одного типа данных.

Снятая регистрация означает, что изменения не уйдут в другую базу. Если узел живой, после такой очистки базы разойдутся, и понадобится полная выгрузка или сверка. Узел удалённой базы безопаснее пометить на удаление целиком — регистрация по нему тоже уйдёт.

Чистка истории: журнал регистрации, версии объектов, сжатие базы

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

Журнал регистрации

Журнал хранится в каталоге базы, в папке 1Cv8Log. Сокращают его в Конфигураторе: Администрирование → Журнал регистрации, далее команда сокращения журнала. Укажите дату — события раньше неё удалятся, а при желании сохранятся в отдельный файл.

В клиент-серверной базе журнал лежит на сервере 1С в каталоге базы внутри srvinfo. Вручную файлы в этом каталоге не удаляйте при работающей службе: сеансы пользователей оборвутся с ошибками записи журнала.

История версий объектов

В конфигурациях на БСП бывает включено хранение версий объектов — каждая запись документа сохраняет копию. Настройка находится в Администрирование → Общие настройки, в группе истории изменений. Там же задают срок хранения устаревших версий, а очистку выполняет регламентное задание. Название флажков зависит от версии БСП: в старых релизах это «версионирование объектов», в новых — «история изменений».

Сжатие после массового удаления

После удаления тысяч объектов файл файловой базы 1Cv8.1CD не уменьшается: место просто помечается свободным. Чтобы вернуть его, в Конфигураторе запустите Администрирование → Тестирование и исправление с флажком сжатия таблиц информационной базы. Для этой операции нужен монопольный доступ — все пользователи должны выйти. Для клиент-серверной базы место возвращают средствами СУБД (сжатие и переиндексация в MS SQL или PostgreSQL), это задача администратора сервера.

Перед массовым удалением
Выполнено: 0 / 6

Удаление через код, консоль запросов и SQL

Консоль запросов только находит

Язык запросов 1С — только для чтения: в нём нет команд DELETE или UPDATE. Консоль запросов полезна, чтобы найти объекты по условию: все номенклатурные позиции без движений за три года, все контрагенты без ИНН. Результат затем обрабатывают кодом.

Программная пометка и удаление

Во внешней обработке у объекта есть два метода:

  • 🟢 УстановитьПометкуУдаления(Истина) — ставит пометку. Дальше работает обычная обработка удаления с контролем ссылок. Это правильный путь.
  • 🔴 Удалить() — стирает объект сразу, без проверки ссылок. Все документы, ссылавшиеся на него, получат <Объект не найден>.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Номенклатура.Ссылка КАК Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    НЕ Номенклатура.ПометкаУдаления
|    И Номенклатура.Наименование ПОДОБНО ""%тест%""";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.Ссылка.ПолучитьОбъект();
    Объект.УстановитьПометкуУдаления(Истина);
КонецЦикла;

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

Движения одного регистра у документа удаляют записью пустого набора:

Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ДокументСсылка);
Набор.Записать(); // пустой набор заменяет все записи регистратора

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

Таблицы 1С в СУБД называются обезличенно: _Reference45, _Document112, _AccumRg830. Соответствие имён объектам конфигурации возвращает функция ПолучитьСтруктуруХраненияБазыДанных(). Технически строку можно стереть командой DELETE, но платформа об этом не узнает:

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

Прямое удаление в SQL — только на копии базы и только если других вариантов нет. После него обязательны тестирование и исправление в Конфигураторе и пересчёт итогов.

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

Почему нет команды «Удалить» — только пометка?
У пользователя нет права интерактивного удаления. В типовых ролях его не выдают специально, чтобы удаление шло через контроль ссылок. Обычно хватает пометки и обработки удаления помеченных.
Можно ли удалить элемент справочника, если по нему есть документы?
Обычной обработкой — нет, она покажет мешающие ссылки. Сначала замените ссылки на другой элемент или удалите сами документы.
Как восстановить удалённый документ?
Только из резервной копии. Разверните копию в отдельную базу и перенесите документ выгрузкой XML или вручную.
Удаляются ли записи регистра сведений при удалении документа?
Да, если регистр подчинён регистратору: его записи удаляются вместе с движениями. Записи независимого регистра сведений остаются и удаляются отдельно в его списке.
Кто может удалять помеченные объекты?
В типовых конфигурациях — пользователь с полными правами или с отдельным правом на удаление помеченных объектов, которое настраивают в профилях групп доступа.