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

В этой статье мы разберем все актуальные способы физического удаления помеченных объектов — от ручных методов до автоматизированных обработок, включая нюансы для разных конфигураций (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП и др.). Особое внимание уделим скрытым рискам, о которых не предупреждают даже опытные администраторы, и дадим чек-лист для безопасной очистки.

Почему помеченные объекты не удаляются сразу?

Механизм пометки на удаление в 1С:Предприятие — это защита от случайных потерь данных. Когда вы нажимаете «Удалить» в интерфейсе программы, система не стирает объект физически, а лишь ставит метку ПометкаУдаления = Истина. Это позволяет:

  • 🔄 Восстановить объект, если удаление было ошибочным (через журнал документов или обработку)
  • 🔗 Сохранить ссылочную целостность: другие объекты (документы, справочники) продолжают «видеть» помеченный элемент
  • 📊 Формировать отчеты с учетом исторических данных (например, в 1С:ЗУП для расчета среднего заработка)

Однако со временем таких «мусорных» объектов накапливается тысячи. Они:

  • 🐢 Замедляют работу базы (особенно при полнотекстовом поиске)
  • 💾 Увеличивают размер файла 1Cv8.1CD (иногда на десятки гигабайт)
  • 🔍 Усложняют аудит — в отчетах появляются «мертвые» записи
⚠️ Внимание: В конфигурациях с версионированием данных (например, 1С:ERP) физическое удаление может нарушить историю изменений. Перед очисткой проверьте настройки хранения версий в Администрирование → Поддержка и обслуживание.

Способ 1: Стандартная обработка «Удаление помеченных объектов»

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

  1. Откройте меню Все функции (если его нет — включите в настройках интерфейса).
  2. Перейдите в раздел Обработки или Сервис.
  3. Выберите Удаление помеченных объектов (в некоторых версиях — Очистка базы данных).

В открывшемся окне:

  • 📅 Укажите период (если нужно удалить объекты, помеченные до определенной даты)
  • 📋 Выберите типы объектов (документы, справочники, регистры и т.д.)
  • 🔍 При необходимости используйте расширенный отбор (например, только по конкретному справочнику)
  • 🚀 Нажмите Выполнить и дождитесь завершения операции

Создайте резервную копию базы|Закройте все сеансы пользователей|Проверьте права доступа (требуется роль "Администратор")|Отключите регламентные задания|Убедитесь, что достаточно места на диске-->

Преимущества метода:

  • Безопасность: обработка учитывает ссылочную целостность
  • Логирование: ведется протокол удаленных объектов
  • Гибкость: можно выбрать конкретные типы данных
⚠️ Внимание: В 1С:УТ 11 и 1С:КА 2 стандартная обработка не удаляет помеченные элементы планов обмена. Для них требуется отдельная процедура через Администрирование → Обмен данными.

Способ 2: Ручное удаление через консоль запросов

Для опытных пользователей и администраторов доступен метод удаления через язык запросов 1С. Он полезен, когда стандартная обработка не справляется (например, при ошибках блокировки объектов). Основной запрос:

ВЫБРАТЬ

Ссылка КАК Объект

ИЗ

РегистрСведений.ПометкиУдаления КАК Пометки

ГДЕ

Пометки.ПометкаУдаления = ИСТИНА

И НЕ Пометки.ЭтоГруппа

Однако непосредственное удаление требует аккуратности. Полный скрипт для очистки справочника Номенклатура:

// 1. Получаем список помеченных элементов

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Ссылка КАК Ссылка

|ИЗ

| Справочник.Номенклатура КАК Номенклатура

|ГДЕ

| Номенклатура.ПометкаУдаления = ИСТИНА";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

// 2. Удаляем физически

Пока Выборка.Следующий() Цикл

Объект = Выборка.Ссылка.ПолучитьОбъект();

Объект.Удалить();

КонецЦикла;

Критические нюансы:

  • 🔒 Блокировки: перед выполнением закройте все сеансы пользователей
  • 📈 Производительность: при большом количестве объектов (>10 000) используйте ПакетныеЗапросы
  • 🛡️ Транзакции: оберните код в НачатьТранзакцию()/ЗафиксироватьТранзакцию()
💡

Перед массовым удалением через запрос выполните тестовый прогон на копии базы. Используйте конструкцию ОТЛАДКА, чтобы увидеть, какие именно объекты будут затронуты: добавьте строку Сообщить(Объект.Наименование); в цикл обработки.

