Чистка базы от помеченных объектов: обработка, расписание, код и проверка после

· 10 мин

Содержание

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

Пометка удаления сама по себе ничего не стирает: документ или элемент справочника остаётся в базе, просто перечёркнут красным крестом. Физически запись исчезает только после запуска обработки. Это защита от потери данных: пока на объект ссылается хоть один документ, база его не отдаст.

Что даёт пометка и зачем чистить базу

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

Помеченные объекты со временем копятся. Причины чистить их регулярно:

  • 🗂 Мусор в выборе. Помеченные элементы справочников попадают в списки и поиск, пользователи путают «Иванов ИП» живой и удалённый.
  • 📈 Размер базы. Тысячи брошенных черновиков и дублей занимают место и замедляют выгрузку, резервное копирование и обновление.
  • 🔍 Путаница в отчётах. Отчёты не учитывают непроведённые документы, но в журналах и списках они висят и сбивают с толку.
  • 🔁 Обмены. Помеченные объекты могут уходить в обмены с другими базами и тащить за собой лишнее.

Удаление необратимо. Корзины в 1С нет: объект, удалённый обработкой, вернуть можно только из резервной копии.

Резервная копия перед удалением помеченных

Перед удалением сделайте резервную копию базы . Это единственный способ откатить ошибку, если обработка снесёт то, что кто-то пометил случайно.

Варианты копии:

СпособГде делаетсяКогда подходит
Выгрузка в .dtКонфигуратор → Администрирование → Выгрузить информационную базуЛюбая база, универсальный вариант
Копия каталогаПроводник: папка с файлом 1Cv8.1CDФайловая база, все пользователи вышли
Резервная копия СУБДСредства MS SQL или PostgreSQLКлиент-серверная база
Встроенная копияАдминистрирование → Обслуживание → Резервное копирование и восстановлениеФайловая база в типовых конфигурациях

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

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

Как удалить помеченные на удаление объекты в 1С 8.3 штатной обработкой

Шаг 1. Откройте обработку

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) обработка открывается из раздела администрирования. Точный путь по конфигурациям — в следующем разделе.

Альтернативный путь, общий для платформы: Главное меню → Все функции → Стандартные → Удаление помеченных объектов. Если пункта «Все функции» нет, включите его: Главное меню → Сервис и настройки → Параметры, флажок «Отображать команду “Все функции”».

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

Шаг 2. Выберите режим

Обработка предлагает два варианта:

  1. Автоматическое удаление всех помеченных. Программа сама найдёт все объекты с пометкой и удалит те, на которые нет ссылок. Подходит для регулярной чистки.
  2. Выборочное удаление. Сначала строится дерево помеченных объектов по типам: справочники, документы, планы видов характеристик. Вы снимаете галочки с того, что трогать не надо, и удаляете остальное.

Выборочный режим полезен, когда вы не уверены во всех пометках. Например, можно удалить только старые документы «Счёт на оплату», не трогая справочник номенклатуры.

Шаг 3. Запустите и дождитесь проверки

После нажатия кнопки удаления обработка для каждого объекта ищет ссылки во всей базе. В небольшой базе это минуты. В базе на десятки гигабайт с тысячами помеченных объектов поиск может идти часы.

Монопольный режим для штатной обработки не обязателен, пользователи могут работать. Но проверка ссылок нагружает сервер, а объекты, которые кто-то держит открытыми, удалить не получится. Большую чистку запускайте вечером или в выходной.

Шаг 4. Разберите то, что не удалилось

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

Как поступить с неудалённым объектом:

  • ✅ Ссылается тоже мусор. Пометьте на удаление ссылающийся документ и запустите обработку повторно. Объекты, которые ссылаются только друг на друга и оба помечены, обработка обычно удаляет за один проход.
  • 🔄 Ссылается живой документ. Откройте его и замените значение реквизита на правильное. Например, в реализации стоит помеченный контрагент-дубль — выберите основного контрагента.
  • 🧩 Дубли справочника. Если ссылок сотни, менять вручную долго. В типовых конфигурациях есть обработка «Поиск и удаление дублей»: она заменяет ссылки на дубль ссылками на оригинал во всех документах сразу.
  • ↩️ Пометка лишняя. Если объект нужен, снимите с него пометку той же клавишей Delete в списке.
Диагностика: выберите симптом

Где найти удаление помеченных в разных конфигурациях

Обработка одна и та же, отличаются только названия разделов.

КонфигурацияПуть к обработке
Бухгалтерия предприятия 3.0Администрирование → Обслуживание → Удаление помеченных объектов
ЗУП 3.1Администрирование → Обслуживание → Удаление помеченных объектов
Управление торговлей 11НСИ и администрирование → Администрирование → Обслуживание → Удаление помеченных объектов
Любая конфигурацияГлавное меню → Все функции → Стандартные → Удаление помеченных объектов

В разделе «Обслуживание» команда находится в группе «Корректировка данных». Если группа свёрнута, разверните её щелчком по заголовку.

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

Удаление помеченных по расписанию и программным кодом

Регламентное задание

В конфигурациях на БСП удаление можно поручить регламентному заданию «Удаление помеченных объектов». Включение и расписание настраиваются в форме самой обработки или через Администрирование → Обслуживание → Регламентные и фоновые задания.

