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

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

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

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

  • 🔄 Возможность восстановления — если пользователь случайно удалил важный документ (например, приказ о приёме на работу), его можно вернуть из архива.
  • 🔗 Целостность связей — система проверяет, не используется ли объект в других документах (например, сотрудник не должен быть удалён, если на него есть не закрытые начисления).
  • 📊 Аудит изменений — в журнале регистрации остаётся запись о том, кто и когда иницировал удаление.

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

  • 🐢 Замедлению работы — увеличению времени выполнения запросов и отчётов.
  • 💾 Росту размера базы — особенно критично для файловых вариантов .
  • 🔍 Загромождению интерфейса — в списках документов отображаются удалённые записи (если не настроена фильтрация).
📊 Как часто вы очищаете базу 1С ЗУП от помеченных объектов?
Никогда не очищал
Раз в год
Раз в квартал
По мере необходимости

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

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

Чтобы запустить обработку:

  1. Откройте 1С ЗУП в режиме 1С:Предприятие (не путать с конфигуратором!).
  2. Перейдите в меню Все функции → Стандартные → Удаление помеченных объектов (путь может незначительно отличаться в зависимости от версии ЗУП).
  3. В открывшемся окне нажмите кнопку Выполнить.
  4. Дождитесь завершения процесса (время зависит от размера базы и количества помеченных объектов).

Обратите внимание на несколько важных нюансов:

  • 🔒 Права доступа — для выполнения операции требуются права администратора или роль с разрешениями на удаление данных.
  • 🛑 Блокировка базы — на время удаления база будет заблокирована для других пользователей.
  • Длительность — в крупных базах процесс может занять от нескольких минут до часов.

Проверить наличие резервной копии базы

Убедиться, что все пользователи вышли из системы

Закрыть фоновые задачи (например, регламентные операции)

Отключить антивирус (может блокировать доступ к файлам базы)-->

⚠️ Внимание: Если в процессе удаления появится ошибка "Объект используется в другом документе", это означает, что помеченный объект имеет активные связи (например, сотрудник привязан к не закрытому больничному листу). В таком случае требуется сначала удалить или закрыть зависимые документы.

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

Если стандартная обработка не справляется с задачей (например, из-за большого количества объектов или ошибок связей), можно воспользоваться конфигуратором. Этот метод требует прав администратора и осторожности, так как неправильные действия могут привести к повреждению базы.

Инструкция по удалению через конфигуратор:

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

    • 🧹 Глубокая очистка — удаляются даже объекты, которые стандартная обработка не видит.
    • 🔧 Исправление ошибок — одновременно проверяется целостность базы.
    Параметр Стандартная обработка Удаление через конфигуратор
    Требуемые права Пользователь с правами на удаление Администратор
    Время выполнения Быстро (минуты) Долго (десятки минут — часы)
    Удаление "зависших" объектов ❌ Нет ✅ Да
    Проверка целостности ❌ Нет ✅ Да
    Риск повреждения базы ❌ Минимальный ⚠️ Средний (при неправильных настройках)
    ⚠️ Внимание: После удаления через конфигуратор рекомендуется выполнить резервное копирование базы и проверить работоспособность ключевых отчётов (например, расчётной ведомости). В редких случаях могут возникать ошибки из-за нарушения связей между объектами, которые не были видны до очистки.

    Способ 3: Программное удаление с помощью запросов

    Для опытных пользователей и разработчиков доступен метод удаления помеченных объектов с помощью языка запросов 1С. Этот способ позволяет гибко настраивать условия удаления и обрабатывать большие объёмы данных.

    Пример запроса для удаления помеченных сотрудников:

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

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

    "ВЫБРАТЬ

    | Сотрудники.Ссылка КАК Ссылка

    |ИЗ

    | Справочник.Сотрудники КАК Сотрудники

    |ГДЕ

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

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

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

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

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

    Если НЕ Объект.Ссылается() Тогда

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

    КонецЕсли;

    КонецЦикла;

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

    • 🎯 Точная фильтрация — можно удалять объекты по конкретным критериям (например, только сотрудников, уволенных до определённой даты).
    • Автоматизация — скрипт можно запускать по расписанию.
    • 📈 Обработка больших объёмов — подходит для баз с десятками тысяч помеченных объектов.

    Однако у этого метода есть и риски:

    • 💥 Ошибки в коде могут привести к удалению нужных данных.
    • 🔄 Нарушение транзакций — при прерывании скрипта база может остаться в неконсистентном состоянии.
    Как проверить, ссылается ли объект на другие данные?

    Метод Объект.Ссылается() возвращает Истина, если объект используется в других документах или справочниках. Например, сотрудник может ссылаться на:

    - Документы "Приём на работу", "Увольнение"

    - Начисления зарплаты

    - Кадровые приказы

    - Графики работы

    Если метод возвращает Ложь, объект можно безопасно удалять.

    Способ 4: Использование внешних обработок

    Для упрощения процесса удаления помеченных объектов можно воспользоваться внешними обработками, разработанными сообществом . Популярные решения:

    • 📄 "Универсальное удаление помеченных объектов" — позволяет гибко настраивать фильтры и обрабатывать большие объёмы данных.
    • 🔍 "Поиск и удаление битых ссылок" — находит объекты с нарушенными связями, которые часто мешают стандартному удалению.
    • 📊 "Анализ помеченных объектов" — формирует отчёт о том, какие объекты можно безопасно удалить, а какие требуют проверки.

    Где взять внешние обработки:

    • 🌐 Официальный портал 1С — раздел "Решения партнёров".
    • 💼 Форумы и сообщества — например, Infostart или 1С:Клуб программистов.
    • 📧 Техническая поддержка 1С — может предоставить обработки под конкретную версию ЗУП.

