Удаление помеченных на удаление объектов в 1С 8.3
Содержание
Пометка на удаление сама по себе ничего не удаляет. Документ или элемент справочника с красным крестиком остаётся в базе, участвует в поиске ссылок и занимает место — он просто ждёт физического удаления. Чтобы объекты действительно исчезли, запускают отдельную обработку: в «Бухгалтерии 8.3», ЗУП и других управляемых конфигурациях это Администрирование → Обслуживание → Удаление помеченных объектов.
Операция всегда идёт в два этапа. Сначала платформа ищет ссылки на помеченные объекты, затем удаляет только те, на которые никто не ссылается. Если объект где-то используется, он останется в базе, а программа покажет, кто его держит. Ниже разберём пометку, стандартную и групповую чистку, программный вариант для регламентных заданий и разбор ситуаций, когда объект удалить не получается.
Что означает пометка на удаление
Пометка — это обратимый флаг «кандидат на удаление». Нажали Del на строке списка или выбрали в меню команду пометки — у объекта появился значок с красным крестом. Снять флаг так же просто: повторная команда «Снять пометку на удаление» возвращает объект в обычное состояние.
Почему нельзя удалять сразу, одной кнопкой:
- 📌 На объект могут ссылаться другие документы. Удалить его молча — значит получить «битые» ссылки и ошибки в отчётах.
- 📌 Пометка даёт время передумать. Пока физического удаления не было, всё восстановимо.
- 📌 Удаление — тяжёлая операция с проверкой целостности. Её логично делать пакетом, а не на каждый объект.
Отдельный момент с проведёнными документами. Когда вы помечаете на удаление проведённый документ, платформа предложит отменить его проведение — иначе в базе остались бы движения по регистрам от объекта, который готовится к удалению. Соглашайтесь: движения снимутся, остатки и обороты пересчитаются. Если пометку потом снять, документ придётся провести заново.
Помеченные объекты продолжают участвовать в работе базы: они видны в списках, доступны для выбора и попадают в поиск ссылок. Чтобы случайно не выбрать «кандидата на удаление» в новый документ, в большинстве списков есть настройка показа — через Ещё → Настроить список можно включить отбор, скрывающий помеченные строки.
Пока вы только помечаете объекты, данные в базе целы. Необратимым становится лишь физическое удаление помеченных — его и обсуждаем дальше.
Как запустить удаление помеченных объектов
Стандартный путь в «Бухгалтерии предприятия 3.0», ЗУП 3.1 и «Управлении торговлей 11» одинаков по смыслу, меню верхнего уровня совпадает:
- Откройте
Администрирование → Обслуживание → Удаление помеченных объектов. - Выберите режим.
Автоматическое удаление всех помеченных объектовчистит всё разом.Выборочное удалениедаёт отметить галочками только нужные объекты из списка помеченных. - Нажмите
Удалить. Платформа проверит ссылки и удалит то, что удалить можно. - Разберите итог. Удалённые объекты показываются отдельно, неудаляемые — отдельно, с перечнем мест, где на них ещё ссылаются.
Если команды в меню нет (урезанные права или нестандартная конфигурация), обработка доступна через механизм «Все функции»:
- Включите его один раз:
Главное меню → Сервис → Параметры→ галочкаОтображать команду «Все функции». - Затем
Главное меню → Все функции → Стандартные → Удаление помеченных объектов.
Запускайте чистку, когда в базе работает минимум пользователей. Физического удаления объектов монопольный режим в актуальных версиях платформы не требует, но пока идёт удаление, другие сеансы могут создавать новые ссылки на те же объекты — часть из них тогда не удалится. В файловой базе надёжнее выполнять операцию, когда вы в ней одни.
Перед первой массовой чисткой большой рабочей базы сделайте резервную копию. Восстановить одну копию проще, чем разбирать последствия ошибочной пометки на сотни документов.
На большой базе первый этап — поиск ссылок — идёт заметное время: платформа обходит все объекты, которые теоретически могут ссылаться на помеченные. Для тысяч объектов это десятки минут. Операцию можно прервать кнопкой Отмена — уже удалённое останется удалённым, недоделанное просто не выполнится, база при этом не повредится. Повторный запуск продолжит с теми объектами, что ещё помечены.
Чем именно полезно разбирать итог, а не только «удалить всё автоматически»: в автоматическом режиме неудаляемые объекты молча остаются в базе, и вы не всегда заметите, что половина помеченного так и не ушла. Выборочный режим с просмотром списка ссылок даёт полную картину.
Групповая пометка и удаление нескольких объектов
Чтобы не ходить по одному объекту, пометку ставят пачкой прямо в списке:
- Откройте список (например, журнал документов или справочник номенклатуры).
- Выделите нужные строки: с зажатым
Ctrl— вразнобой, сShift— диапазон. - Вызовите команду
Пометить на удаление / Снять пометкуиз командной панели списка или из контекстного меню по правой кнопке. - Подтвердите. У всех выделенных строк появится крестик.
Дальше — та же обработка Удаление помеченных объектов. В режиме выборочного удаления удобно отобрать именно эту группу: отсортируйте список помеченных по типу объекта или по дате и отметьте нужное.
Полезный приём для разовой большой уборки: сначала пройдите выборочным режимом и посмотрите, сколько объектов «застряло» на ссылках. Это покажет масштаб ручной работы ещё до того, как вы запустите автоматическое удаление.
Почему объект не удаляется
Главная причина одна: на помеченный объект ссылается другой объект, который на удаление не помечен. Платформа не станет рвать связь и оставит «кандидата» в базе. В отчёте обработки вы увидите строку вида «на объект есть ссылки» и список, где именно он используется.
Разберём типичные ситуации и что с ними делать.
Удобный инструмент для ручного разбора — команда Ещё → Связанные документы или отчёт по движениям: они показывают, какие документы и регистры держат объект. Ещё точнее работает стандартная команда поиска ссылок: открыв объект, через Ещё можно запросить список всех мест, где он используется, и переходить по ним прямо из результата. Разорвав последнюю ссылку, снова запускайте удаление — теперь объект уйдёт.
Самая частая ошибка здесь — пытаться удалить справочник, не трогая документы, которые на него ссылаются. Логика обратная: либо документы тоже на удаление, либо ссылку в них меняют на другой элемент. Пока хоть один непомеченный документ держит объект, обработка его не отпустит.
Программное удаление помеченных объектов
Раздел для тех, кто автоматизирует обслуживание. Сразу о главном: прямое удаление данных
через SQL в таблицах 1С не поддерживается и ломает базу. Платформа хранит объект сразу в нескольких таблицах, ведёт итоги регистров и контроль ссылок. DELETE в СУБД мимо платформы оставит висящие ссылки, разъедет итоги и приведёт к ошибкам, которые потом правят только из резервной копии. Консоль запросов для этого тоже не годится — язык запросов 1С умеет только читать данные, удалять им нельзя.
Правильный способ — встроенный язык. Платформа даёт два метода, которые вместе повторяют логику стандартной обработки:
// Собираем все помеченные на удаление объекты
МассивПомеченных = НайтиПомеченныеНаУдаление();
// Контролируемое удаление с проверкой ссылок
УдалитьОбъекты(МассивПомеченных);
НайтиПомеченныеНаУдаление() возвращает массив ссылок на все помеченные объекты. УдалитьОбъекты() удаляет их с той же проверкой целостности, что и стандартная обработка: объекты, на которые есть ссылки, останутся в базе. Этот код оформляют как внешнюю обработку
и запускают из Файл → Открыть.
Если нужно удалить объект, у которого вы заведомо убрали все ссылки, но платформа всё равно держит его из-за служебной связи, применяют Объект.Удалить() без контроля ссылок. Это небезопасно: метод удаляет молча, не проверяя, кто ссылается на объект. Используйте его только когда точно понимаете последствия.
Если нужно почистить не всё подряд, а помеченные объекты одного вида, массив фильтруют по типу ссылки перед удалением — например, оставляют только элементы конкретного справочника. Так регламентное задание не трогает документы, которые вы хотите разбирать вручную.
Нюанс по правам: программное удаление выполнится только у пользователя с правом на интерактивное или полное удаление соответствующих объектов. Под урезанной ролью УдалитьОбъекты вернёт объекты в список неудалённых. Поэтому регламентное задание запускают под служебной учётной записью с достаточными правами, а результат — сколько удалено и что осталось — логируют, иначе молчаливый отказ удаления останется незамеченным.
Автоматизация и регламентная чистка
В типовых конфигурациях физическое удаление помеченных объектов по расписанию обычно выключено: разработчики справедливо считают, что массовое удаление должен контролировать человек. Если базе всё же нужна регулярная чистка, её настраивают самостоятельно.
Схема такая:
- Оформите код из предыдущего раздела как внешнюю обработку с методом, вызываемым из регламентного задания.
- В конфигураторе (или в расширении, чтобы не снимать базу с поддержки) создайте регламентное задание со своим методом.
- Задайте расписание на период минимальной нагрузки — ночь или выходные.
- Для клиент-серверной базы регламентные задания выполняет сервер; проверьте, что их выполнение не отключено в консоли кластера.
Безопаснее не удалять автоматически, а раз в период запускать обработку в выборочном режиме вручную и смотреть на список застрявших по ссылкам объектов. Автоудаление уберёт только «чистые» объекты и так же молча оставит все спорные — а вы об этом не узнаете.
Чего в регламентной чистке делать не стоит:
- ❌ Не ставьте удаление помеченных объектов на дневное время — вырастет вероятность, что часть объектов не удалится из-за активности пользователей.
- ❌ Не комбинируйте автоудаление с автопометкой «старых» документов без ручной проверки: так легко пометить и снести нужное.
- ❌ Не трогайте таблицы базы напрямую никакими внешними SQL-скриптами.
Отличия в файловой и клиент-серверной базе
Сам порядок действий одинаков, но пара деталей зависит от типа базы.
| Что | Файловая база | Клиент-серверная база |
|---|---|---|
| Где выполняется обработка | В вашем клиентском сеансе | На сервере 1С |
| Удобное время | Когда вы в базе одни | Период низкой активности; монополия не нужна |
| Регламентные задания | Работают, пока открыт клиент | Выполняет сервер по расписанию |
| Освобождение места на диске | Не сразу; помогает реструктуризация | Зависит от обслуживания СУБД |
После большого удаления размер файловой базы 1Cv8.1CD сам не уменьшается — физически место освобождает Конфигуратор → Администрирование → Тестирование и исправление с включённым пунктом сжатия таблиц информационной базы. Эту операцию делают строго в монопольном режиме и после резервной копии.
В клиент-серверной базе размер на диске СУБД освобождается её собственными средствами обслуживания: перестроением и дефрагментацией индексов, обновлением статистики. Эти регламенты настраивает администратор СУБД, к удалению помеченных объектов в 1С они прямого отношения не имеют.
Частые вопросы
Можно ли восстановить физически удалённый объект?
Чем «пометить на удаление» отличается от «удалить непосредственно»?
Объект.Удалить() в коде или право «интерактивное удаление») стирает объект сразу и без проверки ссылок. В обычной работе пользуются именно пометкой и последующей обработкой.Удаление помеченных объектов требует монопольного режима?
Как массово снять пометку на удаление?
Ctrl или Shift) и вызовите ту же команду Пометить на удаление / Снять пометку — для уже помеченных объектов она снимает флаг. Отдельной «кнопки отмены всего» нет.Почему после удаления база не уменьшилась в размере?
Тестирование и исправление с реструктуризацией, для клиент-серверной — регламентные операции обслуживания на стороне СУБД (например, сжатие/перестроение индексов).