К статье
Практический материал

Администрирование · 12 мин

Как удалить большое количество документов в 1С

Как массово удалить документы в 1С: пометка на удаление, обработка «Удаление помеченных объектов», работа со ссылками, типовые ошибки и проверка результата.

Удаление большого массива документов в 1С — типовая задача при чистке тестовой базы, исправлении ошибочной загрузки или подготовке к свёртке. Проблема в том, что просто выделить документы и нажать «Удалить» недостаточно: платформа защищает ссылочную целостность, поэтому объекты, на которые есть ссылки в других записях, физически не удаляются. Без правильной последовательности действий вы рискуете получить «битые ссылки», зависшую базу или потерю нужных данных.

Безопасная схема всегда состоит из трёх этапов: отбор нужных документов, пометка на удаление и контролируемое физическое удаление с проверкой ссылок. Для сотен документов достаточно штатных средств конфигурации, для десятков тысяч понадобятся специальные обработки и монопольный режим. Ниже разобраны оба сценария с конкретными действиями и ограничениями.

Перед любыми массовыми операциями сделайте резервную копию базы. Для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытых сеансах, для клиент-серверной — выполнить выгрузку в dt через конфигуратор или средствами СУБД. Это единственный способ откатить ошибку, если в выборку попали лишние документы.

Как подготовить базу к массовому удалению

Первое действие — резервная копия. Откройте конфигуратор, выберите «Администрирование → Выгрузить информационную базу» и сохраните файл dt. Проверьте, что копия реально создалась и имеет ненулевой размер. Это займёт время на больших базах, но без копии массовое удаление превращается в лотерею.

Второе — завершите работу пользователей. Физическое удаление помеченных объектов требует монопольного доступа: если в базе есть активные сеансы, операция не запустится. В клиент-серверном варианте сеансы можно завершить через консоль кластера, в файловом — попросить пользователей выйти и проверить список активных сеансов в конфигураторе.

Третье — проанализируйте, что именно удаляете. Постройте отчёт или откройте список документов с отбором по дате, организации, виду документа. Убедитесь, что удаление не нарушит последовательность проведения оставшихся документов: например, удаление реализаций при живых отчётах комиссионера или взаиморасчётах приведёт к расхождениям в учёте.

Как отобрать документы для удаления

Для небольших объёмов работает ручной отбор в списке. Откройте журнал документов, установите отбор по периоду, организации или контрагенту через «Ещё → Настроить список», выделите строки мышью с зажатой Shift или Ctrl. Этот способ надёжен, но при тысячах строк становится неудобным и медленным.

Для больших массивов используйте типовую обработку «Групповое изменение реквизитов» (в большинстве конфигураций на БСП она находится в разделе «Администрирование → Обслуживание» или доступна через «Ещё → Изменить выделенные» в списке документов). Она позволяет отобрать документы по произвольным условиям и установить пометку удаления пакетно.

Если критерии сложные — например, удалить все документы определённого вида за период, кроме проведённых по конкретному договору, — потребуется консоль запросов или специализированная обработка. Типовые средства отбора в таких случаях ограничены простыми условиями сравнения.

Маршрут решения

Как выбрать способ отбора

Документов до нескольких сотен и отбор простой (период, организация)Выделите строки в списке вручную и установите пометку удаления через контекстное меню
Документов много, условия отбора стандартныеИспользуйте обработку «Групповое изменение реквизитов» с установкой пометки удаления
Условия сложные, с исключениями и связями между объектамиСформируйте список консолью запросов или обработкой, проверьте выборку глазами до пометки

Как пометить документы на удаление

Пометка на удаление — обратимое состояние: документ остаётся в базе, но исключается из большинства отчётов и не проводится. В списке документов выделите нужные строки и нажмите Delete или выберите «Установить пометку удаления» в контекстном меню. Если документ проведён, платформа предложит сначала отменить проведение — соглашайтесь, это нормальная часть процедуры.

Через «Групповое изменение реквизитов» процедура выглядит так: откройте обработку, выберите тип объекта «Документы», задайте отбор, в списке реквизитов найдите «Пометка удаления» и установите значение «Истина», затем выполните изменение. Обработка покажет количество изменённых объектов — сверьте его с ожидаемым.

