При ведении учета в 1С:Управление торговлей 10.3 рано или поздно наступает момент, когда база становится перегруженной документами прошлых периодов. Возникает задача: «зачистить» базу от всех движений, сохранив при этом справочную информацию (номенклатуру, контрагентов, настройки), чтобы начать учет «с чистого листа». Рассмотрим подробно, как выполнить эту процедуру эффективно и избежать типичных ошибок, с которыми столкнулись пользователи на форуме.
Самый быстрый на первый взгляд способ — это перебор всех типов документов в метаданных и их непосредственное удаление. Мы проанализируем, как это реализовать программно. Однако стоит помнить, что метод Удалить() уничтожает объект сразу, без проверки ссылочной целостности.
Для программного удаления всех документов можно использовать следующий алгоритм:
Для Каждого МетаДокумент Из Метаданные.Документы Цикл
ИмяДокумента = МетаДокумент.Имя;
Выборка = Документы[ИмяДокумента].Выбрать();
Пока Выборка.Следующий() Цикл
Попытка
ОбъектДокумента = Выборка.ПолучитьОбъект();
ОбъектДокумента.Удалить();
Исключение
Сообщить("Ошибка удаления документа: " + Выборка.Ссылка);
КонецПопытки;
КонецЦикла;
КонецЦикла;
Важное замечание: При таком подходе удаляются только сами документы и записи в регистрах, где этот документ является Регистратором. Но в базе остается огромное количество «мусора» в независимых регистрах сведений.
Проанализируем ситуацию: даже если мы удалили все реализации и поступления, в базе сохраняются записи в регистрах сведений, которые не имеют привязки к конкретному документу-регистратору. К ним относятся:
Чтобы база действительно стала «легче», нам необходимо очистить и эти регистры. Для этого мы можем пройтись по метаданным регистров сведений и выполнить очистку наборов записей:
Для Каждого МЗРегистр Из Метаданные.РегистрыСведений Цикл
Если МЗРегистр.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда
Набор = РегистрыСведений[МЗРегистр.Имя].СоздатьНаборЗаписей();
Набор.Записать(); // Запись пустого набора удаляет все данные
КонецЕсли;
КонецЦикла;
Рассмотрим штатный инструмент, предусмотренный разработчиками 1С. В конфигурации УТ 10.3 существует обработка СверткаИнформационнойБазы. В отличие от «грубого» удаления, она позволяет:
ВводОстатков по всем регистрам (склады, взаиморасчеты, денежные средства).Если ваша задача — не просто очистить базу, а начать учет заново, сохранив текущие остатки товаров и долгов, этот метод является единственно верным.
Как справедливо заметили участники обсуждения, часто проще не удалять лишнее, а перенести нужное. Это гарантирует отсутствие «битых» ссылок и скрытого мусора. Разберем пошагово этот процесс:
cf файла (конфигурации) текущей базы.ВыгрузкаЗагрузкаДанныхXML.Номенклатура, Контрагенты, Склады, ДоговорыКонтрагентов).Этот способ позволяет избавиться от 100 000 лишних позиций номенклатуры, которые накопились за 10 лет и более не используются.
Часто после удаления данных размер файла 1Cv8.1CD на диске не уменьшается. Проанализируем причины. Платформа 1С не возвращает место операционной системе автоматически. Чтобы «поджать» базу, выполним следующие действия:
1. Тестирование и исправление (ТиС). Нам необходимо запустить в Конфигураторе режим Администрирование — Тестирование и исправление. Обязательно выбираем пункты Реиндексация таблиц и Сжатие таблиц. Это пересоберет внутренние индексы и физически удалит пустые страницы из файла базы данных.
2. Очистка журнала регистрации. На форуме пользователь обнаружил, что основное место занимал лог-файл. Журнал регистрации хранится отдельно (файл 1Cv8.lgf или в папке 1Cv8Log). Если за годы работы он разросся до десятков гигабайт, его нужно сократить:
Конфигуратор.Администрирование — Настройка журнала регистрации.Сократить, указываем дату и путь для сохранения архива (или просто удаляем старые записи).3. Утилита compact.exe. Для файловых баз в комплекте поставки 1С (в папке bin) идет утилита для сжатия таблиц. Она работает более агрессивно, чем штатное сжатие в ТиС, и позволяет максимально уменьшить размер файла .1CD.
После удаления документов полезно почистить оставшиеся справочники. Используем типовую обработку Поиск и удаление дублей. Разберем ситуацию: часто один и тот же товар или контрагент заводились несколько раз. Поскольку ссылок на них (документов) больше нет, мы можем объединить их или безболезненно удалить. Это не только уменьшит объем базы, но и сделает работу пользователей в новой базе удобнее.
Важно: Перед любыми манипуляциями по массовому удалению данных обязательно создавайте резервную копию базы (выгрузку в .dt). Процесс удаления документов методом Удалить() необратим.