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

В этой статье мы разберём все доступные способы окончательного удаления помеченных объектов в разных версиях 1С:УТ (включая 10.3, 11 и 11.5), рассмотрим нюансы для распределённых баз, а также объясним, как избежать типичных ошибок. Особое внимание уделим вопросам безопасности — почему нельзя просто нажать "Удалить всё" и что делать, если после очистки пропадали важные данные.

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

Механизм пометки на удаление в 1С:Предприятие — это не баг, а осознанное архитектурное решение. Система не стирает объекты физически по трём ключевым причинам:

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

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

  • ⏳ Замедлению работы базы (особенно при выборках по справочникам).
  • 🔍 Ошибкам при поиске актуальных данных.
  • 📦 Проблемам при выгрузке/загрузке данных через XML или EnterpriseData.
📊 Как часто вы очищаете помеченные объекты в 1С УТ?
Раз в месяц
Раз в квартал
Только когда база тормозит
Никогда не очищал

Подготовка к удалению: что нужно сделать до очистки

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

  1. Создайте резервную копию базы. Даже если вы работаете в тестовом режиме, ошибки при массовом удалении могут привести к потере данных. Используйте стандартные средства (Администрирование → Резервное копирование) или сторонние утилиты.
  2. Проверьте права доступа. Для удаления помеченных объектов требуются права Администрирование или Полные права. Убедитесь, что ваш пользователь имеет соответствующие разрешения.
  3. Закройте все сеансы. Во время очистки в базе не должно быть активных пользователей — это может привести к блокировкам.
  4. Оцените объём удаляемых данных. Если помеченных объектов десятки тысяч, процесс может занять несколько часов.

Создать резервную копию базы|Проверить права пользователя|Закрыть все активные сеансы|Оценить объём данных для удаления|Убедиться в отсутствии обменов данными-->

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

⚠️ Внимание: Если в вашей конфигурации используются дополнительные обработки для обмена данными (например, с 1С:Розница или 1С:БП), убедитесь, что они поддерживают работу с помеченными объектами. Некоторые старые обработки могут некорректно обрабатывать удалённые данные, что приведёт к ошибкам при следующем обмене.

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

В зависимости от версии 1С:Управление Торговлей и задач доступны несколько методов очистки. Рассмотрим их подробно.

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

Это самый безопасный и рекомендуемый способ. Обработка входит в стандартную поставку 1С:УТ и доступна через меню:

Все функции → Стандартные → Удаление помеченных объектов

Алгоритм работы:

  1. Открывается окно с настройками фильтра. Здесь можно выбрать, какие типы объектов очищать (например, только справочники или только документы).
  2. Система формирует список помеченных объектов и предлагает подтвердить удаление.
  3. После подтверждения запускается процесс физического удаления.

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

  • ✅ Поддерживается официально, минимальный риск ошибок.
  • ✅ Есть возможность отменить операцию до её завершения.
  • ✅ Логируются все действия (можно посмотреть, что именно было удалено).

Недостатки:

  • ❌ Медленная работа при большом количестве объектов (например, 50 000+ помеченных строк).
  • ❌ Не всегда корректно обрабатывает связанные объекты (например, если документ ссылается на помеченный справочник).

2. Удаление через консоль запросов (для опытных пользователей)

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

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

УДАЛИТЬ ИЗ Справочник.Номенклатура ГДЕ ПометкаУдаления = ИСТИНА;

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

УДАЛИТЬ ИЗ Документ.РеализацияТоваровУслуг ГДЕ ПометкаУдаления = ИСТИНА;
⚠️ Внимание: Прямые запросы не проверяют ссылки между объектами. Если вы удалите справочник, на который ссылается не помеченный документ, это может привести к ошибкам целостности данных. Всегда тестируйте запросы на копии базы!

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

НАЧАТЬ ТРАНЗАКЦИЮ;

УДАЛИТЬ ИЗ Справочник.Контрагенты ГДЕ ПометкаУдаления = ИСТИНА;

УДАЛИТЬ ИЗ Справочник.Номенклатура ГДЕ ПометкаУдаления = ИСТИНА;

// Другие таблицы

КОНЕЦ ТРАНЗАКЦИИ;

3. Использование внешних обработок

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

  • "Универсальная обработка удаления помеченных объектов" (доступна на Инфостарт).
  • "Очистка базы 1С" от фирмы (платно, но с технической поддержкой).

