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

Процесс удаления данных в платформе 1С:Предприятие 8 не является тривиальной операцией «удалить и забыть». Неправильные действия могут привести к нарушению ссылочной целостности, ошибкам при проведении документов или полной неработоспособности системы. В этой статье мы детально разберем безопасные методы очистки, использование стандартных обработок и написание собственных скриптов для глубокой чистки базы.

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

Подготовка к очистке и меры безопасности

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

⚠️ Внимание: Перед запуском любых скриптов удаления обязательно сделайте бэкап базы в формате.dt или создайте полную копию файла базы данных. Восстановить удаленные данные без резервной копии в 1С практически невозможно.

Также рекомендуется проводить очистку в монопольном режиме. Это гарантирует, что в момент выполнения процедуры ни один пользователь не внесет изменения в базу, что могло бы привести к конфликтам блокировок или некорректному удалению связанных объектов. Для работы в монопольном режиме используйте ключ запуска /F или соответствующую настройку в конфигураторе.

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

☑️ Подготовка к удалению данных

Выполнено: 0 / 4

Использование стандартной обработки «Удаление помеченных объектов»

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

Сначала вам необходимо пометить на удаление все документы и элементы справочников, которые не являются предопределенными. Это можно сделать через списки форм или с помощью специальной обработки групповой обработки справочников и документов (ГОСД). После пометки запускается процедура удаления.

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

Тип объекта Статус удаления Требования
Документы Удаляются легко Отсутствие ссылок в регистрах
Справочники Требует проверки Не должны использоваться в документах
Планы счетов Защищено Предопределенные элементы не удаляются
Регистры сведений Зависит от настроек Наличие измерений и ресурсов
💡

Используйте режим «Удалить без проведения итогов» только если вы уверены, что регистры будут перепроведены заново или их данные не важны. В противном случае итоги могут рассинхронизироваться.

Очистка базы через консоль запросов или внешнюю обработку

Для более глубокой и автоматизированной очистки, особенно когда стандартные обработки не справляются с объемом данных или спецификой конфигурации, используется выполнение запросов на удаление. Этот метод требует знаний языка запросов 1С и понимания структуры таблиц базы данных.

Запросы на удаление выполняются значительно быстрее, чем удаление через объекты метаданных, так как они работают напрямую с таблицами СУБД. Однако, при этом обходятся многие проверки целостности, встроенные в объектный уровень 1С. Используйте этот метод с максимальной осторожностью.

Пример простейшего запроса для удаления всех документов определенного вида:

УДАЛИТЬ ИЗ Документ.РеализацияТоваровУслуг

ГДЕ ПометкаУдаления = ИСТИНА

Чтобы удалить всё, кроме предопределенных, необходимо добавить условие фильтрации по свойству ЭтоПредопределенныйЭлемент. Всегда используйте команду Движения.Записать() или специальные процедуры перепроведения после такой очистки.

⚠️ Внимание: Прямое удаление записей из таблиц регистров накопления через запросы DELETE не обновляет итоги автоматически. Вам придется вручную пересчитывать итоги или использовать обработку «Перепроведение документов».
Пример кода для удаления непредопределенных элементов справочника

Запрос = Новый Запрос;

Запрос.Текст = "УДАЛИТЬ ИЗ Справочник.Номенклатура ГДЕ ЭтоПредопределенныйЭлемент = ЛОЖЬ";

Запрос.Выполнить();

Удаление движений по регистрам и перепроведение

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

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

После очистки регистров база данных становится «пустой» с точки зрения учетных данных, но структура остается intact. На этом этапе критически важно проверить, что все справочники, необходимые для работы (контрагенты, склады, статьи затрат), либо восстановлены, либо являются предопределенными.

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

💡

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

Работа с предопределенными элементами и метаданными

Предопределенные элементы — это основа конфигурации. Они создаются разработчиком при проектировании системы и имеют уникальный внутренний идентификатор (UUID). Платформа 1С запрещает их удаление через пользовательский интерфейс и большинство программных методов.

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

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

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

📊 Какой метод очистки вы используете чаще всего?
Стандартная обработка
Запросы на удаление
Сторонние утилиты
Ручное удаление
Пересоздание базы

Типичные ошибки и способы их устранения

В процессе очистки базы пользователи часто сталкиваются с ошибками ссылочной целостности. Система сообщает, что объект не может быть удален, так как на него есть ссылки. Это нормальное поведение, защищающее базу от «битых» ссылок.

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

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

⚠️ Внимание: Если вы используете файловый вариант базы, убедитесь, что у пользователя, под которым запущена 1С, есть полные права на запись и удаление файлов в каталоге базы. Ошибки доступа часто маскируются под ошибки блокировки.

При работе с клиент-серверным вариантом (SQL) большие объемы удаляемых данных могут переполнить журнал транзакций СУБД. Рекомендуется выполнять удаление порциями (пакетами), особенно если записей десятки миллионов.

Часто задаваемые вопросы (FAQ)

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

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

Что делать, если обработка удаления зависает?

Зависание обычно происходит при удалении большого объема данных или наличии сложных цепочек ссылок. Попробуйте увеличить время ожидания блокировок в настройках 1С. Если это не помогает, разбейте процесс на этапы: сначала удалите документы за определенные периоды, затем справочники. Использование запросов на удаление (DELETE) часто решает проблему производительности.

Нужно ли перепроводить документы после очистки?

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

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

Вам нужно удалить только элементы справочников, а не сами справочники как объекты метаданных. Используйте фильтр ЭтоПредопределенныйЭлемент = ЛОЖЬ в запросе на удаление. Это удалит все созданные пользователями папки и элементы, но оставит структуру и предопределенные значения нетронутыми.

Влияет ли очистка данных на лицензирование 1С?

Нет, количество записей в базе данных не влияет на стоимость лицензий 1С. Лицензирование зависит от количества пользовательских мест и типа лицензии (клиентская или серверная). Однако, значительное уменьшение размера базы может положительно сказаться на производительности работы системы.