Для программной пометки через встроенный язык используется метод УстановитьПометкуУдаления() у объекта документа. Такой вариант оправдан, когда нужно пометить десятки тысяч объектов с обходом результата запроса, но требует аккуратности: ошибка в запросе пометит лишнее.

bsl
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата < &Дата");
Запрос.УстановитьПараметр("Дата", Дата(2023,1,1));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
  ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
  ДокОбъект.УстановитьПометкуУдаления(Истина);
КонецЦикла;

Как выполнить физическое удаление помеченных объектов

Штатный инструмент — «Администрирование → Удаление помеченных объектов» (в некоторых конфигурациях путь «Сервис → Удаление помеченных объектов» или через «Все функции»). Обработка предложит два режима: автоматическое удаление всех помеченных объектов или выборочное — со списком, где можно снять флажки с того, что решили оставить.

Для больших объёмов выбирайте автоматический режим, но только после того, как убедились в корректности пометок. Обработка сначала попытается удалить всё, а затем покажет объекты, которые удалить не удалось, со списком мест использования — документов, регистров и справочников, где на них есть ссылки.

Операция на десятках тысяч объектов может занимать от нескольких минут до часов. Не прерывайте её принудительно: обрыв транзакции на середине оставляет базу в состоянии, где часть объектов удалена, а часть нет, и разбираться с этим придётся дольше, чем ждать завершения.

Порядок физического удаления
  1. 1
    Завершите сеансы пользователей и откройте базу в монопольном режиме
  2. 2
    Откройте «Администрирование → Удаление помеченных объектов»
  3. 3
    Выберите режим: автоматический или выборочный со списком объектов
  4. 4
    Запустите удаление и дождитесь завершения без прерывания
  5. 5
    Изучите список неудалённых объектов и мест их использования
  6. 6
    Очистите ссылки в местах использования или пометьте их тоже
  7. 7
    Повторите удаление, пока список неудалённых не станет пустым

Что делать с объектами, которые не удаляются

Типовая ситуация: документ помечен, но обработка удаления сообщает, что на него ссылаются другие объекты. Например, на удаляемую накладную ссылается счёт-фактура, возврат или документ расчётов. Платформа не даст удалить объект, пока существуют такие ссылки — это защита от «битых» данных.

В окне результатов удаления двойной клик по объекту открывает список мест использования. Пройдите по каждому месту: либо удалите/пометьте ссылающийся объект (если он тоже подлежит удалению), либо очистите ссылку в реквизите, если объект нужно оставить. После разбора всех связей повторите удаление помеченных.

Если мест использования сотни, ручной разбор непрактичен. В этом случае имеет смысл расширить первоначальную выборку: пометить на удаление связанные документы цепочкой (например, счета-фактуры по удаляемым реализациям) и повторить цикл. Обычно хватает двух-трёх итераций.

Типичные ошибки при массовом удалении
01
Удаление без резервной копии — ошибка в отборе становится необратимой
02
Прерывание процесса удаления на середине — база остаётся в частично обработанном состоянии
03
Игнорирование списка неудалённых объектов — помеченные документы остаются в базе и засоряют её
04
Удаление документов закрытого периода — расходятся остатки и регламентированная отчётность
05
Пометка документов без анализа последовательностей — сбивается проведение оставшихся документов

Как ускорить удаление очень больших объёмов

При сотнях тысяч документов штатная обработка работает медленно из-за проверки ссылочной целостности по каждому объекту. Ускорить процесс можно, разбив работу на порции: помечайте и удаляйте документы помесячно или по видам. Меньшая транзакция снижает нагрузку и риск тайм-аутов в клиент-серверном варианте.

Для файловых баз существенный эффект даёт запуск удаления непосредственно на компьютере, где лежит файл базы, без сетевого доступа. Для клиент-серверных — выполнение операции в период минимальной нагрузки на СУБД.

