Чистка базы 1С 8.3 от помеченных на удаление документов и элементов

· 10 мин

Содержание

Помеченные объекты в 1С удаляют обработкой «Удаление помеченных объектов». В БП 3.0 и ЗУП 3.1 она открывается так: Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. В любой конфигурации на платформе 8.3 есть и универсальный путь: Все функции → Стандартные → Удаление помеченных объектов.

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

Пометка и окончательное удаление: в чём разница

В 1С 8.3 удаление идёт в два шага. Это защита от потери связей между данными.

  1. Пометка на удаление. Пользователь выделяет документ или элемент справочника в списке и нажимает Del (или команду «Пометить на удаление» в меню «Ещё»). Объект перечёркивается в списке, но физически остаётся в базе. Проведённый документ при пометке отменяет проведение, и его движения исчезают из регистров.
  2. Удаление помеченных. Администратор запускает обработку. Она находит все помеченные объекты, ищет ссылки на них и удаляет только «свободные».

Пометку можно снять: повторное нажатие Del на перечёркнутой строке снимает её. После физического удаления вернуть объект можно только из резервной копии.

Что даёт такая схема:

  • 🛡️ ошибочно помеченный договор не исчезнет вместе со всеми документами по нему;
  • 🔗 в отчётах и документах не появятся «битые» ссылки вида <Объект не найден>;
  • 👥 рядовой пользователь может только помечать, а удаляет ответственный за базу.

Чтобы скрыть помеченные строки в списке, используйте в меню «Ещё» команду настройки списка и отбор по полю «Пометка удаления». В БП 3.0 у многих списков есть и готовая команда «Показывать помеченные на удаление».

Какие права нужны

За пометку и удаление отвечают разные права платформы: «Интерактивная пометка удаления» и «Интерактивное удаление помеченных». В типовых конфигурациях второе обычно есть только у полных прав. Если команда удаления не видна или обработка сообщает о нехватке прав, запускайте её под администратором.

Подготовка перед удалением помеченных объектов

Удаление необратимо, поэтому начните с трёх действий.

  1. Сделайте резервную копию базы . Для файловой базы подойдёт выгрузка в .dt через Конфигуратор: Администрирование → Выгрузить информационную базу. Для клиент-серверной базы надёжнее бэкап средствами СУБД.
  2. Выберите время. Обработка читает всю базу при поиске ссылок. Днём, когда пользователи проводят документы, она идёт дольше и чаще упирается в блокировки. Лучше запускать вечером или в выходной.
  3. Просмотрите, что помечено. Отберите в журналах помеченные документы за период. Если среди них есть явно нужные, снимите пометку до запуска.

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

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

Где найти обработку

КонфигурацияПуть
Бухгалтерия предприятия 3.0Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов
ЗУП 3.1Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов
Любая конфигурация на 8.3Все функции → Стандартные → Удаление помеченных объектов

Пункт «Все функции» по умолчанию скрыт. Включите его: Главное меню → Сервис → Параметры, флажок «Отображать команду “Все функции”».

В УТ 11, КА 2 и ERP обработка из той же Библиотеки стандартных подсистем лежит в группе «Обслуживание» раздела администрирования. Если её не видно — используйте путь через «Все функции».

Режимы удаления

Типовая обработка предлагает два варианта.

  • ⚡ Автоматически удалить все помеченные объекты. Программа сама соберёт все помеченные документы и элементы, проверит ссылки и удалит, что может. Подходит для регулярной чистки.
  • 🎯 Выборочное удаление. Сначала строится дерево помеченных объектов по видам. Вы снимаете флажки с того, что трогать нельзя, и запускаете удаление только для отмеченного.

Порядок действий

  1. Откройте обработку и выберите режим.
  2. Для выборочного режима дождитесь построения списка. В большой базе это может занять несколько минут.
  3. Проверьте список. Раскройте группы «Документы» и «Справочники», снимите флажки с сомнительных объектов.
  4. Нажмите кнопку удаления.
  5. Дождитесь итога: программа покажет, сколько объектов удалено и сколько осталось.

Если остались неудалённые объекты, обработка выводит их списком с причинами. Это и есть отправная точка для анализа ссылок.

Почему объект не удаляется: зависимости и блокировки

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