Ставьте расписание на ночь, например на 02:00 по воскресеньям. В клиент-серверной базе задание выполняется на сервере 1С, в файловой — только когда открыт хотя бы один сеанс и запуск регламентных заданий в нём разрешён.

Автоматическое удаление по расписанию означает, что любая случайная пометка исчезнет без подтверждения. Включайте его, только если пользователи привыкли к тому, что Delete — это «скоро удалится навсегда», и резервные копии делаются регулярно.

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

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

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

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Док.Ссылка КАК Ссылка
    |ИЗ
    |    Документ.СчетНаОплатуПокупателю КАК Док
    |ГДЕ
    |    Док.ПометкаУдаления";

    Кандидаты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
    Если Кандидаты.Количество() = 0 Тогда
        Сообщить("Помеченных документов нет");
        Возврат;
    КонецЕсли;

    // Таблица со ссылками на кандидатов из любых данных базы
    НайденныеСсылки = НайтиПоСсылкам(Кандидаты);
    Занятые = Новый Соответствие;
    Для Каждого Строка Из НайденныеСсылки Цикл
        Если Строка.Ссылка <> Строка.Данные Тогда
            Занятые.Вставить(Строка.Ссылка, Истина);
        КонецЕсли;
    КонецЦикла;

    Удалено = 0;
    Ошибок = 0;
    Для Каждого Ссылка Из Кандидаты Цикл
        Если Занятые[Ссылка] <> Неопределено Тогда
            Продолжить;
        КонецЕсли;
        Попытка
            Ссылка.ПолучитьОбъект().Удалить();
            Удалено = Удалено + 1;
        Исключение
            Ошибок = Ошибок + 1;
        КонецПопытки;
    КонецЦикла;

    Сообщить(СтрШаблон("Удалено: %1. Пропущено из-за ссылок: %2. Ошибок: %3",
        Удалено, Занятые.Количество(), Ошибок));

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

Как это работает:

  1. Запрос выбирает только документы с пометкой удаления.
  2. НайтиПоСсылкам() ищет, где эти документы используются. Строки, где объект ссылается сам на себя, пропускаются.
  3. Метод Удалить() у объекта стирает запись без контроля ссылок. Поэтому проверка из шага 2 обязательна.

Без проверки ссылок код оставит в базе «битые» ссылки — реквизиты, которые указывают на несуществующий объект. В формах они видны как <Объект не найден> с длинным идентификатором.

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

chdbfl.exe и тестирование базы после чистки

Утилиту chdbfl.exe часто называют способом «почистить базу », но помеченные объекты она не удаляет. Это проверка физической целостности файла 1Cv8.1CD файловой базы. Она лежит в каталоге платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\chdbfl.exe (номер версии у вас свой).

Когда она нужна в контексте удаления:

  • 💥 удаление прервалось из-за сбоя, отключения питания или зависания, и база перестала открываться;
  • ⚠️ при чистке появились ошибки чтения файла базы, а не сообщения о ссылках.

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

  1. Закройте все сеансы: файл базы должен быть свободен.
  2. Сделайте копию папки базы.
  3. Запустите chdbfl.exe, укажите путь к 1Cv8.1CD.
  4. Сначала проверьте без флажка «Исправлять обнаруженные ошибки», посмотрите отчёт.
  5. Если ошибки есть — запустите повторно с исправлением.

Для клиент-серверной базы chdbfl.exe не применяется: физическую целостность там проверяют средства СУБД.

Тестирование и исправление в конфигураторе

Логические ошибки проверяет Конфигуратор → Администрирование → Тестирование и исправление. После удаления оно полезно в двух случаях:

  • 🔗 если объекты удаляли кодом и в документах остались ссылки на несуществующие объекты. Для них в настройках есть варианты: создавать объекты-заглушки, очищать ссылки или не изменять;
  • 📦 если нужно уменьшить размер файловой базы.

Второй пункт важен. После удаления файл 1Cv8.1CD не уменьшается сам: место внутри освобождается, но размер на диске тот же. Чтобы его сжать, включите в тестировании флажок «Сжатие таблиц информационной базы» или выгрузите базу в .dt и загрузите обратно.

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

Частые ошибки при чистке помеченных

  • ❌ Удалить, не посмотрев список. Пометку ставят случайно: промахнулись строкой и нажали Delete. Автоматический режим удалит такой документ без вопросов. Перед первой чисткой посмотрите список в выборочном режиме.
  • ❌ Чистить в разгар отчётного периода. Удалённые документы прошлых месяцев меняют обороты, а значит и сданную отчётность. Документы закрытых периодов удаляйте только по согласованию.
  • ❌ Удалять в одной базе обмена. Если база обменивается данными с другой (например, ЗУП с Бухгалтерией), удаление в одной не всегда переносится в другую. Сначала проверьте, какие объекты участвуют в обмене.
  • ❌ Ждать уменьшения файла без сжатия. Размер 1Cv8.1CD после чистки не меняется, пока не сделано сжатие или перезагрузка через .dt.
  • ❌ Удалять кодом без НайтиПоСсылкам. Быстрее, но после этого в базе остаются битые ссылки, которые потом приходится лечить тестированием.

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

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