Работа с базой данных 1С:Предприятие рано или поздно приводит к накоплению «мусора» — документов, которые были помечены на удаление, но физически продолжают занимать место. Это не только увеличивает размер файла базы, но и замедляет работу системы, особенно при выполнении регламентных операций или формировании отчетов. Многие администраторы и пользователи сталкиваются с вопросом: как полностью удалить помеченные документы из 1С, чтобы освободить ресурсы и избежать сбоев?
В этой статье мы разберем все доступные способы очистки — от стандартных инструментов платформы до ручных методов для опытных пользователей. Вы узнаете, какие риски связаны с удалением данных, как проверить базу перед очисткой и что делать, если после процедуры возникли ошибки. Материал актуален для большинства конфигураций: 1С:Бухгалтерия, 1С:Управление торговлей, 1С:Зарплата и управление персоналом и других.
Почему удаленные документы остаются в базе 1С
В 1С:Предприятие механизм удаления документов работает не так, как в обычных файловой системах. Когда пользователь нажимает «Удалить» (или использует метод ПометитьНаУдаление()), документ не исчезает физически, а лишь получает специальный статус — «помечен на удаление». Это сделано для:
- 🔄 Возможности восстановления — если документ удалили по ошибке, его можно вернуть в течение определенного времени.
- 📊 Сохранения истории изменений — некоторые отчеты и регламентные задачи требуют данных о «удаленных» документах для корректной работы.
- 🔗 Целостности ссылок — если на документ ссылаются другие объекты (например, заказы покупателей или платежные поручения), полное удаление может нарушить логику базы.
Однако со временем таких «помеченных» документов накапливается сотни или тысячи, и они начинают:
- 🐢 Замедлять работу — особенно при выполнении операций, связанных с обходом всех документов (например, перепроведение или закрытие месяца).
- 💾 Увеличивать размер базы — что критично для файловых вариантов 1С (например,
.1CDили.DT). - ⚠️ Вызывать ошибки — при обмене данными или обновлении конфигурации.
Поэтому периодическая очистка удаленных документов — необходимая процедура для поддержания здоровья базы. Но перед тем как приступить, важно понять, какие данные можно удалять без риска для бизнес-процессов.
Подготовка к очистке: что нужно сделать до удаления
Очистка удаленных документов — это необратимая операция. Если вы удалите данные, на которые ссылаются другие объекты или которые требуются для отчетности, восстановить их будет крайне сложно (а иногда невозможно). Поэтому перед процедурой обязательно выполните следующие шаги:
⚠️ Внимание: Если ваша база работает в режиме управляемого приложения (например, 1С:ERP или 1С:КА 2.4), некоторые методы очистки могут быть заблокированы. Проверьте права доступа в Администрирование → Настройки пользователей и прав.
1. Создайте резервную копию базы:
- 💾 Для файловых баз (
.1CD,.DT) — скопируйте файл базы в отдельную папку. - 🖥️ Для клиент-серверных баз (PostgreSQL, Microsoft SQL Server) — выполните бэкап через
pg_dumpилиSQL Server Management Studio. - ☁️ Для облачных решений (например, 1С:Фреш) — используйте встроенные инструменты резервирования в личном кабинете.
2. Проверьте зависимости документов:
Некоторые «удаленные» документы могут быть связаны с:
- 📄 Регламентными операциями (например, закрытие месяца в бухгалтерии).
- 💰 Финансовыми транзакциями (платежные поручения, банковские выписки).
- 📦 Логистическими цепочками (заказы, накладные, акты выполненных работ).
Чтобы выявить такие связи, воспользуйтесь отчетом Анализ ссылочной целостности (доступен в Все функции → Стандартные отчеты).
3. Оцените объем удаляемых данных:
Если помеченных документов слишком много (например, десятки тысяч), их массовое удаление может:
- 🕒 Занять много времени (от нескольких минут до часов).
- 🔄 Привести к блокировке базы для других пользователей.
- ⚠️ Вызвать ошибки транзакций, если в процессе очистки кто-то попытается записать новые данные.
Рекомендуется выполнять очистку в нерабочее время или на тестовой копии базы.
Создать резервную копию базы|Проверить права доступа (полные права администратора)|Запустить отчет "Анализ ссылочной целостности"|Убедиться, что нет активных пользователей в базе|Подготовить журнал для фиксации ошибок (если они возникнут)-->
Способ 1: Стандартная очистка через «Администрирование»
Самый простой и безопасный метод — использование встроенного инструмента Очистка данных, доступного в большинстве типовых конфигураций. Он позволяет удалить помеченные объекты без ручного вмешательства в код.
Пошаговая инструкция:
- Откройте базу в режиме
1С:Предприятиес правами администратора. - Перейдите в раздел
Администрирование → Обслуживание → Очистка данных(путь может незначительно отличаться в зависимости от конфигурации). - В открывшемся окне выберите типы объектов для очистки. Обычно это:
- 📄 Документы (все виды: заказы, накладные, акты и т.д.).
- 🗑️ Помеченные на удаление (флажок внизу окна).
- Нажмите
Выполнить очисткуи дождитесь завершения процесса. - ✅ Безопасность — платформа сама проверяет ссылочную целостность.
- ⚡ Быстрота — не требует знания языка 1С или SQL.
- 🔄 Возможность отмены — если очистка прервалась, можно повторить процедуру.
- ❌ Не все конфигурации поддерживают этот инструмент (например, в сильно доработанных решениях он может быть отключен).
- ❌ Не удаляет объекты, на которые есть ссылки из других баз (при распределенной информационной системе).
- ❌ Может не очищать служебные таблицы (например,
_AccumRgTдля регистров накопления). - 🔍 Проверяйте результат запроса — перед массовым удалением выполните запрос в режиме
ВЫБРАТЬ ПЕРВЫЕ 10, чтобы убедиться, что выбираются только нужные документы. - 🔄 Используйте транзакции — оберните код в
НачатьТранзакцию()иЗафиксироватьТранзакцию(), чтобы при ошибке откатить изменения. - 📝 Ведите лог — записывайте ссылки на удаленные документы в отдельный регистр или файл.
- 🔧 Имена таблиц в 1С формируются по шаблону, но могут отличаться в зависимости от версии платформы. Точные имена можно узнать через
ИБ → Метаданные → Таблицы. - 🔗 Связанные объекты — после удаления документов необходимо очистить регистры накопления, бухгалтерии и сведений, иначе останутся «битые» ссылки.
- 🛡️ Бэкап обязателен — перед выполнением SQL-запросов создайте полную копию базы.
- ⚡ Готовое решение — не нужно разрабатывать запрос с нуля.
- 🛡️ Проверенная логика — многие обработки учитывают нюансы ссылочной целостности.
- 📊 Дополнительные функции — например, предварительный анализ или логгирование.
- 📌 Очистка помеченных объектов от 1С-Рарус — поддерживает большинство типовых конфигураций.
- 📌 Универсальная очистка базы (автор: Евгений Гилев) — позволяет гибко настраивать критерии удаления.
- 📌 CleanDB — обработка с открытым кодом, доступная на GitHub.
Преимущества этого метода:
Однако есть и ограничения:
Если в вашей конфигурации нет пункта "Очистка данных", попробуйте открыть его через Все функции (Ctrl+Shift+F12) и введите в поиске "Очистка".
Способ 2: Очистка через консоль запросов (для опытных пользователей)
Если стандартный инструмент недоступен или не справляется с задачей, можно воспользоваться консолью запросов. Этот метод требует знания языка 1С и осторожности, так как неправильный запрос может повредить данные.
Пример запроса для удаления помеченных документов:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка КАК Ссылка
|ИЗ
| Документ.<ИмяДокумента> КАК Документ
|ГДЕ
| Документ.ПометкаУдаления = ИСТИНА";
Результат = Запрос.Выполнить();
Пока Результат.Следующий() Цикл
Объект = Результат.Ссылка.ПолучитьОбъект();
Объект.Удалить();
КонецЦикла;
Замените <ИмяДокумента> на реальное имя документа (например, ЗаказПокупателя или ПоступлениеТоваровУслуг). Для массовой очистки всех типов документов можно использовать цикл по метаданным:
Для Каждого Документ Из Метаданные.Документы Цикл
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка КАК Ссылка
|ИЗ
| Документ." + Документ.Имя + " КАК Документ
|ГДЕ
| Документ.ПометкаУдаления = ИСТИНА";
// Далее выполняем запрос и удаляем объекты
КонецЦикла;
Предупреждения при использовании этого метода:
⚠️ Внимание: Если в базе включен механизм версионирования объектов (например, в 1С:ERP или 1С:УТ 11), удаление через запрос может нарушить историю изменений. Перед выполнением отключите версии в настройках конфигурации.
Для ускорения процесса можно использовать пакетное удаление:
МассивСсылок = Новый Массив;
Пока Результат.Следующий() Цикл
МассивСсылок.Добавить(Результат.Ссылка);
КонецЦикла;
Объект.Удалить(МассивСсылок); // Массовое удаление за один вызов
Способ 3: Очистка через SQL-запросы (для клиент-серверных баз)
Если ваша база работает на Microsoft SQL Server или PostgreSQL, можно очистить помеченные документы напрямую через SQL-запросы. Этот метод самый быстрый, но и самый рискованный — ошибка в запросе может привести к потере данных или нарушению целостности базы.
Пример запроса для PostgreSQL:
-- Удаление помеченных документов из таблицы документов
DELETE FROM "Document<ИмяДокумента>_VT" WHERE "_Marked" = TRUE;
-- Очистка регистров, связанных с удаленными документами
DELETE FROM "_AccumRgT<ИмяРегистра>" WHERE "_RecordKind" = '-1';
Для Microsoft SQL Server:
-- Удаление помеченных документов
DELETE FROM [dbo].[_Document<ИмяДокумента>] WHERE [_Marked] = 1;
-- Очистка служебных таблиц
DBCC SHRINKFILE (N'<ИмяФайлаБазы>' , 0, TRUNCATEONLY);
Важные замечания:
Таблица: Соответствие типов документов и таблиц в SQL
| Тип документа в 1С | Таблица в PostgreSQL | Таблица в MS SQL |
|---|---|---|
| Заказ покупателя | "Document_ЗаказПокупателя_VT" |
[dbo].[_Document123] (где 123 — ID типа) |
| Поступление товаров | "Document_ПоступлениеТоваровУслуг_VT" |
[dbo].[_Document456] |
| Реализация товаров | "Document_РеализацияТоваровУслуг_VT" |
[dbo].[_Document789] |
| Платежное поручение | "Document_ПлатежноеПоручение_VT" |
[dbo].[_Document101] |
⚠️ Внимание: В последних версиях 1С:Предприятие 8.3.20+ структура таблиц может отличаться из-за оптимизаций платформы. Перед выполнением запросов сверьтесь с документацией к вашей версии или используйте инструмент IBM Data Studio для анализа схемы базы.
Способ 4: Использование внешних обработок для очистки
Если вы не хотите писать код самостоятельно, можно воспользоваться готовыми внешними обработками для очистки базы. Их преимущества:
Популярные обработки для очистки:
Как подключить и использовать обработку:
- Скачайте файл обработки (
.epfили.erf). - Откройте базу в режиме
1С:Предприятие. - Перейдите в
Файл → Открыть → Выбрать файл обработки. - Следуйте инструкциям на экране (обычно нужно выбрать типы объектов и подтвердить очистку).
Пример интерфейса обработки Очистка помеченных объектов:
Окно обработки содержит:
- 📋 Список типов документов с флажками для выбора.
- 🔍 Кнопку «Анализ» — показывает, сколько объектов будет удалено.
- 🗑️ Кнопку «Очистить» — запускает процедуру удаления.
- 📝 Лог операций — фиксирует все действия для отчета.
Где скачать обработки для очистки?
Наиболее проверенные источники:
1. Официальный портал 1С:ИТС (раздел «Обработки»).
2. Infostart.ru — крупнейшее сообщество разработчиков 1С (есть бесплатные и платные решения).
3. GitHub — репозитории с открытым кодом (например, поиск по запросу 1C clean deleted documents).
4. Форумы партнеров 1С (например, 1С-Рарус, Корус Консалтинг).
Предупреждения при использовании обработок:
⚠️ Внимание: Некоторые обработки могут содержать вредоносный код или некорректно работать с последними версиями платформы. Перед использованием проверьте отзывы других пользователей и протестируйте обработку на копии базы.
Что делать, если после очистки возникли ошибки
Даже при правильном выполнении очистки иногда возникают проблемы. Рассмотрим типичные ошибки и способы их устранения.
1. Ошибки ссылочной целостности
Симптомы:
- ❌ При открытии документов появляется сообщение:
Не найден объект ссылки <ID>. - ❌ Отчеты не формируются, выдавая ошибку
Ошибка при выполнении запроса.
Решение:
- 🔧 Восстановите базу из резервной копии и повторите очистку с учетом зависимостей.
- 🛠 Используйте обработку Поиск и исправление ссылочной целостности (доступна на Infostart).
- 📝 Вручную найдите «битые» ссылки через запрос:
ВЫБРАТЬ| Ссылка.Ссылка КАК БитаяСсылка
|ИЗ
| Документ.<ИмяДокумента> КАК Ссылка
|ГДЕ
| НЕ Ссылка.Ссылка.ЭтоЗначениеЗаполнено()
2. База не открывается или тормозит
Симптомы:
- ⏳ При запуске 1С висит сообщение
Выполняется реструктуризация...более 30 минут. - ❌ Появляется ошибка
Ошибка СУБДилиОшибка блокировки.
Решение:
- 🔄 Перезапустите службу 1С:Предприятие (для клиент-серверного варианта).
- 🛠 Выполните тестирование и исправление базы через
chdbfl.exe(для файловых баз) илиSQL Server Management Studio(для MS SQL). - 📉 Если база сильно фрагментирована, выполните сжатие (
DBCC SHRINKDATABASEдля MS SQL илиVACUUM FULLдля PostgreSQL).
3. Пропавшие данные в отчетах
Симптомы:
- 📉 В отчетах (например,
Оборотно-сальдовая ведомость) не отображаются суммы за прошлые периоды. - ❌ При проведении документов появляется ошибка
Недостаточно прав для операции.
Решение:
- 🔍 Проверьте, не были ли удалены документы, которые влияют на остатки (например,
Ввод начальных остатков). - 🔄 Перепроведите документы за текущий период (
Операции → Закрытие месяца → Перепроведение документов). - 📊 Восстановите удаленные документы из резервной копии или введите их заново.
Таблица: Типичные ошибки и их причины
| Ошибка | Вероятная причина | Решение |
|---|---|---|
Ошибка блокировки |
Другие пользователи работают с базой во время очистки. | Запустите очистку в монопольном режиме (Конфигуратор → Администрирование → Монопольный режим). |
Не найден объект метаданных |
Удален документ, на который ссылается конфигурация. | Восстановите конфигурацию из резервной копии или обновите ее. |
Ошибка СУБД: нарушение ограничения |
Нарушена целостность данных в SQL-таблицах. | Выполните Тестирование и исправление через конфигуратор. |
Недостаточно памяти |
Слишком большой объем удаляемых данных. | Разбейте очистку на части (например, по периодам). |
Если после очистки база ведет себя нестабильно, первым делом проверьте журнал регистрации (Администрирование → Журнал регистрации). Часто там содержатся подробности об ошибках, которые не выводятся на экран.
Как автоматизировать очистку удаленных документов
Ручная очистка — трудоемкий процесс, особенно для крупных баз. Чтобы сэкономить время, можно настроить автоматическую очистку по расписанию.
Способ 1: Регламентное задание в 1С
Многие конфигурации поддерживают регламентные задания, которые выполняются по расписанию. Например, в 1С:Бухгалтерия 3.0:
- Откройте
Администрирование → Регламентные задания. - Создайте новое задание с типом
Очистка данных. - Настройте расписание (например, раз в месяц в 3:00 ночи).
- Укажите параметры очистки (типы документов, период и т.д.).
Способ 2: Скрипт на языке 1С + Планировщик Windows
Если регламентные задания недоступны, можно написать скрипт и запускать его через Планировщик задач Windows:
// Файл Cleanup.epf
ПодключитьОбработку("ОчисткаПомеченныхОбъектов.epf");
Очистка = Новый ОчисткаПомеченныхОбъектов();
Очистка.ВыполнитьОчистку(Истина); // Истина - очищать все типы документов
Далее:
- Сохраните файл как
Cleanup.epf. - Создайте задачу в Планировщике задач Windows, которая будет запускать 1С с ключом:
C:\Program Files\1cv8\8.3.20.1500\bin\1cv8.exe DESIGNER /F "C:\Bases\YourBase" /N "Admin" /P "Password" /Execute "C:\Scripts\Cleanup.epf" - Настройте расписание (например, еженедельно в выходные).
Способ 3: Использование 1С:Сервер задач
Для клиент-серверных баз можно настроить автоматическую очистку через 1С:Сервер задач:
- 📌 На сервере 1С создайте задачу с типом
Выполнение кода. - 📌 Укажите код очистки (аналогично Способу 2).
- 📌 Настройте расписание и права доступа.
Рекомендации по автоматизации:
- 🕒 Выбирайте оптимальное время — очистку лучше выполнять в период минимальной нагрузки (ночью или в выходные).
- 📡 Настройте уведомления — чтобы администратор получал письмо с результатом выполнения (например, через
Попытка РазослатьОповещения()). - 📊 Ведите журнал — фиксируйте дату, время и количество удаленных объектов для анализа.
FAQ: Частые вопросы по очистке удаленных документов
Можно ли очистить удаленные документы без резервной копии?
Технически да, но это крайне рискованно. Без резервной копии вы не сможете восстановить данные, если:
- 🔗 Окажется, что на удаленные документы ссылались другие объекты (например, отчеты или регистры).
- 📉 В базе были ошибки ссылочной целостности, которые проявятся только после очистки.
- 🔄 Потребуется откат к предыдущему состоянию (например, после неудачного обновления конфигурации).
Минимальный безопасный вариант — создать точку восстановления через Конфигуратор → Администрирование → Выгрузить информационную базу.
Сколько времени занимает очистка базы?
Время зависит от:
- 📊 Объема данных — очистка 1000 документов займет несколько секунд, а 100 000 — часы.
- 🖥️ Производительности сервера —