Самая частая причина. Обработка сообщает, что на объект есть ссылки, и показывает, где именно он используется. Типичные ситуации:

  • 📄 помечен контрагент, а документы реализации по нему не помечены;
  • 📦 помечена номенклатура, а она стоит в строке непомеченного поступления;
  • 👤 помечен сотрудник, а на него есть кадровые документы и начисления;
  • ⚙️ объект указан в константе, настройке учётной политики или в значении по умолчанию пользователя.

Решение одно из двух. Если ссылающийся объект тоже не нужен — откройте его из списка «мешающих» прямо в обработке, пометьте и запустите удаление повторно. Если нужен — снимите пометку с исходного объекта: значит, он ещё используется.

Не заменяйте ссылки в документах прошлых периодов «на что-нибудь», лишь бы удалить объект. Это меняет закрытые данные и может испортить отчётность.

Ссылки внутри помеченных

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

Записи регистров сведений

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

Такие записи удаляют отдельно в форме регистра или документом, который их создал. Если запись появилась от документа — пометьте сам документ.

Блокировки и конфликты

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

Что делать:

  1. Посмотрите, кто подключён: Администрирование → Обслуживание → Активные пользователи (в БП 3.0) или через консоль кластера.
  2. Попросите закрыть документы, которые попали в ошибки.
  3. Запустите удаление повторно — уже удалённое заново не обрабатывается.

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

Диагностика: выберите симптом

Что даёт Конфигуратор при удалении помеченных

В режиме Конфигуратора отдельной команды удаления помеченных в 8.3 нет: это задача пользовательского режима. Конфигуратор нужен на подготовке и после чистки.

  • 💾 Резервная копия. Администрирование → Выгрузить информационную базу сохраняет базу в файл .dt. Для выгрузки и загрузки .dt нужен монопольный доступ.
  • 🛠️ Тестирование и исправление. Администрирование → Тестирование и исправление проверяет ссылочную целостность. Опция «При наличии ссылок на несуществующие объекты» позволяет решить, что делать с битыми ссылками: создавать объекты-заглушки, очищать ссылки или не изменять. Тестирование и исправление тоже требует монопольного доступа.
  • 🚀 Запуск без пользователей. Если блокировки мешают постоянно, администратор назначает окно обслуживания, закрывает сеансы и запускает обработку в пустой базе.

Битые ссылки <Объект не найден> чаще всего появляются, когда объекты удаляли кодом без контроля ссылок или выгружали данные выборочно. Типовая обработка с контролем ссылок такие ссылки не создаёт.

Удаление помеченных по расписанию и кодом

Регламентное задание

В конфигурациях на Библиотеке стандартных подсистем удаление можно поставить на расписание. В форме обработки есть настройка автоматического удаления помеченных объектов с расписанием. За выполнение отвечает регламентное задание, его видно в списке регламентных и фоновых заданий раздела «Обслуживание».

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

Внешняя обработка

Иногда нужно удалить помеченные объекты одного вида, не трогая остальные. Это решает короткий код. Перед удалением он проверяет ссылки через НайтиПоСсылкам, поэтому битых ссылок не оставит.

&НаСервереБезКонтекста
Процедура УдалитьПомеченныеБезСсылокНаСервере()
	
	Помеченные = НайтиПомеченныеНаУдаление();
	Удалено = 0;
	
	Для Каждого Ссылка Из Помеченные Цикл
		
		МассивСсылок = Новый Массив;
		МассивСсылок.Добавить(Ссылка);
		ТаблицаСсылок = НайтиПоСсылкам(МассивСсылок);
		
		// Ссылка объекта на самого себя не мешает удалению
		ЕстьВнешниеСсылки = Ложь;
		Для Каждого Строка Из ТаблицаСсылок Цикл
			Если Строка.Данные <> Ссылка Тогда
				ЕстьВнешниеСсылки = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
		Если ЕстьВнешниеСсылки Тогда
			Продолжить;
		КонецЕсли;
		
		Попытка
			Объект = Ссылка.ПолучитьОбъект();
			Объект.Удалить();
			Удалено = Удалено + 1;
		Исключение
			Сообщить("Не удалён: " + Строка(Ссылка) + ". " + ОписаниеОшибки());
		КонецПопытки;
		
	КонецЦикла;
	
	Сообщить("Удалено объектов: " + Формат(Удалено, "ЧН=0; ЧГ=0"));
	
