К статье
Практический материал

Администрирование · 11 мин

Как очистить таблицу файловой базы 1С

Способы очистки таблицы файловой базы 1С: через конфигуратор, обработку и код. Удаление документов, справочников, регистров без потери данных.

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

Файловый формат базы 1С не предоставляет прямого доступа к таблицам через SQL-запросы, как клиент-серверный вариант. Все операции выполняются либо штатными средствами платформы (конфигуратор, встроенный язык, стандартные обработки), либо через специализированные утилиты. Попытка редактировать файл 1Cv8.1CD напрямую почти гарантированно приведёт к повреждению базы.

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

Что нужно сделать до очистки таблицы

Первое и обязательное действие — резервная копия. В файловом варианте достаточно завершить все сеансы пользователей и скопировать файл 1Cv8.1CD из каталога базы в отдельную папку. Альтернатива — выгрузка базы в файл .dt через конфигуратор (меню «Администрирование» → «Выгрузить информационную базу»). Выгрузка .dt надёжнее простого копирования, если нужна гарантия целостности, но занимает больше времени на больших базах.

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

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

Очистка регистра сведений или накопления через набор записей

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

Код выполняется через внешнюю обработку, открытую в режиме «1С:Предприятие», или через консоль кода. Убедитесь, что у пользователя есть права на изменение регистра и что база не находится в режиме совместимости, ограничивающем выполнение кода.

bsl
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Записать(Истина);

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

Удаление документов и элементов справочников

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

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

bsl
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ОбъектДок = Выборка.Ссылка.ПолучитьОбъект();
    ОбъектДок.УстановитьПометкуУдаления(Истина);
КонецЦикла;

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

Очистка табличной части конкретного объекта

Иногда требуется очистить не всю таблицу базы, а табличную часть одного документа или справочника — например, удалить все строки товаров из инвентаризации. Для этого объект открывается через ПолучитьОбъект(), у табличной части вызывается метод Очистить(), после чего объект записывается.

bsl
Док = Документы.ИнвентаризацияТоваров.НайтиПоНомеру("000001", ТекущаяДатаСеанса());
ОбъектДок = Док.ПолучитьОбъект();
ОбъектДок.Товары.Очистить();
ОбъектДок.Записать();

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

Типовые обработки и инструменты без программирования

Если писать код нежелательно, часть задач решается штатными средствами. «Удаление помеченных объектов» очищает любые объектные таблицы после пометки. «Групповое изменение реквизитов» массово устанавливает пометку удаления по гибкому отбору. В конфигурациях на БСП (Библиотека стандартных подсистем) обе обработки доступны в разделе «Администрирование».

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

Сравнение вариантов

Пометка удаления + штатное удаление помеченных

Безопасно, контроль ссылок. Медленно на больших объёмах, требует два этапа.

Непосредственное удаление через код

Быстро, подходит для тестовых баз. Нет контроля ссылочной целостности — риск битых ссылок.

Пустой набор записей для регистра

Мгновенная очистка регистра. Не подходит для справочников и документов, опасно для регистров, подчинённых регистраторам.

Выгрузка/загрузка в пустую базу

Радикальный вариант для создания чистой копии. Трудоёмко, требует переноса нужных справочников.

Очистка базы целиком для нового ведения учёта

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

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

Порядок действий при полной очистке документов
  1. 1
    Создайте резервную копию файла базы или выгрузку .dt
  2. 2
    Завершите все сеансы пользователей
  3. 3
    Отмените проведение документов за весь период
  4. 4
    Установите пометки удаления на все документы
  5. 5
    Запустите «Удаление помеченных объектов» и разберите объекты, мешающие удалению
  6. 6
    Проверьте остатки по регистрам — они должны быть нулевыми
  7. 7
    Выполните тестирование и исправление с реиндексацией

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

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

Контрольные точки

Как проверить результат

Список объекта в режиме предприятия
Норма

Список пуст, отборы не показывают записей

Тревожный признак

Остались записи — удаление выполнено частично

Отчёты по связанным данным
Норма

Нет строк с текстом «Объект не найден»

Тревожный признак

Битые ссылки — нужен анализ ссылающихся объектов

Тестирование и исправление базы
Норма

Проверки завершаются без ошибок ссылочной целостности

Тревожный признак

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

Типичные ошибки
01
Удаление без резервной копии — данные не восстановить
02
Непосредственное удаление объектов без контроля ссылок — битые ссылки в документах и отчётах
03
Очистка регистра накопления без отмены проведения регистраторов — документы проведены, движений нет, учёт развален
04
Работа в файле 1Cv8.1CD сторонними редакторами — повреждение структуры базы
05
Удаление при активных сеансах — конфликты блокировок и незавершённые транзакции

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

Можно ли очистить таблицу файловой базы 1С через SQL-запрос?

Нет. Файловый формат 1Cv8.1CD — собственный формат платформы, прямого SQL-доступа к нему нет. Все операции выполняются средствами встроенного языка, конфигуратора или типовых обработок. Сторонние утилиты прямого редактирования файла используются только для аварийного восстановления и не подходят для штатной очистки.

Чем отличается пометка удаления от непосредственного удаления?

Пометка удаления лишь отмечает объект как удаляемый; фактическое удаление происходит через обработку «Удаление помеченных объектов» с проверкой ссылочной целостности. Непосредственное удаление стирает объект сразу, без проверки ссылок — это быстрее, но оставляет битые ссылки, если на объект кто-то ссылался.

Почему после очистки регистра документы остались проведёнными?

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

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

Разбейте удаление на порции: выбирайте ограниченное количество объектов (например, по дате или первые N записей) и удаляйте в цикле с фиксацией каждой порции. Для регистров сведений используйте набор записей с отбором вместо перебора строк. Убедитесь, что с базой никто не работает — блокировки резко замедляют процесс.

Уменьшится ли размер файла базы после очистки таблицы?

Не сразу. Файл 1Cv8.1CD не сжимается автоматически после удаления данных — освободившееся место помечается как свободное внутри файла. Для фактического уменьшения размера выполните выгрузку базы в .dt и загрузку обратно либо запустите тестирование и исправление с реструктуризацией таблиц.

Как очистить базу, но сохранить справочники и настройки?

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

Итог

Что важно запомнить

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