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

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

Перед тем как приступать к очистке, важно понимать: удаление помеченных объектов — это необратимая операция. Если в базе остались важные данные, помеченные по ошибке, их восстановление потребует резервной копии. Также процесс может занять значительное время на крупных базах (десятки тысяч объектов), поэтому рекомендуется выполнять его в нерабочие часы.

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

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

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

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

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

  • 🐢 Замедлению работы базы (особенно при выборках данных).
  • 🗄️ Увеличению размера файлов .1CD или .DT.
  • ⚠️ Ошибкам при регламентных операциях (например, при закрытии месяца в бухгалтерии).

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

Подготовка к удалению: резервное копирование и проверка прав

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

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

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

⚠️ Внимание: Если база работает в клиент-серверном варианте (на MS SQL, PostgreSQL), процесс удаления может заблокировать таблицы. На крупных базах это приводит к временной недоступности системы для пользователей.

Создана резервная копия базы|Права администратора подтверждены|Все пользователи отключены|Проверено отсутствие критичных помеченных объектов|Для РИБ синхронизация выполнена-->

Способы удаления помеченных объектов через конфигуратор

В 1С:Предприятие 8.3 и 8.2 есть несколько способов окончательного удаления. Выбор метода зависит от версии платформы, типа базы (файловая/клиент-серверная) и объёма данных.

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

Самый простой и безопасный способ — использовать встроенную обработку:

  1. Откройте конфигуратор (1CV8.EXE /IBName "ИмяБазы" /N "Администратор").
  2. Перейдите в меню Администрирование → Удаление помеченных объектов.
  3. В открывшемся окне нажмите Выполнить.
  4. Дождитесь завершения операции (может занять от нескольких минут до часов).

Этот метод подходит для большинства случаев, но имеет ограничения:

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

Метод 2: Программное удаление через запросы (для опытных пользователей)

Если стандартная обработка не справляется, можно использовать язык запросов 1С. Например, для удаления помеченных элементов справочника Номенклатура:

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

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

"ВЫБРАТЬ

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

|ИЗ

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

|ГДЕ

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

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

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

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

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

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

КонецЦикла;

Этот код нужно выполнять в Отладчике конфигуратора (Сервис → Отладчик → Выполнить выражение). Опасность метода: при ошибке в запросе можно удалить не те данные или нарушить ссылки.

⚠️ Внимание: При программном удалении не используйте конструкцию УдалитьОбъекты() без предварительной выборки. Это может привести к удалению всех объектов в базе, если условие отбора составлено неверно.

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

Если база файловая (.1CD), можно воспользоваться инструментом тестирования:

  1. В конфигураторе выберите Администрирование → Тестирование и исправление.
  2. Отметьте флажки:
    • 🔧 Реиндексация таблиц информационной базы
    • 🗑️ Удаление помеченных объектов
    • 🔍 Проверка логической целостности
  3. Нажмите Выполнить.
  4. Этот метод сочетает очистку с проверкой целостности базы, что полезно после сбоев или некорректных обновлений.

    Метод Подходит для Ограничения Время выполнения
    Стандартная обработка Любые базы (файловые/клиент-серверные) Не удаляет объекты со ссылками От 5 минут до 1 часа
    Программный запрос Опытные пользователи Риск ошибок в коде Зависит от объёма данных
    Тестирование и исправление Только файловые базы Не работает на SQL-базах От 30 минут до нескольких часов
    💡

    Если после удаления база стала работать медленнее, выполните Реиндексацию таблиц через Тестирование и исправление. Это ускорит выборки данных.

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

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

    Ошибка 1: "Объект используется в другом месте и не может быть удалён"

    Эта ошибка возникает, когда помеченный объект ссылается в:

    • 📄 Документах (например, в табличной части или реквизитах).
    • 📊 Регистрах (остатки, обороты).
    • 🔗 Планах обмена (если объект был передан в другую базу).