Способ 3: Регламентное задание для автоматической очистки

Для регулярного удаления помеченных объектов (например, еженедельно) удобно настроить регламентное задание. Это избавит от рутинных операций и снизит риск забыть про очистку. Алгоритм настройки:

  1. Перейдите в Администрирование → Регламентные задания.
  2. Создайте новое задание с типом Очистка базы данных.
  3. Укажите расписание (рекомендуемое время — ночь, когда нет пользователей).
  4. В параметрах задания выберите:
    • 🗓️ Период удаления (например, «помеченные более 30 дней назад»)
    • 📄 Типы объектов (документы, справочники и т.д.)
    • 🔄 Режим выполнения (Автоматически или По требованию)

Преимущества метода:

Параметр Ручная очистка Регламентное задание
Частота выполнения По запросу Автоматически по расписанию
Риск ошибок Высокий (человеческий фактор) Низкий (стандартный алгоритм)
Нагрузка на сервер Пиковая (в рабочее время) Распределенная (ночью)
Логирование Ручное Автоматическое (журнал регламентных заданий)
⚠️ Внимание: В 1С:БП 3.0 регламентное задание очистки по умолчанию не удаляет помеченные элементы справочника «Контрагенты», если по ним есть движения в регистрах расчетов. Для полной очистки требуется дополнительная настройка параметров задания.

Никогда не очищаю|Раз в полгода|Раз в квартал|Ежемесячно|По мере необходимости-->

Способ 4: Утилита chdbfl.exe для физической очистки

Для глубокой очистки файловой базы (например, после массового удаления или переноса данных) используется утилита chdbfl.exe, входящая в комплект поставки 1С:Предприятие. Она позволяет:

  • 🧹 Удалить физически помеченные объекты (включая «мертвые» ссылки)
  • 🔧 Перестроить индексы для ускорения работы
  • 📉 Сжать базу, уменьшив размер файла .1CD

Порядок действий:

  1. Закройте все сеансы (включая фоновые процессы).
  2. Откройте командную строку от имени администратора.
  3. Перейдите в папку с утилитой (обычно C:\Program Files\1cv8\8.3.x.xxx\bin).
  4. Выполните команду:
    chdbfl.exe -ibname "Путь\к\базе.1CD" -rebuild -compact

    где:

    • -ibname — путь к файлу базы
    • -rebuild — перестроение индексов
    • -compact — сжатие базы

Важные предупреждения:

  • 🚨 Не прерывайте процесс — это может повредить базу
  • Время выполнения зависит от размера базы (для 50 ГБ — до 2-3 часов)
  • 🔐 Требуются права на папку с базой
Что делать, если chdbfl.exe выдает ошибку "Файл занят"?

1. Проверьте в Диспетчере задач процессы 1cv8.exe, 1cv8s.exe, ragent.exe и завершите их.

2. Отключите службу Агент сервера 1С:Предприятия (если используется).

3. Убедитесь, что база не открыта в Конфигураторе в фоновом режиме.

4. Для сетевых баз проверьте подключения по протоколу TCP/IP через netstat -ano.

Способ 5: Очистка через Конфигуратор (для администраторов)

В режиме Конфигуратора доступны расширенные инструменты для работы с помеченными объектами. Этот метод подходит для:

  • 🛠️ Исправления ошибок после некорректного удаления
  • 🔍 Анализа ссылочной целостности перед массовой очисткой
  • 📂 Очистки служебных объектов (например, временных таблиц)

