Работа с помеченными на удаление объектами в 1С:Предприятие 8.3 — одна из самых частых задач, с которыми сталкиваются бухгалтеры, администраторы и разработчики. Система не удаляет данные сразу, а лишь ставит на них метку, что часто вызывает путаницу: почему элементы остаются в базе, как их очистить полностью, и почему после "удаления" они продолжают отображаться в отчётах? Эта статья поможет разобраться в механизме пометки на удаление, научит окончательно очищать данные и избегать типичных ошибок.

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

Статья актуальна для всех конфигураций на платформе 1С:Предприятие 8.3 (включая Бухгалтерию 3.0, УТ 11, ЗУП 3.1 и др.), но некоторые нюансы могут отличаться в зависимости от версии конфигурации. Если вы работаете с облачной версией 1С:Фреш, учтите, что часть методов может быть ограничена правами доступа.

📊 Как часто вы сталкиваетесь с необходимостью удалять помеченные объекты в 1С?
Ежедневно
Раз в неделю
Раз в месяц
Реже
Никогда

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

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

  • 🔄 Возможность восстановления: пользователь может отменить пометку, если удаление было ошибочным.
  • 📊 Целостность отчётности: помеченные объекты продолжают участвовать в исторических данных (например, в оборотно-сальдовых ведомостях за прошлые периоды).
  • 🔗 Связанные документы: если объект ссылается на другие данные (например, счёт-фактура на реализацию), жёсткое удаление может нарушить ссылочную целостность.
  • 🛡️ Защита от случайных действий: в многопользовательских базах это предотвращает потерю данных из-за неосторожности.

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

  • 🐢 Замедляют выполнение запросов и отчётов.
  • 🔍 Усложняют поиск актуальных данных (например, при выборе контрагента из справочника).
  • 💾 Увеличивают размер файловой базы или занимаемое место в SQL.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:ERP) пометка на удаление может блокировать проведение новых документов, если они ссылаются на помеченные объекты. Перед массовой очисткой проверьте логические связи!

2. Способ 1: Удаление через стандартный интерфейс 1С

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

  1. Откройте справочник или журнал документов, где находится помеченный объект (например, Справочники → Контрагенты).

  2. Включите отображение помеченных объектов: нажмите Ещё → Показать помеченные на удаление (или используйте горячие клавиши Ctrl+Alt+U).

  3. Выделите нужные строки (можно использовать Shift или Ctrl для множественного выбора).

  4. Нажмите Ещё → Удалить помеченные (или Shift+Del). В некоторых конфигурациях пункт может называться Очистить помеченные.

  5. Подтвердите действие в диалоговом окне. Система может запросить пароль администратора.

Если кнопка Удалить помеченные неактивна, причины могут быть следующими:

  • 🔒 Недостаточно прав: у вашей роли нет разрешения на окончательное удаление. Обратитесь к администратору базы.
  • 🔗 Ссылки на объект: если на помеченный элемент ссылаются другие документы (например, в регистрах накопления), 1С заблокирует удаление.
  • 📌 Особенности конфигурации: в некоторых решениях (например, 1С:Управление торговлей) требуется предварительно снять пометку с связанных объектов.

Проверить права доступа в ролях пользователя

Убедиться, что нет активных сеансов других пользователей

Создать резервную копию базы (рекомендуется для крупных очисток)

Закрыть все открытые формы с данными, которые планируется удалять-->

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

3. Способ 2: Использование обработки "Поиск и удаление помеченных объектов"

Для ускорения процесса в предусмотрены внешние обработки, которые позволяют:

  • 🔍 Искать помеченные объекты по всем справочникам и документам.
  • 🗑️ Удалять их пачками, а не по одному.
  • 📋 Формировать отчёты о результатах очистки.

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

  1. Перейдите в Файл → Открыть… и выберите файл обработки (обычно он называется ПоискИУдалениеПомеченныхОбъектов.epf).

  2. В открывшемся окне отметьте галочками типы объектов, которые нужно очистить (например, Справочники, Документы).

  3. Нажмите Выполнить поиск. Система покажет список помеченных элементов.

  4. Выделите нужные строки и нажмите Удалить помеченные.

Если стандартной обработки нет в вашей конфигурации, её можно скачать с сайта 1С:ИТС или из Каталога решений. Альтернативные варианты:

  • 📌 "Универсальная обработка помеченных объектов" (от сообщества Infostart).
  • 📌 "CleanUp" — обработка с расширенными фильтрами (например, по дате пометки).
⚠️ Внимание: Обработки от сторонних разработчиков могут содержать вредоносный код. Скачивайте их только с официальных источников (1С:ИТС, Infostart, Каталог решений 1С) и проверяйте антивирусом!

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