КонецПроцедуры

Как это работает:

  1. НайтиПомеченныеНаУдаление() возвращает массив ссылок на все помеченные объекты.
  2. НайтиПоСсылкам возвращает таблицу, где колонка Данные — объект, который ссылается на проверяемый.
  3. Если внешних ссылок нет, объект удаляется методом Удалить().

Ограничение кода: два помеченных объекта, ссылающихся друг на друга, он пропустит. Их удалит только типовая обработка за один проход. Чтобы ограничиться одним видом, проверяйте тип ссылки, например ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг").

Метод Удалить() сам ссылки не проверяет. Без блока с НайтиПоСсылкам код удалит объект, на который ссылаются живые документы, и в базе появятся битые ссылки. Запускайте на копии базы, затем — на рабочей.

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

Ошибки здесь обычно не программные, а организационные.

ОшибкаЧем грозитКак избежать
Удаление без резервной копииНужный документ не вернутьБэкап перед каждой массовой чисткой
Пользователи помечают «на всякий случай»Пропадают документы, которые просто казались лишнимиПомечать только то, что точно ошибочно; спорное — в отдельную папку
Помечены объекты закрытого периодаМеняются итоги сданной отчётностиДата запрета изменения данных; помеченные документы прошлых периодов проверять с бухгалтером
Удаление идёт днём при полной загрузкеКонфликты блокировок, торможение у всехЗапуск вечером или в окно обслуживания
Вместо удаления — снятие ссылок вручнуюИскажённые проводки и остаткиРазбираться, почему объект ещё используется

Дата запрета изменения данных

Отдельно о закрытых периодах. Если помеченный документ попадает в период, закрытый датой запрета, обработка не удалит его и выдаст сообщение о запрете. Это защита, а не сбой. Решение принимает главный бухгалтер: открыть период или оставить документ помеченным.

Профилактика: как держать базу в порядке

Помеченные объекты занимают место и захламляют списки и отборы. Несколько правил, чтобы чистка не превращалась в многочасовую работу:

  • 📅 Регулярность. Чистить раз в месяц после закрытия периода, а не раз в год. Объектов меньше — проход быстрее и меньше конфликтов.
  • 🧾 Порядок пометки. Сначала помечать документы, потом справочники, на которые они ссылаются. Так одна обработка уберёт всю цепочку.
  • 🧑‍💼 Права. Право удалять помеченные — только у администратора или ответственного бухгалтера.
  • 🗂️ Разбор после запуска. Неудалённые объекты не копить: либо снять пометку, либо разобрать ссылки сразу.
  • 🧹 Сопутствующее обслуживание. После крупной чистки в клиент-серверной базе полезно обновить статистику и перестроить индексы в СУБД, в файловой — выполнить «Сжатие таблиц информационной базы» при Тестировании и исправлении.

Сам размер файла 1Cv8.1CD после удаления не уменьшится: место освобождается внутри файла. Уменьшить файл помогает сжатие таблиц в Тестировании и исправлении или выгрузка-загрузка .dt.

Регламент ежемесячной чистки базы
Выполнено: 0 / 6

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

Можно ли восстановить удалённый помеченный объект?
Нет, средствами 1С — нельзя. Удаление физическое. Вернуть объект можно только из резервной копии: развернуть её рядом и перенести нужные данные.
Почему после пометки документ пропал из отчётов?
Пометка отменяет проведение. Движения документа удаляются из регистров, поэтому в отчётах его нет, хотя в журнале он виден перечёркнутым.
Влияет ли удаление помеченных на нумерацию документов?
Нет. Номера оставшихся документов не меняются, перенумерации не происходит. В последовательности номеров просто останется пропуск.
Нужно ли выгонять всех пользователей для удаления?
Не обязательно. Обработка работает при подключённых пользователях, но часть объектов может не удалиться из-за блокировок. Повторный запуск в тихое время их доудалит.
Удаляются ли вместе с документом подчинённые записи регистров?
Да. Движения документа принадлежат ему и удаляются вместе с ним. Записи независимых регистров сведений, где объект указан как значение, удалять надо отдельно.