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