Крайняя мера для тестовых баз — непосредственное удаление без контроля ссылок (есть в некоторых внешних обработках). Применяйте его только к копиям и тестовым контурам: в рабочей базе такой режим гарантированно создаст битые ссылки, которые потом придётся искать тестированием и исправлением.

Как проверить результат после удаления

Откройте журнал соответствующих документов с отбором по периоду удалённых данных — список должен быть пуст. Затем выполните «Администрирование → Тестирование и исправление» с включённой проверкой ссылочной целостности: она выявит объекты с битыми ссылками, если такие появились.

Сформируйте контрольные отчёты: оборотно-сальдовую ведомость, отчёты по взаиморасчётам и складским остаткам за периоды, граничащие с удалёнными. Сравните показатели со значениями, снятыми до удаления, — они должны совпасть, если удаление не затрагивало проведённые документы этих периодов.

Если база обменивается данными с другими системами, проверьте, не ушли ли удаления по планам обмена в соседние узлы. В распределённых системах массовое удаление в одном узле может спровоцировать удаление в других — это нужно контролировать отдельно.

Контрольные точки

Как проверить результат

Список документов за удалённый период
Норма

Документы отсутствуют, включая помеченные

Тревожный признак

Остались помеченные, но не удалённые объекты

Тестирование и исправление, проверка ссылочной целостности
Норма

Ошибок не обнаружено

Тревожный признак

Есть объекты с битыми ссылками

Оборотно-сальдовая ведомость до и после
Норма

Остатки совпадают

Тревожный признак

Остатки изменились — удалено лишнее

Повторный запуск удаления помеченных
Норма

Список помеченных объектов пуст

Тревожный признак

Обработка снова находит помеченные объекты

Перед массовой пометкой полезно сначала выгрузить список отобранных документов в табличный документ и сверить количество строк с ожидаемым. Расхождение даже на несколько единиц — сигнал перепроверить условия отбора до того, как пометка будет установлена.
ПЗ
Практическое замечание

Частые вопросы

Можно ли удалить документы без пометки на удаление?

Интерактивно — нет, платформа всегда требует сначала установить пометку. Программно существует метод непосредственного удаления объекта, но он не контролирует ссылочную целостность и применим только в тестовых базах. В рабочей базе используйте стандартную двухэтапную схему.

Почему обработка «Удаление помеченных объектов» не запускается?

Наиболее частая причина — отсутствие монопольного доступа: в базе есть активные сеансы пользователей или фоновые задания. Завершите сеансы через консоль кластера или конфигуратор и повторите попытку. Также проверьте права: у пользователя должно быть право на удаление соответствующих объектов.

Удалятся ли движения документа по регистрам автоматически?

Да. При физическом удалении документа платформа удаляет все его записи в регистрах. А вот при пометке на удаление проведённого документа сначала отменяется проведение, и движения стираются уже на этом этапе.

Что делать, если удалили лишние документы?

Интерактивной отмены физического удаления нет. Восстановление возможно только из резервной копии: либо откатом всей базы, либо выборочной загрузкой документов из копии через выгрузку/загрузку данных в формате XML. Именно поэтому копия перед операцией обязательна.

Можно ли удалить документы за закрытый период?

Технически — да, если у пользователя есть права и не установлена дата запрета изменения данных. Но это изменит данные прошлых отчётных периодов: остатки, декларации и регистры пересчитаются. Правильный подход — не удалять, а сворачивать базу штатной обработкой свёртки с формированием документов ввода остатков.

Как удалить документы только одной организации в многофирменной базе?

Добавьте в отбор условие по реквизиту «Организация» — в списке документов через настройку списка, в обработке группового изменения — через произвольный отбор. Учтите, что документы, связанные с другими организациями (например, перемещения между складами разных фирм), могут не удалиться из-за ссылок, и их придётся разбирать отдельно.

Итог

Что важно запомнить

Массовое удаление документов в 1С выполняется строго в два этапа: пометка на удаление и физическое удаление через штатную обработку в монопольном режиме. Резервная копия до начала работ и проверка ссылочной целостности после завершения — обязательные элементы процедуры. Объекты, на которые есть ссылки, удалятся только после разбора мест использования.