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