Как правильно удалять записи в 1С и вернуть удалённое по ошибке

· 10 мин

Содержание

Удалить запись в 1С кнопкой Del получается не всегда: программа лишь ставит пометку, а сам объект остаётся в базе. Это сделано специально — чтобы случайно не стереть документ, на который ссылаются проводки, остатки и другие записи. Полное удаление идёт в два шага и с проверкой связей.

Если нужно убрать документ, элемент справочника или строку регистра — почти всегда работают штатные средства: пометка на удаление плюс обработка «Удаление помеченных объектов». Жёсткие методы (через Конфигуратор или напрямую в базе) нужны редко и опасны. Ниже — когда какой способ применять и как вернуть данные, если удалили лишнее.

Почему удаление идёт в два шага

В 1С нельзя стереть запись одним нажатием, и это защита, а не недоработка. Любой объект — документ, контрагент, номенклатура — может быть связан с десятками других. Удалите поставщика напрямую — и все его накладные начнут ссылаться в пустоту.

Поэтому действует правило двух шагов:

  1. Пометка на удаление — вы помечаете объект. Он остаётся в базе, но перечёркнут и не мешает учёту.
  2. Удаление помеченных объектов — специальная обработка проверяет ссылки и физически убирает из базы только то, на что больше ничего не ссылается.

Такой порядок одинаков для всех типовых конфигураций на платформе 8.3: «Бухгалтерия предприятия», «Зарплата и управление персоналом», «Управление торговлей», «Комплексная автоматизация», ERP. Отличается лишь название раздела, где лежит обработка удаления, — сама логика пометки и контроля ссылок общая.

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

Пометку можно снять в любой момент, пока не запущена вторая обработка. После физического удаления вернуть запись можно только из резервной копии.

Шаг 1. Как пометить запись на удаление

Пометка доступна почти из любого списка. Выделите строку — документ, элемент справочника, задание — и сделайте одно из:

  • нажмите клавишу Del;
  • правый клик по строке → Пометить на удаление / Снять пометку;
  • на панели списка кнопка с тем же названием (иногда скрыта в меню «Ещё»).

Помеченный объект получает перечёркнутый значок — красный крестик поверх иконки. Чтобы выделить несколько строк сразу, держите Ctrl (строки вразнобой) или Shift (диапазон) и помечайте группой одной командой.

У справочников с иерархией действует удобное правило: если пометить группу (папку), 1С предложит пометить и все вложенные элементы. Это экономит время, когда убираете целый раздел номенклатуры или устаревшую группу контрагентов.

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

Перед массовым удалением
Выполнено: 0 / 4

Шаг 2. Удаление помеченных объектов и контроль ссылок

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

Обработка предложит два режима:

РежимЧто делаетКогда выбирать
АвтоматическоеУдаляет всё помеченное, что не связано ссылкамиРегулярная чистка базы
ВыборочноеВы вручную отмечаете из списка помеченногоНужно удалить только часть

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

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

Что делать, если объект не удаляется из-за ссылок:

  • откройте список «Места использования» прямо в окне обработки;
  • перейдите в каждый связанный документ и либо удалите его тоже, либо замените в нём ссылку на другой объект;
  • повторите удаление помеченных.

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

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

Как удалить проведённый документ и его движения

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

Порядок такой:

  1. Откройте документ или выделите его в списке.
  2. Нажмите Отменить проведение (кнопка с крестиком на значке проведения) или снимите галочку проведения внутри документа.
  3. Движения по регистрам при этом автоматически убираются.
  4. Теперь пометьте документ на удаление клавишей Del.
  5. Запустите удаление помеченных объектов.

После отмены проведения документ перестаёт влиять на отчётность, даже если вы пока не удалили его полностью. Проверить, что движений не осталось, можно кнопкой Дт/Кт или отчётом Движения документа — там должно быть пусто.

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

Если период уже закрыт (сдана отчётность), не трогайте документы задним числом. Правьте через сторнирование или корректировку в текущем периоде — иначе разъедутся закрытые данные.

Как удалить справочник с подчинёнными данными

Элемент справочника — контрагента, номенклатуру, физлицо — часто не получается удалить, потому что на него завязаны документы, договоры, счета. Контроль ссылок это не пропустит.

