Администрирование · 10 мин
Как пометить все документы на удаление в 1С 7.7
Как пометить все документы на удаление в 1С 7.7: групповая обработка, обработка документов, контроль ссылок и удаление помеченных объектов.
Массовая пометка документов на удаление в 1С:Предприятии 7.7 — типовая задача при очистке тестовой базы, подготовке к свёртке или удалении ошибочно введённых данных за период. В отличие от современных версий платформы, в «семёрке» нет встроенной команды «пометить все документы», поэтому используются групповые обработки, встроенные механизмы журналов или программный код.
Пометка на удаление — это не физическое стирание записи, а установка специального признака. Документ остаётся в базе, продолжает участвовать в итогах до перепроведения и виден в журналах с соответствующей отметкой. Физическое удаление выполняется отдельной операцией в монопольном режиме, поэтому у пользователя всегда есть возможность отменить решение до окончательной очистки.
Главный риск массовой операции — нарушение ссылочной целостности: документы связаны между собой (накладная ссылается на счёт, платёжка — на договор), и удаление «верхних» объектов цепочки может оставить в базе битые ссылки. Поэтому перед массовой пометкой обязательно делается архивная копия, а после неё — контроль ссылочной целостности.
Подготовка: копия базы и монопольный доступ
Перед любой массовой операцией сделайте архивную копию информационной базы. Для файловой базы достаточно скопировать каталог базы (в первую очередь файлы .dbf, .cdx и файл 1Cv7.md) при закрытой программе. Альтернатива — выгрузка данных через конфигуратор: Администрирование → Выгрузить данные, которая создаёт файл выгрузки в формате zip.
Для физического удаления помеченных объектов потребуется монопольный доступ к базе: все пользователи должны выйти, а регламентные задания и обмены — остановлены. Сама пометка на удаление в групповой обработке обычно может выполняться и в разделённом режиме, но при больших объёмах монопольный режим работает заметно быстрее и исключает конфликты блокировок.
Способ 1: групповая обработка документов через меню Сервис
Стандартный путь — внешняя обработка групповой обработки справочников и документов. В большинстве типовых конфигураций она доступна через меню Сервис → Дополнительные возможности или подключается из каталога ExtForms. Если обработки нет, используется универсальная обработка «Групповая обработка справочников и документов» (файл с расширением .ert), которую открывают через Файл → Открыть.
Порядок работы в обработке: выберите тип объекта «Документы», укажите конкретный вид документа или перебирайте виды по очереди, задайте период (дату начала и окончания), выберите действие «Пометить на удаление» и запустите выполнение. Обработка пройдёт по всем документам выбранного вида за указанный период и установит пометку.
Ограничение способа — обработка работает по одному виду документов за проход. Если нужно пометить все виды документов, операцию повторяют для каждого вида либо используют программный способ. Отбор по периоду позволяет не трогать закрытые и свёрнутые периоды, за которые отчётность уже сдана.
- 1Сделайте архивную копию базы и проверьте, что она открывается
- 2Откройте обработку групповой обработки через Сервис или Файл → Открыть
- 3Выберите тип «Документы» и нужный вид документа
- 4Задайте период отбора и действие «Пометить на удаление»
- 5Запустите обработку и дождитесь сообщения о завершении
- 6Повторите для остальных видов документов при необходимости
Способ 2: пометка через журнал документов
Для небольших объёмов подходит ручная пометка прямо в журнале. Откройте общий журнал или журнал нужного вида документов, установите курсор на документ и нажмите клавишу Delete или кнопку пометки на удаление на панели инструментов. Программа запросит подтверждение и установит пометку; повторное нажатие снимает её.
В журнале можно выделять несколько строк с зажатой клавишей Shift или Ctrl и помечать выделенный блок. Это удобно, когда нужно удалить документы за конкретный день или узкий интервал, видимый на экране. Для тысяч документов способ не подходит — используйте обработку или код.
Обратите внимание на фильтры журнала: если установлен отбор по интервалу дат или по виду документов, вы видите не все документы базы. Перед массовой пометкой убедитесь, что границы отбора соответствуют задуманному, иначе часть документов останется необработанной или, наоборот, попадёт в выборку лишнее.
Способ 3: программная пометка всех документов
Самый быстрый способ пометить вообще все документы всех видов — выполнить небольшой программный фрагмент. Его можно оформить как внешнюю обработку (.ert) с процедурой в модуле формы и запустить через Файл → Открыть. Код перебирает все виды документов метаданных и каждый документ помечает на удаление.
Процедура Сформировать()
Для НомВид = 1 По Метаданные.Документ() Цикл
ВидДок = Метаданные.Документ(НомВид).Идентификатор;
Док = СоздатьОбъект("Документ." + ВидДок);
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
Док.УстановитьПометкуУдаления(1);
КонецЦикла;
КонецЦикла;
Сообщить("Пометка завершена");
КонецПроцедуры
Метод УстановитьПометкуУдаления(1) устанавливает пометку, а значение 0 — снимает её, поэтому тем же кодом можно отменить операцию, заменив параметр. Чтобы ограничить выборку периодом, используйте ВыбратьДокументы(НачДата, КонДата) с указанием дат. Перед запуском убедитесь, что код выполняется под пользователем с правами на изменение всех видов документов.
Физическое удаление помеченных объектов
После того как все нужные документы помечены, выполняется физическое удаление: меню Операции → Удаление помеченных объектов. Операция требует монопольного режима. Программа покажет список всех помеченных объектов — документов, элементов справочников — и предложит удалить всё или выборочно.
На этапе удаления система выполняет контроль ссылочной целостности: если на помеченный документ ссылаются другие объекты, будет выдано предупреждение со списком ссылок. В типовых настройках можно удалить объект вместе со ссылками (тогда в ссылающихся объектах останутся «битые» ссылки) или отказаться от удаления таких объектов. Безопасный вариант — сначала удалить ссылающиеся документы, затем повторить операцию.
Длительность операции зависит от объёма базы: на больших базах удаление и последующая реорганизация таблиц могут занять значительное время. Не прерывайте процесс принудительно — это может повредить файлы базы. После завершения рекомендуется выполнить тестирование и исправление через конфигуратор.
Проверка результата и восстановление итогов
После удаления откройте журналы и убедитесь, что помеченные документы исчезли. Затем запустите в конфигураторе Администрирование → Тестирование и исправление с проверкой ссылочной целостности и логической целостности данных — это выявит оставшиеся битые ссылки и повреждения индексов.
Если документы участвовали в последовательностях, восстановите их: Операции → Управление последовательностями или аналогичный пункт конфигурации. Проверьте итоги по регистрам и бухгалтерским счетам (Операции → Управление итогами) — при необходимости выполните полный пересчёт итогов за затронутый период.
Контрольный признак корректного завершения: база открывается без ошибок, отчёты за прошлые (нетронутые) периоды совпадают с данными до операции, тестирование не выдаёт ошибок ссылочной целостности. Если отчёты «поплыли», восстановите базу из копии и повторите операцию с более узким отбором.
Как проверить результат
Помеченные документы отсутствуют, остальные на месте
Исчезли документы вне заданного периода
Ошибок ссылочной целостности нет
Сообщения о битых ссылках и несоответствии итогов
Показатели совпадают со значениями до операции
Обороты и сальдо изменились
Когда массовую пометку делать не стоит
Не помечайте документы закрытых периодов, по которым сдана бухгалтерская и налоговая отчётность: изменение базы задним числом приведёт к расхождению с отчётностью. Для таких случаев используют свёртку базы — перенос остатков на дату с отключением старых документов от итогов, а не их удаление.
Если цель — просто ускорить работу базы, удаление документов не всегда даёт эффект без последующей реорганизации таблиц в конфигураторе. А при сомнениях в том, какие документы «лишние», безопаснее снять их с проведения: документ остаётся в базе для истории, но не влияет на итоги.
Что важно запомнить
Пометка выполняется групповой обработкой или кодом с УстановитьПометкуУдаления(1), физическое удаление — через Операции → Удаление помеченных объектов в монопольном режиме. Обязательные условия: архивная копия до начала, контроль ссылочной целостности и проверка итогов после.
Частые вопросы
Можно ли отменить пометку на удаление сразу для всех документов?
Да. До физического удаления пометка обратима: в групповой обработке выберите действие «Снять пометку удаления», а в программном варианте выполните тот же цикл с методом УстановитьПометкуУдаления(0). После физического удаления восстановить документы можно только из архивной копии.
Почему кнопка «Удаление помеченных объектов» недоступна?
Чаще всего причина в отсутствии монопольного доступа — в базе работают другие пользователи. Также пункт может быть недоступен из-за ограничения прав: у пользователя должны быть права на удаление соответствующих объектов, задаваемые в конфигураторе.
Что произойдёт с проведёнными документами при пометке?
Пометка сама по себе не всегда отменяет проведение — поведение зависит от конфигурации. Если документ остался проведённым, его движения продолжают учитываться в итогах. Надёжнее сначала снять документы с проведения (в групповой обработке есть соответствующее действие), а затем помечать.
Как удалить документы только за определённый период?
В групповой обработке задайте дату начала и окончания в настройках отбора. В программном способе используйте ВыбратьДокументы(НачДата, КонДата) с нужными датами. Учитывайте границу запрета изменения данных и дату запрета редактирования, если они установлены.
Опасно ли прервать процесс удаления помеченных объектов?
Да. Принудительное завершение (снятие задачи, отключение питания) во время удаления и реорганизации таблиц может повредить файлы базы. Если процесс кажется зависшим, дождитесь завершения — на больших базах он объективно длителен. После аварийного прерывания обязательно выполните тестирование и исправление.
Чем массовое удаление отличается от свёртки базы?
Удаление стирает сами документы и требует контроля ссылок. Свёртка переносит остатки по счетам и регистрам на выбранную дату документами ввода остатков, после чего старые документы исключаются из расчёта итогов. Для закрытых отчётных периодов корректна именно свёртка, а не удаление.