Преимущества внешних обработок:

  • 🚀 Быстрее стандартной обработки (оптимизированные алгоритмы).
  • 🔍 Поддерживают проверку ссылочной целостности.
  • 📊 Предоставляют детальную статистику по удалённым объектам.

Недостатки:

  • 💰 Часто платные (особенно надёжные решения).
  • 🔧 Требуют настройки под конкретную конфигурацию.
Как проверить ссылочную целостность перед удалением?

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

ВЫБРАТЬ

Документ.РеализацияТоваровУслуг.Ссылка КАК Документ,

Документ.РеализацияТоваровУслуг.Номенклатура КАК Номенклатура

ИЗ

Документ.РеализацияТоваровУслуг КАК Документ

ГДЕ

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

Если такой запрос возвращает строки — значит, удаление помеченной номенклатуры приведёт к ошибкам в документах. В этом случае сначала нужно исправить ссылки (например, заменить номенклатуру на актуальную) или удалить сами документы.

Особенности удаления в разных версиях 1С УТ

Алгоритмы очистки могут отличаться в зависимости от версии 1С:Управление Торговлей. Рассмотрим ключевые нюансы.

Версия 1С УТ Особенности удаления Рекомендуемый метод
1С:УТ 10.3 Нет встроенной обработки для массового удаления. Часто требуется ручное выполнение запросов. Внешние обработки или SQL-запросы
1С:УТ 11.1 – 11.3 Появилась стандартная обработка, но работает медленно при большом объёме данных. Стандартная обработка + оптимизация индексов
1С:УТ 11.4+ Улучшена производительность удаления, добавлена проверка ссылочной целостности. Стандартная обработка
1С:УТ для Казахстана/Украины Могут быть дополнительные ограничения из-за локальных особенностей учёта. Проверка на тестовой базе перед очисткой

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

⚠️ Внимание: В 1С:УТ 10.3 при удалении помеченных объектов через запросы необходимо вручную обновлять последовательности нумерации документов (например, для счетов или накладных). В противном случае новые документы могут получать номера с пропусками.

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

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

1. Ошибка "Нарушение ссылочной целостности"

Причина: Attempt to delete an object that is referenced by another object (попытка удалить объект, на который ссылается другой объект).

Решение:

  • 🔍 Найдите все объекты, ссылающиеся на помеченный, с помощью запроса (см. спойлер выше).
  • 🔄 Либо удалите ссылающиеся объекты, либо снимите с них пометку удаления.
  • 🛠️ В крайнем случае используйте Режим восстановления ссылочной целостности (доступен в Конфигураторе).

2. Зависание процесса удаления

Причина: Большой объём данных или блокировки в базе.

Решение:

  • 🖥️ Разбейте удаление на части (например, сначала справочники, затем документы).
  • 🔄 Увеличьте тайм-аут операции в настройках сервера .
  • 📊 Используйте Тестовый режим для оценки времени выполнения.

3. После удаления не освобождается место на диске

Причина: В SQL Server или PostgreSQL место не освобождается автоматически после удаления строк.

Решение:

  • 🗃️ Выполните Shrink Database (для SQL Server) или VACUUM FULL (для PostgreSQL).
  • 🔧 Настройте автосжатие базы в расписании администрирования.
SELECT * FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') WHERE avg_fragmentation_in_percent > 30;

Если фрагментация выше 30%, перестройте индексы с помощью команды REORGANIZE или REBUILD.

-->

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

Если вы работаете в распределённой информационной базе (РИБ), процесс очистки имеет свои нюансы:

  1. Очистка на периферийных узлах. Сначала удаляйте помеченные объекты на подчинённых базах, затем — на центральной.
  2. Синхронизация после удаления. После очистки обязательно выполните Полное обновление данных с центрального узла.
  3. Контроль версий объектов. В РИБ удаление помеченных объектов может привести к конфликтам версий. Перед очисткой проверьте, что на всех узлах используются актуальные версии меток.

Пример последовательности действий для РИБ с 1 центральным и 2 периферийными узлами:

  1. На периферийном узле 1: удалить помеченные объекты → выполнить обмен с центральным узлом.
  2. На периферийном узле 2: повторить те же действия.
  3. На центральном узле: удалить помеченные объекты → запустить Полное обновление данных для всех периферийных узлов.