Решения:

  1. Используйте отчёт Анализ ссылочной целостности (доступен в некоторых конфигурациях), чтобы найти, где используется объект.
  2. Если ссылки некритичные (например, в старых документах), удалите их вручную или перенастройте права доступа.
  3. Для регистров сведений используйте обработку Очистка истории.

Ошибка 2: "Недостаточно прав для удаления"

Даже с ролью Администратор могут возникать ограничения. Проверьте:

  • 🔑 Права на уровне СУБД (для SQL-баз). Пользователь должен иметь права на DELETE в таблицах.
  • 🛡️ Роли в конфигурации. Иногда стандартная роль Администратор ограничена (например, в 1С:ERP).
  • 🔒 Блокировки. Если база используется в управляемом приложении, проверьте, не заблокированы ли объекты другими сеансами.

Решение: временно назначьте пользователю роль Полные праваАдминистрирование → Пользователи) или выполните операцию в монопольном режиме (1CV8.EXE /IBName "ИмяБазы" /N "Администратор" /Monopolistic).

Ошибка 3: "Превышен тайм-аут операции"

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

Способы решения:

  • 🕒 Увеличьте тайм-аут в настройках кластера 1С:Предприятия (параметр DBMSQueryTimeout в файле srvinfo.ini).
  • 🧹 Разбейте операцию на части: удаляйте помеченные объекты по типам (например, сначала справочники, затем документы).
  • 🌙 Выполняйте очистку ночью, когда нагрузка на сервер минимальна.
⚠️ Внимание: Если база находится на облачном сервисе (например, 1С:Фреш), возможности ручного удаления через конфигуратор могут быть ограничены. В этом случае используйте штатные инструменты облачной платформы или обратитесь в поддержку.
Что делать, если после удаления база не открывается?

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

1. Восстановить базу из резервной копии.

2. Выполнить Тестирование и исправление с флагом Проверка ссылочной целостности.

3. Если база файловая, использовать утилиту chdbfl.exe (входит в комплект 1С).

Особенности удаления в разных конфигурациях 1С

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

1С:Бухгалтерия 3.0

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

  • 📅 Открыть период временно (через Администрирование → Настройки программы → Закрытие месяца).
  • 🔄 Перенести данные в новый период с помощью обработки Перенос данных в следующий год.
  • 🗑️ Использовать специализированные обработки (например, Очистка истории регистров).

1С:Управление торговлей 11

В УТ 11 часто накапливаются помеченные:

  • 📦 Документы Заказ клиента (если они не проведены).
  • 📊 Записи в регистре Цены номенклатуры.
  • 🚚 Заказы поставщикам с истёкшими сроками.

Для очистки используйте:

  1. Стандартную обработку Удаление помеченных объектов с предварительным анализом ссылок.
  2. Обработку Очистка истории изменений цен (доступна в УТ 11.4+).

1С:Зарплата и Управление Персоналом 3.1

В ЗУП 3.1 критично следить за помеченными:

  • 👤 Физическими лицами (если они привязаны к расчётным листам).
  • 💰 Начислениями в закрытых периодах.
  • 📅 Графиками работы, используемыми в табелях.

Перед очисткой обязательно:

  1. Проверьте, что помеченные сотрудники не участвуют в Расчёте зарплаты за текущий месяц.
  2. Используйте отчёт Анализ данных по сотрудникам.
💡

В ЗУП 3.1 никогда не удаляйте помеченные объекты в середине расчётного периода. Это может привести к ошибкам в начислениях и отчётности.

Автоматизация очистки: регламентные задания и скрипты

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

Регламентные задания

В 1С:Предприятие 8.3 можно создать регламентное задание:

  1. Откройте Администрирование → Регламентные и фоновые задания.
  2. Создайте новое задание с типом Удаление помеченных объектов.
  3. Настройте расписание (например, раз в месяц в выходной день).
  4. Укажите пользователя с правами администратора.

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

  • Автоматический запуск без участия администратора.
  • 📅 Гибкое расписание (можно привязать к дате закрытия месяца).