Пошаговая инструкция:

  1. Откройте базу в Конфигураторе (с правами администратора).
  2. Перейдите в меню Администрирование → Тестирование и исправление.
  3. Включите флаги:
    • 🔲 Проверять логическую целостность
    • 🔲 Проверять ссылочную целостность
    • 🔲 Реструктурировать таблицы базы данных
  • Нажмите Выполнить и дождитесь окончания процесса.
  • После тестирования вернитесь в Администрирование → Удаление помеченных объектов и запустите очистку.
  • Особенности метода:

    • 🔧 Исправляет битые ссылки, которые могут блокировать стандартное удаление
    • 📊 Генерирует отчет о найденных ошибках (сохраните его для анализа)
    • ⚠️ Может занять много времени на больших базах (рекомендуем выполнять на выделенном сервере)
    💡

    Тестирование и исправление в Конфигураторе — единственный способ безопасно удалить помеченные объекты, если стандартная обработка выдает ошибку "Нарушение ссылочной целостности".

    Риски и как их избежать

    Неправильная очистка базы может привести к критическим последствиям:

    • 💥 Потеря данных: удаление объектов, на которые есть активные ссылки
    • 🔄 Нарушение проводок: в бухгалтерских конфигурациях это ведет к расхождению итогов
    • 🚫 Блокировка базы: при прерывании процесса очистки

    Чек-лист для безопасной очистки:

    Создайте полную резервную копию базы (не только архив, но и выгрузку данных)|Проверьте, что нет активных сеансов пользователей (включая фоновые процессы)|Запустите тестовое удаление на копии базы|Используйте транзакции для массовых операций|Сохраните лог удаленных объектов (для возможного восстановления)|Проверьте отчеты после очистки (особенно оборотно-сальдовую ведомость)|Обновите статистику запросов (ДБФ → Сервис → Обновить статистику)-->

    Типичные ошибки и их решения:

    Ошибка Причина Решение
    Нарушение ссылочной целостности Есть активные ссылки на помеченный объект Используйте Тестирование и исправление в Конфигураторе
    Объект заблокирован Объект используется в другом сеансе Закройте все сеансы или используйте ПакетныеЗапросы
    Недостаточно прав У пользователя нет роли Администратор Запустите очистку от имени администратора или назначьте роль
    Превышен тайм-аут Слишком много объектов для однократной обработки Разбейте очистку на части по типам объектов или периодам

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

    Можно ли восстановить объект после физического удаления?

    Нет, после физического удаления (через chdbfl.exe или прямые запросы) восстановление невозможно. Единственный способ — восстановить базу из резервной копии, сделанной до очистки. Именно поэтому критично важно:

    • Создавать бэкапы перед массовыми операциями
    • Использовать тестовые копии для проверки скриптов
    • Ведите журнал удаленных объектов (в стандартной обработке он формируется автоматически)
    Почему после очистки размер базы не уменьшился?

    Это нормальная ситуация. Причины:

    • Фрагментация данных: удаленные объекты оставляют «дыры» в файле .1CD, которые не сжимаются автоматически.
    • Служебные таблицы: хранит метаданные, индексы и временные таблицы, которые не очищаются при удалении объектов.
    • Неполная очистка: могли остаться помеченные объекты в регистрах сведений или планах обмена.

    Решение: выполните chdbfl.exe -ibname "путь" -compact для физического сжатия базы.

    Как удалить помеченные объекты в облачной версии 1С (1С:Fresh)?

    В 1С:Fresh прямой доступ к файловой базе и утилитам вроде chdbfl.exe отсутствует. Варианты:

    1. Стандартная обработка: доступна через веб-интерфейс в разделе Администрирование.
    2. Техническая поддержка: создайте заявку на очистку — специалисты 1С выполнят ее в фоновом режиме.
    3. Выгрузка/загрузка: для критичных случаев можно выгрузить данные в DT, очистить локально и загрузить обратно.
    ⚠️ Внимание: В 1С:Fresh некоторые объекты (например, истории изменений) нельзя удалить физически — они архивируются на серверах 1С.
    Какие объекты нельзя удалять физически?

    Даже если объект помечен на удаление, его нельзя стирать физически, если:

    • Он используется в регламентированной отчетности (например, документы для налоговой).
    • На него есть активные ссылки в регистрах накопления или расчетов.
    • Он принадлежит плану обмена и еще не синхронизирован с другими базами.
    • Это элемент справочника, по которому ведется аналитика (например, номенклатура в оборотках).

    Для проверки используйте запрос:

    ВЫБРАТЬ
    

    Ссылка.Представление КАК Объект,

    ВЫРАЗИТЬ(СУММА(Количество) КАК СТРОКА) КАК СсылкиНаНего

    ИЗ

    РегистрСведений.СсылкиОбъектов КАК Ссылка

    ГДЕ

    Ссылка.ОбъектСсылка = &ВашаСсылка

    СГРУППИРОВАТЬ ПО

    Ссылка.Представление

    Как ускорить процесс очистки большой базы?

    Для баз размером >20 ГБ:

    • 📅 Разбейте очистку по периодам: удаляйте объекты, помеченные более года/полугода назад.
    • 📂 Очищайте по типам: сначала справочники, затем документы, потом регистры.
    • ⏱️ Используйте пакетный режим:
      Запрос.ПакетныйРежим = Истина;
    • 🖥️ Выполняйте на сервере: локальная машина может не справиться с нагрузкой.