Прежде чем использовать внешнюю обработку:

  1. Проверьте её совместимость с вашей версией 1С ЗУП.
  2. Изучите отзывы других пользователей.
  3. Протестируйте на копии рабочей базы.
💡

Перед использованием внешней обработки откройте её код в конфигураторе (меню Файл → Открыть) и проверьте на наличие подозрительных функций, особенно если обработка скачана из ненадёжного источника.

Способ 5: Удаление через SQL-запросы (для опытных пользователей)

В случаях, когда стандартные методы не работают (например, при повреждении базы), можно обратиться к прямым SQL-запросам. Этот метод требует знаний структуры базы данных и должен выполняться только после создания резервной копии.

Пример SQL-запроса для удаления помеченных сотрудников (для Microsoft SQL Server):

DELETE FROM _Reference83 -- Справочник.Сотрудники

WHERE _Marked = 1 -- Пометка удаления

AND _Reference83_ID NOT IN (

SELECT DISTINCT Reference83_ID

FROM _InfoRg83 -- Регистры сведений

WHERE Reference83_ID IS NOT NULL

)

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

  • 🚨 Риск потери данных — неправильный запрос может удалить критически важную информацию.
  • 🔧 Нарушение связей — даже если запрос выполнится без ошибок, в базе могут остаться "битые" ссылки.
  • 📜 Лицензионные ограничения — прямая работа с SQL может нарушать условия лицензионного соглашения .
⚠️ Внимание: Перед выполнением SQL-запросов обязательно:
  1. Создайте полную резервную копию базы.
  2. Проверьте запрос на тестовой копии.
  3. Убедитесь, что в базе нет активных пользователей.

После удаления выполните тестирование и исправление базы через конфигуратор.

Какие объекты можно удалять безопасно, а какие — нет?

Не все помеченные объекты можно удалять без последствий. Ниже приведена таблица с рекомендациями по наиболее распространённым типам данных в 1С ЗУП:

Тип объекта Можно удалять? Риски Рекомендации
Сотрудники (уволенные) ✅ Да Если на сотрудника есть не закрытые начисления или документы Проверять через отчёт "Анализ связей объекта"
Документы "Приём на работу" (закрытые) ✅ Да Если документ ссылается на действующие начисления Удалять только после закрытия всех связанных начислений
Начисления зарплаты ❌ Нет Нарушение расчётов по сотрудникам Архивировать, а не удалять
Кадровые приказы (истечёт срок хранения) ⚠️ Условно Если приказ связан с действующими документами Проверять через журнал документов
Физические лица (без действующих сотрудников) ✅ Да Если физическое лицо используется в других справочниках Использовать отчёт "Поиск ссылок"

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

  • 📋 Отчёт "Анализ связей объекта" (доступен в стандартных отчётах ЗУП).
  • 🔍 Внешние обработки для поиска ссылок (например, "Поиск ссылок на объект" с Infostart).
💡

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

Частые ошибки и как их избежать