Критерий Ручное удаление Обработка
Скорость работы Медленно (по 1 объекту) Быстро (пакетная обработка)
Массовые операции Неудобно Поддерживаются
Фильтрация Ограничена Гибкие настройки (по дате, типу, автору)
Логирование Нет Есть (отчёт об удалённых объектах)
💡

Перед массовым удалением экспортируйте список помеченных объектов в Excel через обработку. Это поможет восстановить данные, если что-то пойдёт не так.

4. Способ 3: Удаление через консольные команды (для опытных пользователей)

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

Основные инструменты:

  • 📟 Команда DELETE MARKED в 1С:Предприятие 8.3 (доступна в Управляемом приложении через Отладчик).
  • 🖥️ Скрипты на 1С:Предприятие с использованием объекта ПомеченныеОбъекты.
  • 🗃️ SQL-запросы (только для баз на Microsoft SQL Server или PostgreSQL).

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

Процедура УдалитьПомеченныеИзНоменклатуры()

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

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

"ВЫБРАТЬ

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

|ИЗ

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

|ГДЕ

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

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

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

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

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

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

КонецЦикла;

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

Для выполнения SQL-запросов напрямую к базе (например, если 1С "зависла" из-за большого количества помеченных объектов), можно использовать:

-- Пример для Microsoft SQL Server

UPDATE [dbo].[_Reference16] -- Номенклатура (ID справочника может отличаться!)

SET [_Marked] = 0

WHERE [_Marked] = 1

⚠️ Внимание: Прямые SQL-запросы могут нарушить целостность данных, если не учитывать связи между таблицами. Используйте их только в крайних случаях и после полного бэкапа!

Автоматизировать процесс можно с помощью:

  • 🕒 Регламентных заданий в (настройка в Администрирование → Регламентные и фоновые задания).
  • 🤖 Внешних скриптов на PowerShell или Python (с использованием COM-соединения или REST API).
Как узнать ID справочника для SQL-запроса?

ID справочников в 1С хранятся в таблице [_1SCatalog]. Чтобы найти нужный, выполните запрос:

SELECT _IDRRef, _Description FROM _1SCatalog WHERE _Description LIKE '%Номенклатура%'

Для документов используйте таблицу [_1SDocument].