Недостатки:

  • ❌ Не работает, если в базе есть активные пользователи.
  • ❌ Не очищает объекты со ссылками.

Скрипты на языке 1С

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

  1. Проверяет наличие помеченных объектов.
  2. Анализирует ссылки и блокировки.
  3. Удаляет только "безопасные" объекты (например, справочники без ссылок).
  4. Отправляет отчёт администратору по email.

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

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

Если Не РолиДоступа.ТекущийПользователь.Проверка(Роль.Администратор) Тогда

Возврат;

КонецЕсли;

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

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

"ВЫБРАТЬ

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

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

|ИЗ

| &Таблица КАК Объект

|ГДЕ

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

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

| МЕТАДАННЫЕ().Имя";

Для Каждого Тип Из Метаданные.Типы Цикл

Запрос.УстановитьПараметр("Таблица", Тип.ПолноеИмя());

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

Если Результат.Пустой() Тогда

Продолжить;

КонецЕсли;

Сообщить("Найдено " + Результат[0].Количество + " помеченных объектов типа " + Тип.Имя);

КонецЦикла;

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

Этот скрипт можно запускать по расписанию через Регламентные задания или внешний планировщик (например, Windows Task Scheduler).

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

Восстановление данных после ошибочного удаления

Если после очистки выяснилось, что были удалены нужные объекты, есть несколько способов восстановления:

Способ 1: Восстановление из резервной копии

Самый надёжный метод — откат к последней резервной копии. Порядок действий:

  1. Остановите всех пользователей в базе.
  2. Восстановите копию через Администрирование → Резервное копирование и восстановление.
  3. Если база SQL, используйте инструменты СУБД (например, RESTORE DATABASE в MS SQL Server).

Способ 2: Журнал регистрации

В некоторых конфигурациях (например, 1С:ERP) ведётся журнал изменений, который позволяет отменить операции:

  1. Откройте Все функции → Журнал регистрации.
  2. Найдите запись об удалении (фильтр по типу события Удаление объекта).
  3. Используйте обработку Восстановление данных (если доступна).

Способ 3: Специализированные обработки

Для типовых конфигураций существуют обработки восстановления:

  • 🔧 Восстановление помеченных объектов (доступна на Инфостарт).
  • 🔄 Откат транзакций (для SQL-баз).

Если ни один из способов не помог, обратитесь в службу поддержки или к партнёрам-франчайзи. В некоторых случаях требуется ремонт базы с помощью утилит chdbfl.exe или v8unpack.exe.

💡

Чтобы минимизировать риски, перед массовым удалением экспортируйте помеченные объекты в XML или DT через Все функции → Выгрузка данных.

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

Можно ли удалить помеченные объекты без конфигуратора?

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

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

В физическое уменьшение файлов базы происходит не сразу. Для файловой базы (.1CD) выполните Тестирование и исправление → Сжатие таблиц. Для SQL-баз используйте инструменты СУБД (например, DBCC SHRINKDATABASE в MS SQL).

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

В 1С:Фреш доступ к конфигуратору ограничен. Используйте:

  1. Стандартную обработку Удаление помеченных объектов в пользовательском режиме (если доступна).
  2. Обратитесь в поддержку 1С:Фреш с запросом на очистку.

Автоматическое удаление в облаке выполняется по расписанию (обычно раз в месяц).

Можно ли удалить помеченные объекты выборочно (например, только справочники)?

Да, для этого модифицируйте стандартную обработку или используйте запрос:

ВЫБРАТЬ

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

|ИЗ

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

|ГДЕ

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

Затем в цикле удаляйте только нужные объекты.

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

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

  • 🔴 Повреждение индексов (решается Тестированием и исправлением).
  • 🔴 Потеря части помеченных объектов (они останутся в базе).
  • 🔴 Блокировка базы для пользователей (требуется перезапуск сервера ).

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