Чистка базы от помеченных объектов: обработка, расписание, код и проверка после
Содержание
Чтобы удалить помеченные на удаление объекты в 1С 8.3, откройте Администрирование → Обслуживание и в группе «Корректировка данных» запустите «Удаление помеченных объектов». Обработка найдёт всё, на чём стоит пометка, проверит ссылки и удалит только то, что нигде не используется. Остальное покажет списком с местами использования.
Пометка удаления сама по себе ничего не стирает: документ или элемент справочника остаётся в базе, просто перечёркнут красным крестом. Физически запись исчезает только после запуска обработки. Это защита от потери данных: пока на объект ссылается хоть один документ, база его не отдаст.
Что даёт пометка и зачем чистить базу
Когда пользователь нажимает Delete в списке документов или справочника, 1С ставит пометку удаления. Если документ был проведён, проведение отменяется и его движения по регистрам пропадают. Сам документ можно открыть, снять с него пометку и провести снова.
Помеченные объекты со временем копятся. Причины чистить их регулярно:
- 🗂 Мусор в выборе. Помеченные элементы справочников попадают в списки и поиск, пользователи путают «Иванов ИП» живой и удалённый.
- 📈 Размер базы. Тысячи брошенных черновиков и дублей занимают место и замедляют выгрузку, резервное копирование и обновление.
- 🔍 Путаница в отчётах. Отчёты не учитывают непроведённые документы, но в журналах и списках они висят и сбивают с толку.
- 🔁 Обмены. Помеченные объекты могут уходить в обмены с другими базами и тащить за собой лишнее.
Удаление необратимо. Корзины в 1С нет: объект, удалённый обработкой, вернуть можно только из резервной копии.
Резервная копия перед удалением помеченных
Перед удалением сделайте резервную копию базы . Это единственный способ откатить ошибку, если обработка снесёт то, что кто-то пометил случайно.
Варианты копии:
| Способ | Где делается | Когда подходит |
|---|---|---|
Выгрузка в .dt | Конфигуратор → Администрирование → Выгрузить информационную базу | Любая база, универсальный вариант |
| Копия каталога | Проводник: папка с файлом 1Cv8.1CD | Файловая база, все пользователи вышли |
| Резервная копия СУБД | Средства MS SQL или PostgreSQL | Клиент-серверная база |
| Встроенная копия | Администрирование → Обслуживание → Резервное копирование и восстановление | Файловая база в типовых конфигурациях |
Выгрузка в .dt требует, чтобы в базе никто не работал. Для файловой базы копия папки надёжна только при закрытых сеансах: файл, скопированный во время записи, может оказаться повреждённым.
Перед большой чисткой выгрузите список помеченных объектов. Откройте обработку, дождитесь поиска и скопируйте таблицу в Excel. Если через неделю бухгалтер спросит, куда делся документ, ответ будет на руках.
Как удалить помеченные на удаление объекты в 1С 8.3 штатной обработкой
Шаг 1. Откройте обработку
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) обработка открывается из раздела администрирования. Точный путь по конфигурациям — в следующем разделе.
Альтернативный путь, общий для платформы: Главное меню → Все функции → Стандартные → Удаление помеченных объектов. Если пункта «Все функции» нет, включите его: Главное меню → Сервис и настройки → Параметры, флажок «Отображать команду “Все функции”».
Нужны права администратора или роль с правом интерактивного удаления помеченных. У обычного бухгалтера команды не будет, и это нормально.
Шаг 2. Выберите режим
Обработка предлагает два варианта:
- Автоматическое удаление всех помеченных. Программа сама найдёт все объекты с пометкой и удалит те, на которые нет ссылок. Подходит для регулярной чистки.
- Выборочное удаление. Сначала строится дерево помеченных объектов по типам: справочники, документы, планы видов характеристик. Вы снимаете галочки с того, что трогать не надо, и удаляете остальное.
Выборочный режим полезен, когда вы не уверены во всех пометках. Например, можно удалить только старые документы «Счёт на оплату», не трогая справочник номенклатуры.
Шаг 3. Запустите и дождитесь проверки
После нажатия кнопки удаления обработка для каждого объекта ищет ссылки во всей базе. В небольшой базе это минуты. В базе на десятки гигабайт с тысячами помеченных объектов поиск может идти часы.
Монопольный режим для штатной обработки не обязателен, пользователи могут работать. Но проверка ссылок нагружает сервер, а объекты, которые кто-то держит открытыми, удалить не получится. Большую чистку запускайте вечером или в выходной.
Шаг 4. Разберите то, что не удалилось
Объекты, на которые есть ссылки, останутся в базе. Обработка покажет их отдельным списком и для каждого — места использования: какой документ, справочник или регистр ссылается на него.
Как поступить с неудалённым объектом:
- ✅ Ссылается тоже мусор. Пометьте на удаление ссылающийся документ и запустите обработку повторно. Объекты, которые ссылаются только друг на друга и оба помечены, обработка обычно удаляет за один проход.
- 🔄 Ссылается живой документ. Откройте его и замените значение реквизита на правильное. Например, в реализации стоит помеченный контрагент-дубль — выберите основного контрагента.
- 🧩 Дубли справочника. Если ссылок сотни, менять вручную долго. В типовых конфигурациях есть обработка «Поиск и удаление дублей»: она заменяет ссылки на дубль ссылками на оригинал во всех документах сразу.
- ↩️ Пометка лишняя. Если объект нужен, снимите с него пометку той же клавишей
Deleteв списке.
Где найти удаление помеченных в разных конфигурациях
Обработка одна и та же, отличаются только названия разделов.
| Конфигурация | Путь к обработке |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Обслуживание → Удаление помеченных объектов |
| ЗУП 3.1 | Администрирование → Обслуживание → Удаление помеченных объектов |
| Управление торговлей 11 | НСИ и администрирование → Администрирование → Обслуживание → Удаление помеченных объектов |
| Любая конфигурация | Главное меню → Все функции → Стандартные → Удаление помеченных объектов |
В разделе «Обслуживание» команда находится в группе «Корректировка данных». Если группа свёрнута, разверните её щелчком по заголовку.
В ЗУП есть своя тонкость. Помеченный кадровый документ часто оказывается «основанием» для последующих: приёма для перевода, начисления для выплаты. Обработка их не удалит, пока помечена только часть цепочки. Удаляйте цепочку с конца: сначала ведомость, затем начисление, затем кадровый документ.
Удаление помеченных по расписанию и программным кодом
Регламентное задание
В конфигурациях на БСП удаление можно поручить регламентному заданию «Удаление помеченных объектов». Включение и расписание настраиваются в форме самой обработки или через Администрирование → Обслуживание → Регламентные и фоновые задания.
Ставьте расписание на ночь, например на 02:00 по воскресеньям. В клиент-серверной базе задание выполняется на сервере 1С, в файловой — только когда открыт хотя бы один сеанс и запуск регламентных заданий в нём разрешён.
Автоматическое удаление по расписанию означает, что любая случайная пометка исчезнет без подтверждения. Включайте его, только если пользователи привыкли к тому, что Delete — это «скоро удалится навсегда», и резервные копии делаются регулярно.
Свой код во внешней обработке
Скрипт нужен, когда надо удалить помеченные объекты одного вида по своему условию: например, только счета на оплату. Ниже — пример серверной процедуры для внешней обработки. Она удаляет помеченные документы «Счёт на оплату покупателю» без ссылок и считает пропущенные.
&НаСервере
Процедура УдалитьПомеченныеСчетаНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Док.Ссылка КАК Ссылка
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК Док
|ГДЕ
| Док.ПометкаУдаления";
Кандидаты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Если Кандидаты.Количество() = 0 Тогда
Сообщить("Помеченных документов нет");
Возврат;
КонецЕсли;
// Таблица со ссылками на кандидатов из любых данных базы
НайденныеСсылки = НайтиПоСсылкам(Кандидаты);
Занятые = Новый Соответствие;
Для Каждого Строка Из НайденныеСсылки Цикл
Если Строка.Ссылка <> Строка.Данные Тогда
Занятые.Вставить(Строка.Ссылка, Истина);
КонецЕсли;
КонецЦикла;
Удалено = 0;
Ошибок = 0;
Для Каждого Ссылка Из Кандидаты Цикл
Если Занятые[Ссылка] <> Неопределено Тогда
Продолжить;
КонецЕсли;
Попытка
Ссылка.ПолучитьОбъект().Удалить();
Удалено = Удалено + 1;
Исключение
Ошибок = Ошибок + 1;
КонецПопытки;
КонецЦикла;
Сообщить(СтрШаблон("Удалено: %1. Пропущено из-за ссылок: %2. Ошибок: %3",
Удалено, Занятые.Количество(), Ошибок));
КонецПроцедуры
Как это работает:
- Запрос выбирает только документы с пометкой удаления.
НайтиПоСсылкам()ищет, где эти документы используются. Строки, где объект ссылается сам на себя, пропускаются.- Метод
Удалить()у объекта стирает запись без контроля ссылок. Поэтому проверка из шага 2 обязательна.
Без проверки ссылок код оставит в базе «битые» ссылки — реквизиты, которые указывают на несуществующий объект. В формах они видны как <Объект не найден> с длинным идентификатором.
Перед запуском на рабочей базе прогоните обработку на копии. Имя документа в запросе подставьте своё: посмотреть его можно в конфигураторе или в адресной строке формы списка.
chdbfl.exe и тестирование базы после чистки
Утилиту chdbfl.exe часто называют способом «почистить базу
», но помеченные объекты она не удаляет. Это проверка физической целостности файла 1Cv8.1CD файловой базы. Она лежит в каталоге платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\chdbfl.exe (номер версии у вас свой).
Когда она нужна в контексте удаления:
- 💥 удаление прервалось из-за сбоя, отключения питания или зависания, и база перестала открываться;
- ⚠️ при чистке появились ошибки чтения файла базы, а не сообщения о ссылках.
Порядок работы:
- Закройте все сеансы: файл базы должен быть свободен.
- Сделайте копию папки базы.
- Запустите
chdbfl.exe, укажите путь к1Cv8.1CD. - Сначала проверьте без флажка «Исправлять обнаруженные ошибки», посмотрите отчёт.
- Если ошибки есть — запустите повторно с исправлением.
Для клиент-серверной базы chdbfl.exe не применяется: физическую целостность там проверяют средства СУБД.
Тестирование и исправление в конфигураторе
Логические ошибки проверяет Конфигуратор → Администрирование → Тестирование и исправление. После удаления оно полезно в двух случаях:
- 🔗 если объекты удаляли кодом и в документах остались ссылки на несуществующие объекты. Для них в настройках есть варианты: создавать объекты-заглушки, очищать ссылки или не изменять;
- 📦 если нужно уменьшить размер файловой базы.
Второй пункт важен. После удаления файл 1Cv8.1CD не уменьшается сам: место внутри освобождается, но размер на диске тот же. Чтобы его сжать, включите в тестировании флажок «Сжатие таблиц информационной базы» или выгрузите базу в .dt и загрузите обратно.
Тестирование и исправление требует монопольного режима. Все пользователи должны выйти из базы, иначе запуск не состоится. Предупредите людей заранее и делайте это вне рабочего времени.
Частые ошибки при чистке помеченных
- ❌ Удалить, не посмотрев список. Пометку ставят случайно: промахнулись строкой и нажали
Delete. Автоматический режим удалит такой документ без вопросов. Перед первой чисткой посмотрите список в выборочном режиме. - ❌ Чистить в разгар отчётного периода. Удалённые документы прошлых месяцев меняют обороты, а значит и сданную отчётность. Документы закрытых периодов удаляйте только по согласованию.
- ❌ Удалять в одной базе обмена. Если база обменивается данными с другой (например, ЗУП с Бухгалтерией), удаление в одной не всегда переносится в другую. Сначала проверьте, какие объекты участвуют в обмене.
- ❌ Ждать уменьшения файла без сжатия. Размер
1Cv8.1CDпосле чистки не меняется, пока не сделано сжатие или перезагрузка через.dt. - ❌ Удалять кодом без
НайтиПоСсылкам. Быстрее, но после этого в базе остаются битые ссылки, которые потом приходится лечить тестированием.