Варианты в порядке от простого к сложному:

  • Пометить на удаление и оставить — если элемент просто больше не нужен, пометьте его. Он уйдёт из активного выбора, но история останется. Для «мусорных» дублей этого достаточно.
  • Заменить ссылки, потом удалить — если нужно убрать дубль контрагента, а документы оставить, воспользуйтесь обработкой Поиск и удаление дублей (раздел «Администрирование» или «Сервис»). Она переносит все ссылки на главный элемент, а дубль помечает.
  • Удалить вместе со связанными объектами — редкий случай, когда убираете и элемент, и все его документы. Тогда сначала пометьте документы, затем сам элемент.

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

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

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

Если в режиме «Предприятие» обработка недоступна или зависает на большой базе, то же удаление запускают из Конфигуратора: меню Администрирование → Удаление помеченных объектов.

Отличия от обычного режима:

  • Конфигуратору для этой операции нужен монопольный доступ — все пользователи должны выйти из базы. Для структурных операций это обязательное требование платформы.
  • Контроль ссылочной целостности работает так же: связанные объекты не удалятся.
  • Прав администратора достаточно; менять конфигурацию для этого не требуется.

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

Через Конфигуратор удобно разбирать ситуации, когда в базе накопились тысячи помеченных объектов и штатная обработка в «Предприятии» не справляется за разумное время. Окно обработки в Конфигураторе выглядит проще, но делает ровно ту же работу: сначала поиск помеченных, затем анализ ссылок, затем удаление.

Для файловой базы монопольный доступ означает, что файл 1Cv8.1CD в этот момент занят только Конфигуратором. Для клиент-серверной базы нужно, чтобы на сервере не было активных сеансов по этой информационной базе. Проще всего убедиться в этом через список сеансов (в клиент-серверном варианте — утилитой администрирования кластера или командой rac session list; точные подкоманды смотрите в справке rac help).

Прямое удаление в базе SQL: почему так делать не нужно

В интернете встречаются советы «удалить запись напрямую в SQL-таблице» или через метод УдалитьНепосредственно() в коде. Для рабочей базы это плохая идея, и вот почему.

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

Метод УдалитьНепосредственно() тоже обходит контроль ссылок — применять его можно только в обработках, где вы на 100% понимаете последствия, и всегда после резервной копии. Его используют разработчики для разовой чистки тестовых баз, но на рабочей базе с реальным учётом он так же опасен, как и правка через SQL.

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

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

Как восстановить случайно удалённые данные

«Корзины» в 1С нет. Что можно вернуть — зависит от того, на каком шаге вы остановились.

СитуацияМожно ли вернутьКак
Объект только помеченДа, легкоСнять пометку той же командой
Запущено удаление помеченныхНет, объект стёртТолько из резервной копии
Удалено через SQL/кодНетТолько из резервной копии

Отсюда вывод: восстановление почти всегда означает откат к резервной копии. Поэтому копию и делают перед любой чисткой.

Порядок восстановления из копии:

  1. Разверните резервную копию в отдельную (тестовую) базу, не поверх рабочей.
  2. Найдите удалённый объект в копии.
  3. Выгрузите нужные документы и справочники и перенесите в рабочую базу — вручную или через обмен/выгрузку.

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

Если удалён всего один документ, его часто проще не переносить, а ввести заново по данным из тестовой базы — открыли копию, посмотрели поля, создали такой же документ в рабочей. Для большого объёма (десятки документов, целый справочник) используют выгрузку в файл или обмен между базами. Чем свежее копия, тем меньше придётся восстанавливать вручную, — отсюда правило делать её ежедневно, а не раз в месяц.

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

Регулярная автоматическая резервная копия (раздел «Администрирование → Обслуживание → Резервное копирование») — единственная реальная страховка от необратимого удаления. Настройте её один раз.

Чем отличается пометка на удаление от самого удаления?
Пометка только помечает объект — он остаётся в базе и легко возвращается снятием пометки. Удаление помеченных объектов физически убирает запись после проверки ссылок, и это уже необратимо.
Почему объект не удаляется, хотя я его пометил?
Сработал контроль ссылочной целостности: на объект кто-то ссылается. Обработка показывает список мест использования — удалите или отредактируйте эти записи, потом повторите удаление.
Как удалить все помеченные объекты сразу?
Запустите «Удаление помеченных объектов» в автоматическом режиме. Программа удалит всё помеченное, кроме связанного ссылками. Делать это лучше в нерабочее время.
Можно ли удалить документ, не удаляя его движения отдельно?
Да. Достаточно отменить проведение — движения по регистрам уберутся сами. После этого документ можно пометить и удалить.
Остался ли след от удалённого объекта?
Сам объект стирается, но запись о действии сохраняется в журнале регистрации (раздел «Администрирование»). По нему видно, кто и когда удалил, хотя вернуть данные журнал не поможет.