⚠️ Внимание: В распределённых базах никогда не удаляйте помеченные объекты напрямую через SQL на центральном узле — это приведёт к рассинхронизации с периферийными базами. Всегда используйте штатные механизмы .

Автоматизация удаления помеченных объектов

Если очистка требуется регулярно (например, раз в месяц), имеет смысл настроить автоматическое удаление. Варианты реализации:

1. Регламентное задание в 1С

Можно создать задание, которое будет запускать обработку удаления по расписанию:

Администрирование → Регламентные и фоновые задания → Создать задание

Настройки:

  • Тип задания: Выполнение обработки.
  • Обработка: Удаление помеченных объектов.
  • Расписание: например, Каждое 1-е число месяца в 2:00.

2. Внешний скрипт на сервере

Для SQL-версий можно написать скрипт на PowerShell или Bash, который будет:

  1. Подключаться к базе через SQLCMD или psql.
  2. Выполнять запрос на удаление помеченных объектов.
  3. Фиксировать результат в лог-файле.

Пример скрипта для SQL Server:

sqlcmd -S server_name -d database_name -U sa -P password -Q "

DELETE FROM Reference1 WHERE DeletionMark = 1;

DELETE FROM Document1 WHERE DeletionMark = 1;

" >> C:\Logs\1C_Cleanup_$(Get-Date -Format "yyyyMMdd").log

3. Использование 1С:EDT (для программистов)

В 1С:Enterprise Development Tools можно создать расширение конфигурации, которое будет:

  • Отслеживать помеченные объекты.
  • Автоматически запускать очистку при достижении порогового значения (например, 10 000 помеченных строк).
  • Отправлять уведомления администратору по email.
💡

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

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

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

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

Исключение: если используется 1С:УТ 11.4+ с включённым Журналом регистрации, можно попробовать восстановить данные через Администрирование → Журнал регистрации → Восстановление данных, но это работает не для всех типов объектов.

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

Причины могут быть разные:

  1. Фрагментация таблиц — после удаления строк в базе остаются "дыры", которые не освобождают место. Решение: выполнить REINDEX или VACUUM (в зависимости от СУБД).
  2. Не оптимизированные запросы — медленная работа может быть связана не с объёмом данных, а с неэффективными выборками. Проверьте планы выполнения запросов.
  3. Кэш сервера 1С — иногда помогает перезапуск сервера 1С:Предприятие.

Также убедитесь, что вы удалили все типы помеченных объектов (справочники, документы, регистры). Часто пользователи очищают только справочники, забывая про документы.

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

В 1С:Fresh или других облачных решениях нет прямого доступа к SQL, поэтому:

  1. Используйте стандартную обработку (доступна в веб-клиенте).
  2. Если обработка недоступна — обратитесь в техническую поддержку с запросом на очистку.
  3. Для 1С:Fresh можно настроить Регламентное задание через личный кабинет.

⚠️ В облачных версиях нельзя использовать внешние обработки или SQL-запросы — это нарушает условия обслуживания.

Что делать, если при удалении возникает ошибка "Объект используется в обмене данными"?

Эта ошибка означает, что помеченный объект участвует в планах обмена (например, с 1С:Бухгалтерией или 1С:Розница). Решения:

  • 🔄 Отмените пометку удаления для этого объекта и проверьте, почему он ещё используется.
  • 📊 Исключите объект из плана обмена (в настройках обмена данных).
  • 🗃️ Удалите связь с обменом через Конфигуратор (раздел Обмен данными).

Если объект больше не нужен, но система не даёт его удалить — попробуйте удалить сам план обмена (если он не используется).

Как узнать, сколько помеченных объектов в базе?

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

ВЫБРАТЬ

МЕТАДАННЫЕ().ИМЯ КАК ТипОбъекта,

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

ИЗ

&ТипыОбъектов КАК Объект

ГДЕ

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

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

МЕТАДАННЫЕ().ИМЯ

Для SQL-версий можно использовать прямой запрос к системным таблицам:

SELECT

t.name AS TableName,

i.rows AS MarkedCount

FROM

sys.tables t

JOIN

sys.sysindexes i ON t.object_id = i.id

WHERE

i.indid IN (0, 1) AND

t.name LIKE '%_DT%' AND -- Фильтр по таблицам документов

EXISTS (

SELECT 1 FROM t

WHERE DeletionMark = 1

)