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