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