При удалении помеченных объектов пользователи часто сталкиваются с типичными проблемами. Рассмотрим самые распространённые ошибки и способы их решения:

  • 🔗 "Объект используется в другом документе"

    Причина: попытка удалить объект, на который есть активные ссылки (например, сотрудник привязан к не закрытому больничному листу).

    Решение: найдите и закройте или удалите зависимые документы с помощью отчёта "Анализ связей объекта".

  • 🔒 "Недостаточно прав"

    Причина: у пользователя нет роли с правом на удаление данных.

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

  • "Превышено время ожидания"

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

    Решение: разбейте удаление на части (например, по годам) или выполните операцию в нерабочее время.

  • 💥 "Нарушение целостности базы"

    Причина: прерванный процесс удаления или ошибки в SQL-запросах.

    Решение: выполните Тестирование и исправление в конфигураторе.

Чтобы минимизировать риски:

  • 📅 Планируйте очистку — выполняйте удаление в период минимальной нагрузки на базу.
  • 📋 Ведите журнал — фиксируйте, какие объекты были удалены и когда.
  • 🔄 Проверяйте отчёты — после очистки сверьте ключевые отчёты (например, расчётную ведомость) на корректность.
⚠️ Внимание: Если после удаления помеченных объектов в базе появились ошибки (например, не открываются документы или отчёты), немедленно восстановите базу из резервной копии и обратитесь к специалисту . Самостоятельные попытки исправить повреждения могут усугубить ситуацию.

FAQ: Ответы на частые вопросы

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

Нет, после физического удаления объект восстановить невозможно. Исключение — если у вас есть резервная копия базы, созданная до удаления. В этом случае можно восстановить базу из бэкапа, но это приведёт к потере всех изменений, сделанных после создания копии.

Если объект был только помечен на удаление (но не удалён физически), его можно восстановить через журнал документов или справочников, сняв пометку удаления.

Сколько времени занимает удаление помеченных объектов в большой базе?

Время зависит от:

  • 📊 Количества помеченных объектов (от сотен до десятков тысяч).
  • 🖥️ Производительности сервера (CPU, дисковая подсистема).
  • 📀 Типа базы (файловая или серверная).

Примерные оценки:

  • 🕒 1 000–5 000 объектов: 5–30 минут.
  • 🕓 10 000–50 000 объектов: 1–4 часа.
  • 🕔 Более 100 000 объектов: 4+ часа (рекомендуется разбивать на части).
Как узнать, сколько помеченных объектов в базе?

Чтобы оценить объём работы, используйте:

  1. Стандартный отчёт "Анализ помеченных объектов" (если есть в вашей конфигурации).
  2. Запрос через конфигуратор:
    ВЫБРАТЬ
    

    ВИД(МЕТАДАННЫЕ().Справочники) КАК Справочник,

    КОЛИЧЕСТВО(*) КАК Количество

    ИЗ

    Справочник.<ИмяСправочника> КАК Объект

    ГДЕ

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

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

    ВИД(МЕТАДАННЫЕ().Справочники)

  3. Внешние обработки для анализа (например, "Статистика помеченных объектов").
Можно ли автоматизировать удаление помеченных объектов?

Да, для автоматизации используйте:

  • 🤖 Регламентные задания — настройте периодический запуск обработки "Удаление помеченных объектов" (например, раз в месяц).
  • 📅 Планировщик задач Windows — для запуска внешней обработки по расписанию.
  • 🔄 Скрипты на языке 1С — если требуется гибкая логика (например, удалять только объекты старше 3 лет).

Пример кода для регламентного задания:

Процедура УдалитьПомеченныеОбъекты()

Обработка = Обработки.УдалениеПомеченныхОбъектов.Создать();

Обработка.Выполнить();

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

Что делать, если после удаления база стала работать медленнее?

Это парадоксальная, но возможная ситуация. Причины:

  • 🗑️ Фрагментация данных — после массового удаления требуется переиндексация таблиц.
  • 📉 Нарушение статистики запросов — SQL-сервер не успевает обновить планы выполнения.
  • 🔄 Незавершённые транзакции — если удаление прервалось.

Решения:

  1. Выполните Тестирование и исправление в конфигураторе с флагом Реиндексировать таблицы.
  2. Обновите статистику на SQL-сервере (для серверных баз):
    EXEC sp_updatestats;
  3. Перезапустите сервер 1С:Предприятие.