В работе с 1С:Предприятие часто возникает ситуация, когда объекты (документы, справочники, регистры) помечаются на удаление, но физически не исчезают из базы. Это создаёт нагрузку на систему, увеличивает размер файлов и может приводить к ошибкам при обменах данными. Обычные пользователи через интерфейс программы могут только пометить объекты на удаление, но окончательное удаление требует прав администратора и доступа к конфигуратору.
Многие администраторы 1С сталкиваются с проблемой: как правильно и безопасно очистить базу от ненужных данных, не нарушив её целостность? В этой статье разберём все способы удаления помеченных объектов через конфигуратор, включая нюансы для разных версий платформы (1С:Предприятие 8.3, 8.2) и типичные ошибки, которые могут возникнуть в процессе.
Перед тем как приступать к очистке, важно понимать: удаление помеченных объектов — это необратимая операция. Если в базе остались важные данные, помеченные по ошибке, их восстановление потребует резервной копии. Также процесс может занять значительное время на крупных базах (десятки тысяч объектов), поэтому рекомендуется выполнять его в нерабочие часы.
Почему объекты остаются помеченными, а не удаляются сразу
В 1С:Предприятие механизм пометки на удаление реализован для защиты данных от случайного уничтожения. Когда пользователь нажимает "Удалить" в интерфейсе программы, система не стирает объект физически, а лишь ставит ему пометку ПометкаУдаления = Истина. Это позволяет:
- 🔄 Восстановить объект, если удаление было ошибочным (через журнал регистрации или специализированные обработки).
- 📤 Синхронизировать изменения с другими базами в распределённых системах (например, при обмене данными между головным офисом и филиалами).
- 🛡️ Соблюдать ссылки между объектами: если документ ссылается на помеченный элемент справочника, система не позволит удалить его сразу.
Однако со временем количество помеченных объектов растёт, что приводит к:
- 🐢 Замедлению работы базы (особенно при выборках данных).
- 🗄️ Увеличению размера файлов
.1CDили.DT. - ⚠️ Ошибкам при регламентных операциях (например, при закрытии месяца в бухгалтерии).
Поэтому периодическая очистка помеченных объектов — это не просто рекомендация, а необходимость для поддержания производительности системы.
Подготовка к удалению: резервное копирование и проверка прав
Прежде чем приступать к очистке, выполните обязательные подготовительные шаги:
- Создайте резервную копию базы. Используйте штатные средства 1С (
Администрирование → Резервное копирование и восстановление) или внешние инструменты (например, SQL-дамп для клиент-серверного варианта). - Проверьте права доступа. Для удаления через конфигуратор требуется роль
Администраторили права на изменение конфигурации. - Закройте все сеансы. Убедитесь, что в базе нет активных пользователей (через
Администрирование → Активные пользователи). - Оцените объём помеченных данных. Запустите отчёт
Анализ использования объектов(доступен в некоторых конфигурациях), чтобы понять, сколько объектов будет удалено.
Критическая информация: если в вашей базе используется механизм распределённых информационных баз (РИБ), очистка помеченных объектов должна выполняться строго на главном узле после синхронизации всех изменений. В противном случае возможна потеря данных на подчинённых узлах.
⚠️ Внимание: Если база работает в клиент-серверном варианте (на MS SQL, PostgreSQL), процесс удаления может заблокировать таблицы. На крупных базах это приводит к временной недоступности системы для пользователей.
Создана резервная копия базы|Права администратора подтверждены|Все пользователи отключены|Проверено отсутствие критичных помеченных объектов|Для РИБ синхронизация выполнена-->
Способы удаления помеченных объектов через конфигуратор
В 1С:Предприятие 8.3 и 8.2 есть несколько способов окончательного удаления. Выбор метода зависит от версии платформы, типа базы (файловая/клиент-серверная) и объёма данных.
Метод 1: Стандартная обработка "Удаление помеченных объектов"
Самый простой и безопасный способ — использовать встроенную обработку:
- Откройте конфигуратор (
1CV8.EXE /IBName "ИмяБазы" /N "Администратор"). - Перейдите в меню
Администрирование → Удаление помеченных объектов. - В открывшемся окне нажмите
Выполнить. - Дождитесь завершения операции (может занять от нескольких минут до часов).
Этот метод подходит для большинства случаев, но имеет ограничения:
- ❌ Не работает с объектами, на которые есть ссылки в неудаляемых данных (например, в закрытых периодах бухгалтерии).
- ❌ Не очищает помеченные объекты в регистрах сведений и планах обмена.
Метод 2: Программное удаление через запросы (для опытных пользователей)
Если стандартная обработка не справляется, можно использовать язык запросов 1С. Например, для удаления помеченных элементов справочника Номенклатура:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ПометкаУдаления = ИСТИНА";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Удалить();
КонецЦикла;
Этот код нужно выполнять в Отладчике конфигуратора (Сервис → Отладчик → Выполнить выражение). Опасность метода: при ошибке в запросе можно удалить не те данные или нарушить ссылки.
⚠️ Внимание: При программном удалении не используйте конструкцию УдалитьОбъекты() без предварительной выборки. Это может привести к удалению всех объектов в базе, если условие отбора составлено неверно.
Метод 3: Удаление через "Тестирование и исправление" (для файловой базы)
Если база файловая (.1CD), можно воспользоваться инструментом тестирования:
- В конфигураторе выберите
Администрирование → Тестирование и исправление. - Отметьте флажки:
- 🔧
Реиндексация таблиц информационной базы - 🗑️
Удаление помеченных объектов - 🔍
Проверка логической целостности
- 🔧
- Нажмите
Выполнить. - 📄 Документах (например, в табличной части или реквизитах).
- 📊 Регистрах (остатки, обороты).
- 🔗 Планах обмена (если объект был передан в другую базу).
Этот метод сочетает очистку с проверкой целостности базы, что полезно после сбоев или некорректных обновлений.
| Метод | Подходит для | Ограничения | Время выполнения |
|---|---|---|---|
| Стандартная обработка | Любые базы (файловые/клиент-серверные) | Не удаляет объекты со ссылками | От 5 минут до 1 часа |
| Программный запрос | Опытные пользователи | Риск ошибок в коде | Зависит от объёма данных |
| Тестирование и исправление | Только файловые базы | Не работает на SQL-базах | От 30 минут до нескольких часов |
Если после удаления база стала работать медленнее, выполните Реиндексацию таблиц через Тестирование и исправление. Это ускорит выборки данных.
Частые ошибки и как их избежать
При удалении помеченных объектов администраторы часто сталкиваются с типичными проблемами. Рассмотрим самые распространённые и способы их решения.
Ошибка 1: "Объект используется в другом месте и не может быть удалён"
Эта ошибка возникает, когда помеченный объект ссылается в:
Решения:
- Используйте отчёт
Анализ ссылочной целостности(доступен в некоторых конфигурациях), чтобы найти, где используется объект. - Если ссылки некритичные (например, в старых документах), удалите их вручную или перенастройте права доступа.
- Для регистров сведений используйте обработку
Очистка истории.
Ошибка 2: "Недостаточно прав для удаления"
Даже с ролью Администратор могут возникать ограничения. Проверьте:
- 🔑 Права на уровне СУБД (для SQL-баз). Пользователь 1С должен иметь права на
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 часто накапливаются помеченные:
- 📦 Документы
Заказ клиента(если они не проведены). - 📊 Записи в регистре
Цены номенклатуры. - 🚚 Заказы поставщикам с истёкшими сроками.
Для очистки используйте:
- Стандартную обработку
Удаление помеченных объектовс предварительным анализом ссылок. - Обработку
Очистка истории изменений цен(доступна в УТ 11.4+).
1С:Зарплата и Управление Персоналом 3.1
В ЗУП 3.1 критично следить за помеченными:
- 👤 Физическими лицами (если они привязаны к расчётным листам).
- 💰 Начислениями в закрытых периодах.
- 📅 Графиками работы, используемыми в табелях.
Перед очисткой обязательно:
- Проверьте, что помеченные сотрудники не участвуют в
Расчёте зарплатыза текущий месяц. - Используйте отчёт
Анализ данных по сотрудникам.
В ЗУП 3.1 никогда не удаляйте помеченные объекты в середине расчётного периода. Это может привести к ошибкам в начислениях и отчётности.
Автоматизация очистки: регламентные задания и скрипты
Чтобы не выполнять удаление помеченных объектов вручную, можно настроить автоматическую очистку. Для этого подходят:
Регламентные задания
В 1С:Предприятие 8.3 можно создать регламентное задание:
- Откройте
Администрирование → Регламентные и фоновые задания. - Создайте новое задание с типом
Удаление помеченных объектов. - Настройте расписание (например, раз в месяц в выходной день).
- Укажите пользователя с правами администратора.
Преимущества:
- ⏰ Автоматический запуск без участия администратора.
- 📅 Гибкое расписание (можно привязать к дате закрытия месяца).
Недостатки:
- ❌ Не работает, если в базе есть активные пользователи.
- ❌ Не очищает объекты со ссылками.
Скрипты на языке 1С
Для более гибкой автоматизации можно написать скрипт, который:
- Проверяет наличие помеченных объектов.
- Анализирует ссылки и блокировки.
- Удаляет только "безопасные" объекты (например, справочники без ссылок).
- Отправляет отчёт администратору по email.
Пример кода для автоматической проверки:
Процедура УдалитьПомеченныеОбъекты()
Если Не РолиДоступа.ТекущийПользователь.Проверка(Роль.Администратор) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МЕТАДАННЫЕ().Имя КАК ТипОбъекта,
| КОЛИЧЕСТВО(*) КАК Количество
|ИЗ
| &Таблица КАК Объект
|ГДЕ
| Объект.ПометкаУдаления = ИСТИНА
|СГРУППИРОВАТЬ ПО
| МЕТАДАННЫЕ().Имя";
Для Каждого Тип Из Метаданные.Типы Цикл
Запрос.УстановитьПараметр("Таблица", Тип.ПолноеИмя());
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Продолжить;
КонецЕсли;
Сообщить("Найдено " + Результат[0].Количество + " помеченных объектов типа " + Тип.Имя);
КонецЦикла;
КонецПроцедуры
Этот скрипт можно запускать по расписанию через Регламентные задания или внешний планировщик (например, Windows Task Scheduler).
⚠️ Внимание: Автоматическое удаление может конфликтовать с обменами данными (например, в 1С:Розница или 1С:ERP). Перед настройкой проверьте, не используются ли помеченные объекты в планах обмена.
Восстановление данных после ошибочного удаления
Если после очистки выяснилось, что были удалены нужные объекты, есть несколько способов восстановления:
Способ 1: Восстановление из резервной копии
Самый надёжный метод — откат к последней резервной копии. Порядок действий:
- Остановите всех пользователей в базе.
- Восстановите копию через
Администрирование → Резервное копирование и восстановление. - Если база SQL, используйте инструменты СУБД (например,
RESTORE DATABASEв MS SQL Server).
Способ 2: Журнал регистрации
В некоторых конфигурациях (например, 1С:ERP) ведётся журнал изменений, который позволяет отменить операции:
- Откройте
Все функции → Журнал регистрации. - Найдите запись об удалении (фильтр по типу события
Удаление объекта). - Используйте обработку
Восстановление данных(если доступна).
Способ 3: Специализированные обработки
Для типовых конфигураций существуют обработки восстановления:
- 🔧 Восстановление помеченных объектов (доступна на Инфостарт).
- 🔄 Откат транзакций (для SQL-баз).
Если ни один из способов не помог, обратитесь в службу поддержки 1С или к партнёрам-франчайзи. В некоторых случаях требуется ремонт базы с помощью утилит chdbfl.exe или v8unpack.exe.
Чтобы минимизировать риски, перед массовым удалением экспортируйте помеченные объекты в XML или DT через Все функции → Выгрузка данных.
FAQ: Ответы на частые вопросы
Можно ли удалить помеченные объекты без конфигуратора?
Нет, полное удаление возможно только через конфигуратор или программные методы. В пользовательском режиме доступна только пометка на удаление. Исключение — некоторые обработки от сторонних разработчиков (например, с Инфостарта), но они требуют прав администратора.
Почему после удаления размер базы не уменьшился?
В 1С физическое уменьшение файлов базы происходит не сразу. Для файловой базы (.1CD) выполните Тестирование и исправление → Сжатие таблиц. Для SQL-баз используйте инструменты СУБД (например, DBCC SHRINKDATABASE в MS SQL).
Как удалить помеченные объекты в облачной базе (1С:Фреш)?
В 1С:Фреш доступ к конфигуратору ограничен. Используйте:
- Стандартную обработку
Удаление помеченных объектовв пользовательском режиме (если доступна). - Обратитесь в поддержку 1С:Фреш с запросом на очистку.
Автоматическое удаление в облаке выполняется по расписанию (обычно раз в месяц).
Можно ли удалить помеченные объекты выборочно (например, только справочники)?
Да, для этого модифицируйте стандартную обработку или используйте запрос:
ВЫБРАТЬ
| Справочник.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Справочник.Номенклатура
|ГДЕ
| Справочник.Номенклатура.ПометкаУдаления = ИСТИНА
Затем в цикле удаляйте только нужные объекты.
Что будет, если прервать процесс удаления?
Если процесс прервать (например, закрыть конфигуратор или выключить ПК), база может остаться в неконсистентном состоянии. Последствия:
- 🔴 Повреждение индексов (решается
Тестированием и исправлением). - 🔴 Потеря части помеченных объектов (они останутся в базе).
- 🔴 Блокировка базы для пользователей (требуется перезапуск сервера 1С).
В большинстве случаев помогает повторный запуск удаления или восстановление из резервной копии.