Окончательная очистка базы 1С 8.3 от помеченных документов и справочников
Содержание
Чтобы удалить помеченные объекты
в 1С 8.3, откройте обработку «Удаление помеченных объектов»: в БП 3.0 и ЗУП 3.1 — Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов, в УТ 11 — НСИ и администрирование → Администрирование → Обслуживание. Запустите удаление, дождитесь проверки ссылок и разберите список того, что программа удалить не смогла.
В любой конфигурации на платформе 1С 8 есть и запасной вход: Главное меню → Все функции → Стандартные → Удаление помеченных объектов. Он нужен, когда в разделах команды нет или конфигурация нетиповая.
Что происходит с объектом после нажатия Del
Удаление в 1С 8 двухэтапное. Кнопка Del в списке ничего не стирает: она ставит пометку на удаление. Строка становится перечёркнутой, объект остаётся в базе.
Что меняет пометка:
- 📄 проведённый документ теряет проведение — его движения по регистрам исчезают сразу, и отчёты это уже видят;
- 📚 элемент справочника остаётся выбираемым в старых документах, но в новых при выборе программа предупредит о пометке;
- 🔁 пометку можно снять тем же
Delна перечёркнутой строке — никаких последствий.
Физически объект исчезает только при запуске обработки. Она собирает все помеченные ссылки, ищет, где на них ссылаются другие данные, и удаляет лишь «свободные». Так база защищена от ситуации, когда в документе вместо контрагента стоит <Объект не найден>.
Если помеченных объектов не видно в списке, проверьте настройку отображения: в меню Ещё списка есть команда показа помеченных на удаление. Её отключают, чтобы не мешали, — и потом забывают, сколько «мусора» накопилось.
Удаление помеченных объектов из пользовательского режима
Перед запуском сделайте резервную копию. Удалённый объект вернуть нельзя ничем, кроме восстановления базы из копии. Для файловой базы хватит выгрузки .dt из Конфигуратора или копии каталога с файлом 1Cv8.1CD, для серверной — бэкапа средствами СУБД.
Где найти обработку
| Конфигурация | Путь в интерфейсе «Такси» |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов |
| ЗУП 3.1 | Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов |
| Управление торговлей 11 | НСИ и администрирование → Администрирование → Обслуживание → Корректировка данных |
| Любая на платформе 8.3 | Все функции → Стандартные → Удаление помеченных объектов |
Если пункта «Все функции» в главном меню нет, включите его: Главное меню → Сервис → Параметры → Отображать команду «Все функции».
Порядок запуска
- Попросите коллег завершить работу с документами, которые вы чистите. Объект, открытый у кого-то на редактирование, удалить не получится.
- Откройте обработку. Типовые конфигурации предлагают два режима: удалить всё помеченное разом или отметить объекты вручную. Для первой чистки выбирайте выборочный режим — так видно, что именно уйдёт.
- В выборочном режиме снимите флажки с объектов, которые пока нужны, например с договора, по которому ещё будет спор.
- Нажмите кнопку удаления. Программа ищет ссылки по всей базе — на базе в 20–30 ГБ это может занять десятки минут.
- Откройте итоговый список. Удалённые объекты пропали, оставшиеся показаны вместе с местами, где на них ссылаются.
В типовых конфигурациях на БСП обработка выполняется фоновым заданием на сервере. Окно можно свернуть и работать дальше; закрытие окна не всегда останавливает задание.
Удаление по расписанию
В форме обработки типовых конфигураций есть настройка регулярного удаления: программа сама чистит помеченное, например раз в неделю ночью. Включайте её осознанно. Пользователь пометил объект по ошибке в пятницу — в понедельник объекта уже нет, и снять пометку поздно.
Права и монопольный режим: почему обработка не запускается
Рядовой бухгалтер обычно может только помечать. Окончательное удаление в типовых конфигурациях доступно администратору или пользователю, которому дали это право в группе доступа.
Что проверить, если команды нет или она выдаёт отказ:
- 🔑 Профиль группы доступа. В
Администрирование → Настройки пользователей и прав → Группы доступапосмотрите, какой профиль у пользователя. Удаление помеченных входит в администраторские профили; в нетиповых ролях право может быть не выдано. - 🧩 Право в роли. В Конфигураторе у ролей есть право «Интерактивное удаление помеченных» на каждый объект метаданных. Нетиповая роль без этого права не даст удалить объекты этого вида из стандартной обработки.
- 🔒 Блокировка открытого объекта. Если документ открыт и изменён у другого пользователя, удаление этого документа пропустится.
Монопольный режим для удаления помеченных не обязателен: обработка работает и при подключённых пользователях. Но на время проверки ссылок база должна «стоять»: пока программа ищет ссылки, коллега может выбрать помеченный элемент в новом документе. Поэтому крупную чистку проводят вечером или в выходной.
Чтобы выгнать всех пользователей принудительно, в типовых конфигурациях есть Администрирование → Обслуживание → Блокировка работы пользователей. Несохранённые данные у коллег пропадут — предупредите их заранее и назначьте время.
Почему часть объектов не удаляется и как разобрать список
Главная причина одна: на объект ссылаются. Обработка не удалит контрагента, если он указан хотя бы в одном живом документе, записи регистра или настройке.
Типичные «держатели» ссылок:
- 📄 непомеченный документ, где объект указан в шапке или в табличной части;
- 📊 запись регистра сведений — например, цены номенклатуры или сведения о сотруднике;
- 🏷️ другой справочник: договор держит контрагента, номенклатура держит единицу измерения;
- ⚙️ константы и настройки — организация по умолчанию, основной склад у пользователя;
- 📅 документ в закрытом периоде: если установлена дата запрета изменения, удаление документа за этот период может быть запрещено.
Если ссылающийся объект тоже помечен, обработка удалит оба за один проход. Цепочки вида «документ → договор → контрагент» распадаются целиком, когда помечены все звенья.
Как работать с оставшимися
В списке неудалённых раскройте объект — под ним видно, кто на него ссылается. Дальше по каждому решайте:
- Ссылка случайная (контрагент-дубль в одном документе) — откройте документ, замените значение на правильное, сохраните.
- Ссылающийся документ тоже не нужен — пометьте его на удаление и запустите обработку повторно.
- Объект на самом деле нужен — снимите с него пометку.
Для массовой замены дублей удобнее типовая обработка поиска и удаления дублей или замены ссылок (в БП 3.0 — в той же группе Корректировка данных). Она переставляет все ссылки со старого элемента на новый и после этого удаляет старый.
Удаление через Конфигуратор и средствами кода
Отдельной команды «удалить помеченные» в Конфигураторе нет. Из него удобно запустить базу в пользовательском режиме под администратором, но сама чистка всё равно идёт обработкой.
Тестирование и исправление: когда помогает
Администрирование → Тестирование и исправление в Конфигураторе удаляет не помеченное, а последствия неаккуратного удаления. Если раньше объекты стирали кодом без контроля, в документах остались битые ссылки. Флажок «Проверка ссылочной целостности информационной базы» находит их и предлагает варианты:
- создавать объекты-заглушки — данные в документах сохранятся, потом заглушки можно заменить;
- удалять ссылки — поле в документе просто очистится;
- не изменять — только отчёт.
Для этой проверки нужен монопольный режим: все пользователи должны выйти из базы. Перед тестированием с исправлением — обязательная резервная копия. Вариант «удалять ссылки» необратим и может опустошить реквизиты в сотнях документов.
Программное удаление с контролем ссылок
Если стандартная обработка недоступна (урезанная нетиповая конфигурация), удаление можно выполнить кодом в серверной процедуре внешней обработки. Платформа даёт два метода: НайтиПомеченныеНаУдаление() и УдалитьОбъекты() с контролем ссылок.
&НаСервереБезКонтекста
Процедура УдалитьПомеченныеНаСервере()
Помеченные = НайтиПомеченныеНаУдаление();
НайденныеСсылки = Неопределено;
// Второй параметр Истина — контроль ссылочной целостности:
// объекты, на которые есть ссылки, удалены не будут
УдалитьОбъекты(Помеченные, Истина, НайденныеСсылки);
Если ЗначениеЗаполнено(НайденныеСсылки) Тогда
Для Каждого Строка Из НайденныеСсылки Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("Не удалён: %1 — ссылается %2",
Строка.Ссылка, Строка.Данные);
Сообщение.Сообщить();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Никогда не заменяйте этот подход вызовом Объект.Удалить() в цикле по помеченным. Он стирает объект без проверки ссылок и оставляет в базе битые ссылки — потом их приходится лечить тестированием и исправлением.
Чистка серверной базы на SQL: что учесть администратору
В клиент-серверном варианте механизм тот же, но нагрузка ложится на сервер СУБД. Поиск ссылок — это чтение почти всех таблиц базы, а удаление — запись в одной большой транзакции на порцию объектов.
Что спланировать заранее:
- ⏰ Окно обслуживания. Удаление тысяч документов идёт часами и держит блокировки — во время работы бухгалтерии сеансы начнут ждать друг друга.
- 💾 Журнал транзакций. При полной модели восстановления в MS SQL журнал может вырасти на гигабайты. Проверьте свободное место на диске с журналом и после чистки сделайте резервную копию журнала.
- 🧮 Порции. Вместо удаления 50 000 объектов за раз отмечайте в выборочном режиме по несколько тысяч. Ошибка в середине откатит только текущую порцию.
- 📏 Размер файлов. После удаления файлы базы не уменьшаются сами: место освобождается внутри и используется под новые данные. Сжатие файлов — отдельная операция администратора СУБД, без нужды её не делают.
Не удаляйте записи прямыми SQL-запросами к таблицам 1С. Имена таблиц вида _Document123 и _Reference45 ничего не говорят о связях. Запрос удалит строку документа, но оставит движения в регистрах и ссылки в других таблицах. Итог — расхождения в отчётах и долгий разбор.
Для файловой базы аналог «сжатия» — флажок «Сжатие таблиц информационной базы» в тестировании и исправлении. После большой чистки он заметно уменьшает файл 1Cv8.1CD.
Как не накапливать помеченный мусор
Чем дольше помеченное лежит в базе, тем больше вокруг него ссылок и тем труднее чистка.
- 🗓️ Удаляйте помеченное регулярно — раз в месяц после закрытия периода, когда документы прошлого месяца уже не меняются.
- 👤 Назначьте ответственного: один человек удаляет, остальные только помечают.
- 🔍 Перед удалением документов прошлых периодов сверьте сальдо или ключевые отчёты: отменённое пометкой проведение уже изменило итоги, и лучше заметить это до окончательного удаления.
- 🧹 Дубли справочников не помечайте вручную по одному — объединяйте обработкой поиска дублей, она сама перенесёт ссылки.