Администрирование · 10 мин
Как в 1С пометить все документы на удаление
Как пометить на удаление все документы в 1С 8.3: ручная пометка, групповая обработка, удаление помеченных объектов, права, типичные ошибки и проверка результата.
Пометка на удаление в 1С — это первый этап безопасного удаления данных: документ не исчезает из базы сразу, а лишь получает специальный признак. Это позволяет проверить ссылки на объект и отменить ошибочное действие до физического удаления. Задача «пометить все документы» возникает при очистке тестовой базы, подготовке копии для обучения, свёртке старых периодов или перед загрузкой актуальных данных из другой системы.
Важно понимать: пометка на удаление не освобождает место в базе и не разрывает связи между объектами. Проведённые документы сначала нужно отменить (сделать непроведёнными), и только после этого их можно пометить. Физическое удаление выполняется отдельной операцией — через «Удаление помеченных объектов» с контролем ссылочной целостности.
Ниже разобраны все рабочие способы: ручная пометка, групповая обработка через стандартные средства, пометка через код для разработчиков, а также ограничения по правам и типичные ошибки, из-за которых документы «не удаляются».
Подготовка: что проверить перед массовой пометкой
Массовая пометка документов — операция, которую сложно отменить, если объём большой. Перед началом сделайте резервную копию базы: для файлового варианта достаточно скопировать файл 1Cv8.1CD при закрытых сеансах, для клиент-серверного — выполнить выгрузку в .dt через конфигуратор или средствами СУБД.
Убедитесь, что у вашей учётной записи есть права на интерактивную пометку удаления и на отмену проведения документов. В типовых конфигурациях эти права есть у ролей «Полные права» и «Администратор системы», а у рядовых пользователей часто настроены ограничения. Если кнопка пометки неактивна — проблема почти всегда в правах.
Определите, что именно нужно пометить: все документы вообще, документы одного вида или документы за период. От этого зависит выбор инструмента. Также проверьте, не включён ли обмен данными (РИБ, синхронизация с другими программами): пометки на удаление могут передаваться в другие узлы или, наоборот, блокироваться настройками обмена.
Ручная пометка документов в журнале
Самый простой способ подходит, когда нужно пометить документы одного вида. Откройте журнал документов (например, «Продажи → Реализация (акты, накладные)» в 1С:Бухгалтерии или соответствующий журнал в другой конфигурации). Выделите все записи сочетанием Ctrl+A или выделите нужный диапазон с зажатой клавишей Shift.
Если документы проведены, сначала отмените проведение: правый клик по выделенным строкам → «Отменить проведение». Затем нажмите Delete или выберите в контекстном меню «Пометить на удаление / Снять пометку». Программа пометит все выделенные объекты.
У ручного способа есть ограничение: журнал может отображать документы с отбором по периоду или организации. Проверьте настройки отбора, иначе пометите только видимую часть данных. Для журналов с десятками тысяч записей выделение и обработка могут занять заметное время — не прерывайте операцию.
- 1Откройте журнал нужного вида документов и снимите лишние отборы
- 2Выделите все записи клавишами Ctrl+A
- 3Отмените проведение выделенных документов через контекстное меню
- 4Нажмите Delete и подтвердите пометку на удаление
- 5Проверьте, что у всех записей появился значок пометки
Групповая пометка через «Групповое изменение реквизитов»
В типовых конфигурациях на БСП (Библиотека стандартных подсистем) есть обработка «Групповое изменение реквизитов»: «Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов». Она позволяет массово устанавливать пометку удаления для любых видов документов с гибкими отборами.
Выберите в обработке тип объектов — нужный вид документов, задайте отбор (по периоду, организации, контрагенту или без отбора для всех документов). В списке реквизитов найдите служебный реквизит «Пометка удаления» и установите значение «Истина». Нажмите «Изменить реквизиты» и дождитесь окончания обработки.
Обратите внимание: обработка устанавливает пометку напрямую, минуя часть интерактивных проверок, но проведённые документы она, как правило, не отменяет автоматически. Поэтому сначала тем же инструментом или вручную отмените проведение, либо используйте сценарий с отменой проведения, если он предусмотрен в вашей версии конфигурации.
Пометка всех документов через код (для разработчиков и администраторов)
Когда нужно пометить действительно все документы всех видов — например, при очистке тестовой копии — быстрее выполнить обработку на встроенном языке. Код можно запустить через внешнюю обработку или консоль кода.
Для Каждого ВидДокумента Из Метаданные.Документы Цикл
Выборка = Документы[ВидДокумента.Имя].Выбрать();
Пока Выборка.Следующий() Цикл
ДокОбъект = Выборка.ПолучитьОбъект();
Если ДокОбъект.Проведен Тогда
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЕсли;
ДокОбъект.УстановитьПометкуУдаления(Истина);
КонецЦикла;
КонецЦикла;
Метод УстановитьПометкуУдаления() корректно отрабатывает и для проведённых документов: при установке пометки он автоматически отменяет проведение. Тем не менее явная отмена проведения в коде делает логику прозрачнее и упрощает отладку.
Для больших баз выполняйте обработку порциями по видам документов и контролируйте журнал регистрации. На клиент-серверной базе желательно запускать код в монопольном режиме или вне рабочего времени, чтобы не мешать пользователям и не получить блокировки.
ДокОбъект.УстановитьПометкуУдаления(Истина);Физическое удаление помеченных документов
После пометки документы остаются в базе. Чтобы удалить их окончательно, откройте «Администрирование → Обслуживание → Удаление помеченных объектов» (в некоторых конфигурациях — «Операции → Удаление помеченных объектов»). Выберите режим «Автоматическое удаление всех помеченных объектов» или выборочное удаление.
Программа выполнит контроль ссылочной целостности: если на помеченный документ ссылаются другие объекты (например, документ указан в основании другого документа или в движениях), он не будет удалён, а появится в списке проблемных. Такие ссылки нужно разорвать вручную — очистить реквизиты-ссылки или пометить на удаление и ссылающиеся объекты.
Для файловых баз после удаления большого объёма данных имеет смысл выполнить «Тестирование и исправление» с реиндексацией или сжатие базы — физический размер файла сам по себе не уменьшается.
Как проверить результат
Все документы имеют значок пометки или журналы пусты после удаления
Часть документов осталась проведённой или без пометки
Список неудалённых объектов пуст
Есть объекты с неразорванными ссылками
Нет ошибок записи и блокировок за период операции
Ошибки конфликта блокировок, отказы в доступе
Ограничения и частые ошибки
Главная причина, по которой «документы не удаляются», — недостаток прав. Проверьте права на интерактивную пометку удаления, отмену проведения и удаление помеченных объектов. Второе место занимают даты запрета изменения данных: если установлена дата запрета редактирования, документы закрытого периода не удастся ни отменить, ни пометить — сначала сдвиньте или снимите запрет в разделе «Администрирование → Поддержка и обслуживание → Даты запрета изменения данных».
Третья группа проблем — обмены данными. В узлах РИБ пометка удаления регистрируется к выгрузке и распространяется на другие базы; если это нежелательно, сначала отключите регистрацию изменений или выполните операцию во всех узлах согласованно. Также помните, что удаление документов нарушает последовательность проведения оставшихся документов — после массовой очистки части данных может потребоваться перепроведение.
Частые вопросы
Можно ли отменить пометку на удаление сразу для всех документов?
Да. Выделите помеченные документы в журнале и снова нажмите Delete — пометка снимется. Для массового снятия по нескольким видам документов используйте «Групповое изменение реквизитов», установив «Пометка удаления» = Ложь, либо код с УстановитьПометкуУдаления(Ложь). До момента физического удаления операция полностью обратима.
Почему кнопка «Пометить на удаление» неактивна?
Чаще всего не хватает прав: нужны права на интерактивную пометку удаления для конкретного вида документов. Также проверьте, не установлена ли дата запрета изменения данных и не находится ли документ в проведённом состоянии — проведённый документ сначала нужно отменить.
Удалятся ли движения по регистрам при пометке документа?
Да. При отмене проведения (в том числе автоматической при установке пометки) все движения документа по регистрам удаляются. Остатки и обороты пересчитаются без учёта этого документа, поэтому после массовой пометки отчёты изменятся.
Чем пометка на удаление отличается от удаления помеченных объектов?
Пометка — это лишь признак: объект остаётся в базе, его можно восстановить, на него сохраняются ссылки. Удаление помеченных объектов — физическое стирание записей из базы с контролем ссылочной целостности; после него восстановить данные можно только из резервной копии.
Как пометить документы только за определённый период?
В журнале установите отбор по периоду и выделите видимые записи. Более надёжный способ — обработка «Групповое изменение реквизитов» с отбором по дате документа: она гарантированно обработает все документы, попадающие под условие, а не только отображённые в журнале.
Что важно запомнить
Перед массовой пометкой сделайте резервную копию, отмените проведение документов и проверьте права и дату запрета. Пометить документы можно вручную в журнале, через «Групповое изменение реквизитов» или кодом с УстановитьПометкуУдаления(Истина). Завершите очистку операцией «Удаление помеченных объектов» и проверьте список неудалённых из-за ссылок объектов.