5. Способ 4: Удаление через "Тестирование и исправление" (для файловой базы)

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

  • 🐢 База стала тормозить из-за большого количества "мусора".
  • 🔄 Нужно сжать файл базы данных (.1CD).
  • 🛠️ Есть подозрения на повреждение данных.

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

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

  2. Запустите 1С:Предприятие в режиме Конфигуратор (удерживайте Shift при запуске ярлыка).

  3. Перейдите в Администрирование → Тестирование и исправление.

  4. В открывшемся окне отметьте галочки:

    • 📋 Реиндексация таблиц
    • 🗑️ Сжать таблицы базы данных
    • 🔍 Проверять логическую целостность
    • 🚮 Удалять помеченные объекты
  • Нажмите Выполнить и дождитесь завершения процесса (может занять от нескольких минут до часов в зависимости от размера базы).

  • После завершения:

    • 📉 Размер файла базы (.1CD) уменьшится.
    • 🚀 Производительность запросов возрастёт.
    • 🗃️ Все помеченные объекты будут физически удалены без возможности восстановления.
    ⚠️ Внимание: Если база используется в многопользовательском режиме, выполняйте "Тестирование и исправление" в нерабочее время. Процесс блокирует доступ к данным!

    6. Способ 5: Удаление через обмен данными (для распределённых баз)

    В распределённых информационных базах (РИБ) или при использовании обмена данными (например, через Универсальный формат обмена или EnterpriseData) помеченные объекты могут синхронизироваться между узлами. Чтобы очистить их централизованно:

    1. На главном узле РИБ удалите помеченные объекты одним из описанных выше способов.

    2. Запустите полную выгрузку данных в файл обмена (Администрирование → Обмен данными → Выгрузить данные).

    3. На подчинённых узлах выполните загрузку данных с флагом Полная загрузка.

    4. После синхронизации помеченные объекты будут удалены во всех базах.

    Особенности этого метода:

    • Плюсы:
      • 🔄 Очистка происходит одновременно во всех узлах.
      • 📋 Сохраняется консистентность данных.
    • ⚠️ Минусы:
      • 🐢 Длительный процесс при большом объёме данных.
      • 🔌 Требует стабильного сетевого соединения.

    Если в вашей конфигурации используется Управление распределёнными информационными базами (УРИБ), для очистки помеченных объектов может потребоваться специальная обработка, например, "ОчисткаРИБ.epf" от фирмы .

    7. Типичные ошибки и как их избежать

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

    Ошибка Причина Решение
    Кнопка "Удалить помеченные" неактивна Недостаточно прав или объект заблокирован Проверьте роль пользователя или снимите блокировки через Администрирование → Активные пользователи
    После удаления объекты остаются в отчётах В настройках отчёта не установлен фильтр по пометке удаления Добавьте условие ПометкаУдаления = ЛОЖЬ в запрос отчёта
    Ошибка "Объект используется в документе X" На объект есть ссылки в проведённых документах Сначала удалите или перепроведите связанные документы
    Длительное выполнение операции Большое количество помеченных объектов или фрагментированная база Разбейте очистку на части или используйте Тестирование и исправление
    Ошибка при запуске SQL-запроса Неверный ID таблицы или синтаксис Проверьте структуру базы через Конфигуратор → Все функции → Метаданные

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

    • 🔄 Регулярно очищайте помеченные объекты (например, раз в квартал).
    • 📋 Ведите журнал удалений (особенно для критичных данных).
    • 🛡️ Настройте права так, чтобы только администраторы могли окончательно удалять данные.
    💡

    Перед любыми массовыми операциями с помеченными объектами создавайте резервную копию базы. Восстановление данных после физического удаления часто невозможно!

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

    В некоторых случаях вместо удаления целесообразнее архивировать данные. Это актуально для:

    • 📂 Исторических документов (например, закрытые заказы клиентов).
    • 📊 Данных, которые могут понадобиться для аудита.
    • 🔗 Объектов, на которые есть ссылки в других системах (например, в CRM).

    Способы архивации:

    1. Перенос в отдельный справочник (например, АрхивКонтрагентов). Для этого:

      • Создайте новый справочник в конфигураторе.
      • Напишите обработку для переноса данных.
      • Настройте права так, чтобы архив был доступен только администраторам.
  • Выгрузка в внешний файл (например, XML или Excel) с последующим удалением из базы.

  • Использование механизма версий1С:Документооборот или 1С:ERP).

  • Преимущества архивации:

    • 🔍 Данные остаются доступны для анализа.
    • 🚀 База не перегружается ненужными объектами.
    • 🔒 Снижается риск потери важной информации.

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

    Процедура АрхивироватьПомеченныхКонтрагентов()
    

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

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

    "ВЫБРАТЬ

    | Контрагенты.Ссылка КАК Ссылка,

    | Контрагенты.Наименование КАК Наименование

    |ИЗ

    | Справочник.Контрагенты КАК Контрагенты

    |ГДЕ

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

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

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

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

    АрхивныйКонтрагент = Справочники.АрхивКонтрагентов.СоздатьЭлемент();

    АрхивныйКонтрагент.Наименование = Выборка.Наименование;

    АрхивныйКонтрагент.СсылкаНаОригинал = Выборка.Ссылка;

    АрхивныйКонтрагент.Записать();

    Выборка.Ссылка.Удалить();

    КонецЦикла;

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

    Как настроить автоматическое архивирование?

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

    1. В Конфигураторе перейдите в Общие → Регламентные задания.

    2. Создайте новое задание с периодичностью (например, раз в месяц).

    3. В модуле задания вызовите процедуру архивации (аналогичную приведённой выше).

    4. Настройте права доступа для пользователя, от имени которого будет выполняться задание.

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

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

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

    Исключение: если используется журналирование изменений (настройка в SQL-базах), теоретически можно откатить транзакцию, но это требует глубоких знаний T-SQL.

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

    В файловой базе (.1CD) пространство, освобождённое после удаления, не возвращается операционной системе сразу. Чтобы уменьшить файл, выполните:

    1. Тестирование и исправление с флагом Сжать таблицы базы данных.
    2. Выгрузку/загрузку базы через dt/cf (для опытных пользователей).

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

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

    В 1С:Фреш возможности по управлению помеченными объектами ограничены:

    • Вы можете только снять пометку или удалить объекты через стандартный интерфейс.
    • Массовые операции и SQL-запросы заблокированы.
    • Для очистки базы обратитесь в поддержку 1С:Фреш с заявкой.

    Обратите внимание: в облаке резервные копии создаются автоматически, но восстановление данных может занимать до 24 часов.

    Что будет, если удалить помеченный объект, на который ссылаются другие документы?

    Система не позволит удалить объект, если на него есть активные ссылки в:

    • Проведённых документах.
    • Регистрах накопления/сведений.
    • Последовательностях документов (например, в цепочке заказов).

    Если ссылки есть, но они не критичны (например, в архивных данных), можно:

    1. Снять пометку удаления с объекта.
    2. Удалить или перепровести зависящие документы.
    3. Повторить попытку удаления.
    Как запретить пользователям помечать объекты на удаление?

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

    1. Откройте Конфигуратор и перейдите в Администрирование → Пользователи и права.
    2. Выберите роль, которую нужно ограничить (например, Бухгалтер).
    3. В разделе Права найдите объект (например, справочник Контрагенты).
    4. Снимите галочку с права Удаление или Пометка на удаление.
    5. Сохраните изменения и обновите права пользователей (Администрирование → Обновить права).

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