Удаление данных в базе 1С 8.3: от пометки до очистки служебных таблиц
Содержание
Элементы справочников и документы в 1С 8.3 удаляют в два шага. Сначала объект помечают на удаление клавишей Del или командой «Пометить на удаление» в списке. Потом администратор запускает обработку Администрирование → Обслуживание → Удаление помеченных объектов, и программа стирает из базы только то, на что больше никто не ссылается.
Типичная ситуация: бухгалтер завёл три карточки одного контрагента, а кладовщик провёл по каждой поступление. Нажать Del на «лишней» карточке можно, но физически она не удалится, пока документы ссылаются на неё. Удалять элементы в 1С без битых ссылок помогает одно правило: сначала пометка, потом проверка ссылок, и только затем физическое удаление. Оно работает для справочников и документов, а для регистров, таблиц обмена и истории есть свои приёмы.
Как устроено удаление объектов в 1С
Платформа различает объекты ссылочных типов и записи регистров. От этого зависит, есть ли промежуточная пометка.
| Что удаляем | Есть пометка на удаление | Как удаляется физически |
|---|---|---|
| Элемент или группа справочника | Да | Обработкой удаления помеченных |
| Документ | Да | Обработкой удаления помеченных |
| План видов характеристик, план счетов, бизнес-процесс, задача | Да | Обработкой удаления помеченных |
| Запись независимого регистра сведений | Нет | Сразу, по Del в списке |
| Движения регистров накопления и бухгалтерии | Нет | Вместе с отменой проведения документа-регистратора |
| Запись регистрации изменений в плане обмена | Нет | Из формы состава изменений или кодом |
Зачем нужна пометка? Объекты связаны ссылками. Если стереть контрагента сразу, в поступлениях, счетах-фактурах и проводках вместо него появится <Объект не найден>. Пометка — это отложенное решение: обработка удаления сначала проверяет все ссылки и только потом стирает.
Помеченный объект никуда не исчезает. Он остаётся в списке с перечёркнутой иконкой, его можно открыть и снять пометку повторным нажатием Del.
Пометка на удаление: справочники, документы, группы
Как поставить и снять пометку
- Откройте список справочника или журнал документов .
- Выделите строку. Для нескольких строк держите
CtrlилиShift. - Нажмите
Delили выберите в меню «Ещё» команду пометки на удаление. - Подтвердите вопрос программы.
Снимают пометку так же: повторный Del на помеченной строке, и программа спросит, снять ли пометку.
Что происходит с документом
Проведённый документ при пометке на удаление автоматически теряет проведение. Его движения по регистрам и проводки удаляются в тот же момент, не дожидаясь физического удаления. Для учёта это уже изменение: остатки, взаиморасчёты и НДС пересчитаются так, будто документа нет.
Пометка проведённого документа в закрытом периоде меняет отчётность. Если месяц уже закрыт, после пометки понадобится повторное закрытие месяца , а при сданной декларации — уточнённая.
Группы справочника
Когда помечаете группу, платформа помечает и все вложенные элементы и подгруппы. Если внутри есть элементы, которые нужно сохранить, сначала перенесите их в другую группу — перетаскиванием мышью или изменением поля «Родитель» в карточке.
Как найти все помеченные объекты
- 🔍 В списке справочника или документа настройте отбор по полю «Пометка удаления».
- 📋 Обработка удаления помеченных сама собирает полный перечень по всей базе — по нему удобнее всего проверять, что будет стёрто.
Физическое удаление помеченных объектов
Через раздел «Администрирование»
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) путь одинаковый: Администрирование → Обслуживание → Удаление помеченных объектов. В БП 3.0 ссылка лежит в группе «Корректировка данных».
- Сделайте резервную копию базы
: выгрузку
.dtчерез Конфигуратор или копию средствами СУБД. - Откройте обработку удаления помеченных объектов.
- Выберите режим: удалить всё помеченное автоматически или выборочно.
- В выборочном режиме отметьте флажками объекты, которые действительно нужно стереть.
- Запустите удаление и дождитесь окончания проверки ссылок.
- Изучите итог: что удалено и что осталось.
Удобнее запускать вечером или в выходной. Проверка ссылок на базе в десятки гигабайт идёт долго, а пользователи в это время продолжают создавать новые ссылки.
Почему объект не удаляется
После проверки обработка показывает объекты, которым мешают ссылки, и сами ссылающиеся объекты. Варианты действий:
- ✅ Ссылка из такого же помеченного объекта — удалятся оба, если отметить оба.
- 🔁 Ссылка из рабочего документа — замените ссылку на правильный элемент. Для дублей контрагентов и номенклатуры в БСП есть обработка поиска и удаления дублей в том же разделе
Администрирование → Обслуживание: она переносит ссылки на оригинал и помечает дубль. - ❌ Ссылка из документа, который тоже не нужен, — пометьте документ и повторите удаление.
Стандартная обработка платформы
В конфигурациях без БСП или при сбое обработки конфигурации есть встроенный вариант. Включите в параметрах (меню с шестерёнкой → «Параметры») флажок «Отображать команду «Все функции»». Затем откройте Все функции → Стандартные → Удаление помеченных объектов. Логика та же: поиск, контроль ссылок, удаление.
Удаление по расписанию
В новых версиях БСП в форме удаления помеченных можно включить автоматическое удаление по расписанию. Удобно для баз, где пометки копятся сотнями, но включайте это только если пользователи понимают: пометка через неделю станет безвозвратной.
Удалённый физически объект восстанавливается только из резервной копии. Отменить удаление командой нельзя.
Удаление движений документов и перепроведение
Иногда нужно убрать не сам документ, а его движения: документ провели по ошибке или его записи в регистрах испорчены.
Отмена проведения
Самый безопасный путь — отменить проведение. В списке документов выделите строку и выберите команду отмены проведения в меню «Ещё» или на панели. Платформа удалит все движения документа по регистрам накопления, сведений (подчинённым регистратору) и бухгалтерии. Документ останется в базе непроведённым.
Ручная корректировка движений
В Бухгалтерии 3.0 у многих документов на вкладке проводок есть флажок «Ручная корректировка». Поставили флажок — можно удалять и править отдельные проводки и записи регистров вручную. Такой документ при групповом перепроведении не перезаполняет движения, пока флажок не снят. Через год об этом все забывают, поэтому ручные правки лучше фиксировать в комментарии документа.
Перепроведение после удаления движений
После массовой отмены проведения или удаления документов последовательность учёта нарушается. Восстанавливают её групповым перепроведением: в БП 3.0 обработка находится в разделе Операции, рядом с закрытием месяца. Укажите период, при необходимости — виды документов, и запустите.
| Действие | Что удаляется | Когда применять |
|---|---|---|
| Отмена проведения | Все движения документа | Документ проведён ошибочно, но нужен в базе |
| Пометка на удаление | Движения сразу, сам документ — позже | Документ не нужен совсем |
| Ручная корректировка | Отдельные проводки | Нужно поправить одну-две записи, а не весь документ |
| Запись пустого набора кодом | Движения по одному регистру | Ремонт данных администратором |
Очистка регистрации изменений в планах обмена
Когда настроен обмен (РИБ, синхронизация Бухгалтерии с УТ или с сайтом), каждое изменение объекта регистрируется для узла-получателя. Если обмен давно не работал или узел удалён, таблицы регистрации раздуваются до миллионов строк. Записи висят в базе, а каждая выгрузка пытается отправить всё накопленное.
Через форму синхронизации
В типовых конфигурациях откройте Администрирование → Синхронизация данных, выберите настройку обмена. В меню «Ещё» есть команда просмотра состава отправляемых данных. В ней видно, сколько объектов каждого типа ждёт отправки, и можно отменить регистрацию выбранных.
Кодом во внешней обработке
Для ремонта используют метод менеджера планов обмена. Пример снимает регистрацию всех изменений для одного узла:
// Узел — ссылка на узел плана обмена, например найденный по коду
Узел = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерия.НайтиПоКоду("УТ");
Если Не Узел.Пустая() Тогда
ПланыОбмена.УдалитьРегистрациюИзменений(Узел);
КонецЕсли;
Имя плана обмена и код узла замените на свои: посмотреть их можно в Конфигураторе в ветке «Планы обмена». Вторым параметром метод принимает объект или объект метаданных, если нужно снять регистрацию только для одного типа данных.
Снятая регистрация означает, что изменения не уйдут в другую базу. Если узел живой, после такой очистки базы разойдутся, и понадобится полная выгрузка или сверка. Узел удалённой базы безопаснее пометить на удаление целиком — регистрация по нему тоже уйдёт.
Чистка истории: журнал регистрации, версии объектов, сжатие базы
«Удалить элементы» часто значит освободить место. Помимо учётных данных база копит служебную историю, и её чистят отдельно.
Журнал регистрации
Журнал хранится в каталоге базы, в папке 1Cv8Log. Сокращают его в Конфигураторе: Администрирование → Журнал регистрации, далее команда сокращения журнала. Укажите дату — события раньше неё удалятся, а при желании сохранятся в отдельный файл.
В клиент-серверной базе журнал лежит на сервере 1С в каталоге базы внутри srvinfo. Вручную файлы в этом каталоге не удаляйте при работающей службе: сеансы пользователей оборвутся с ошибками записи журнала.
История версий объектов
В конфигурациях на БСП бывает включено хранение версий объектов — каждая запись документа сохраняет копию. Настройка находится в Администрирование → Общие настройки, в группе истории изменений. Там же задают срок хранения устаревших версий, а очистку выполняет регламентное задание. Название флажков зависит от версии БСП: в старых релизах это «версионирование объектов», в новых — «история изменений».
Сжатие после массового удаления
После удаления тысяч объектов файл файловой базы 1Cv8.1CD не уменьшается: место просто помечается свободным. Чтобы вернуть его, в Конфигураторе запустите Администрирование → Тестирование и исправление с флажком сжатия таблиц информационной базы. Для этой операции нужен монопольный доступ — все пользователи должны выйти. Для клиент-серверной базы место возвращают средствами СУБД (сжатие и переиндексация в MS SQL или PostgreSQL), это задача администратора сервера.
Удаление через код, консоль запросов и SQL
Консоль запросов только находит
Язык запросов 1С — только для чтения: в нём нет команд DELETE или UPDATE. Консоль запросов полезна, чтобы найти объекты по условию: все номенклатурные позиции без движений за три года, все контрагенты без ИНН. Результат затем обрабатывают кодом.
Программная пометка и удаление
Во внешней обработке у объекта есть два метода:
- 🟢
УстановитьПометкуУдаления(Истина)— ставит пометку. Дальше работает обычная обработка удаления с контролем ссылок. Это правильный путь. - 🔴
Удалить()— стирает объект сразу, без проверки ссылок. Все документы, ссылавшиеся на него, получат<Объект не найден>.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления
| И Номенклатура.Наименование ПОДОБНО ""%тест%""";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.УстановитьПометкуУдаления(Истина);
КонецЦикла;
Пример помечает на удаление номенклатуру, в наименовании которой есть слово «тест». Условие отбора поменяйте под свою задачу и сначала запустите запрос отдельно, чтобы увидеть, сколько строк попадёт под пометку.
Движения одного регистра у документа удаляют записью пустого набора:
Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ДокументСсылка);
Набор.Записать(); // пустой набор заменяет все записи регистратора
Почему не стоит удалять через SQL
Таблицы 1С в СУБД называются обезличенно: _Reference45, _Document112, _AccumRg830. Соответствие имён объектам конфигурации возвращает функция ПолучитьСтруктуруХраненияБазыДанных(). Технически строку можно стереть командой DELETE, но платформа об этом не узнает:
- ❌ останутся записи в табличных частях, регистрах и таблицах итогов;
- ❌ не сработают обработчики конфигурации и регистрация изменений для обмена;
- ❌ поддержка конфигурации и фирма-партнёр откажутся разбирать такую базу.
Прямое удаление в SQL — только на копии базы и только если других вариантов нет. После него обязательны тестирование и исправление в Конфигураторе и пересчёт итогов.