Очистка базы 1С 8.3 от помеченных объектов и присоединённых файлов
Содержание
Помеченные на удаление документы, элементы справочников и присоединённые файлы в 1С 8.3 удаляют штатной обработкой: Администрирование → Обслуживание → Удаление помеченных объектов. Программа сама проверит ссылки, удалит то, на что ничего не ссылается, и покажет список того, что удалить нельзя. Сама пометка ничего не стирает: объект лежит в базе, пока его не удалят этой обработкой.
Порядок одинаковый для Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других конфигураций на Библиотеке стандартных подсистем. Отличается то, где физически хранятся файлы: внутри базы или в томах на диске. От этого зависит, освободится ли место после удаления и нужно ли что-то чистить вручную.
Что происходит с объектом и файлом после пометки на удаление
Пометка — это флажок у записи. Документ с пометкой не проводится и не попадает в отчёты, но его данные целиком остаются в базе. Файл, который пометили к удалению в карточке документа или в списке «Файлы», тоже никуда не исчезает.
Физически удаляет только специальная процедура. Перед удалением она ищет ссылки на объект во всей базе:
- 🔗 документ, на который ссылается другой документ (например, счёт в платёжке), не удалится;
- 📎 присоединённый файл удалится вместе с владельцем или отдельно, если сам помечен;
- 🗂 элемент справочника, который указан хотя бы в одном непомеченном документе, останется.
Где лежит содержимое файла, задаёт администратор:
| Способ хранения | Где данные | Что меняется после удаления |
|---|---|---|
| В информационной базе | Внутри таблиц базы (файл 1Cv8.1CD или база SQL) | Запись исчезает, но размер файла базы сам не уменьшается |
| В томах на диске | В папке тома на сервере, в базе — только запись о файле | Вместе с записью удаляется файл в папке тома |
Узнать способ можно в разделе Администрирование, в настройках работы с файлами: там переключатель хранения и ссылка на справочник «Тома хранения файлов».
Удаление помеченных на удаление объектов и файлов штатной обработкой
Обработка встроена во все типовые конфигурации. Права нужны административные: обычный бухгалтер её не увидит.
Шаг 1. Подготовка
- Сделайте резервную копию базы . Удаление необратимо: из корзины 1С ничего не вернуть, только из копии.
- Убедитесь, что помеченное действительно не нужно. Список помеченных документов удобно смотреть в журнале документов с отбором по пометке.
- Попросите пользователей выйти или заблокируйте вход (об этом — в разделе про сервер).
Шаг 2. Запуск обработки
- Откройте
Администрирование → Обслуживание. - В группе «Корректировка данных» нажмите ссылку «Удаление помеченных объектов».
- Выберите режим: удалить всё помеченное автоматически или выборочно.
- При выборочном удалении программа покажет дерево помеченных объектов. Снимите флажки с того, что хотите оставить.
- Нажмите «Удалить» и дождитесь окончания. На базе в несколько гигабайт с десятками тысяч помеченных объектов это занимает от нескольких минут до часа.
Шаг 3. Разбор того, что не удалилось
После завершения обработка выводит список «Не удалены» с причиной: на объект есть ссылки. Двойной клик по строке показывает, где именно. Дальше два пути:
- ✅ пометить на удаление и мешающий объект, если он тоже лишний, и запустить обработку снова;
- ❌ снять пометку с объекта, если ссылка на него нужна.
Шаг 4. Проверка результата
Откройте журнал регистрации: Администрирование → Обслуживание → Журнал регистрации. Отберите события удаления за сегодняшний день. Там видно, кто запустил обработку, сколько объектов удалено и какие ошибки возникли.
Если вместе с документами удалялись присоединённые файлы, откройте пару документов, где файлы были нужны, и проверьте, что вложения на месте. Это быстрый способ убедиться, что под удаление не попало лишнее.
Нужный файл из помеченного документа перед удалением можно просто сохранить на компьютер из карточки: команда сохранения есть в списке присоединённых файлов. Так ничего не потеряется, даже если сам документ уйдёт.
Если ссылки в «Администрировании» нет
В отраслевых и самописных конфигурациях раздела может не быть. Тогда используйте стандартную обработку платформы:
- В главном меню (кнопка с тремя полосками) откройте
Сервис и настройки → Параметрыи включите «Режим технического специалиста». - В главном меню появится команда «Функции для технического специалиста».
- Откройте ветку
Стандартные → Удаление помеченных объектов.
Если у объекта нет кнопки «Пометить на удаление», а есть «Удалить», значит, в базе включено непосредственное удаление для этого пользователя. Тогда запись стирается сразу, без пометки и без проверки ссылок. Давать такое право бухгалтерам не стоит.
Как удалить файлы из томов хранения на сервере
Если файлы хранятся в томах, каждая запись справочника файлов указывает на конкретный файл в папке тома. Штатное удаление помеченных объектов убирает и запись, и файл на диске. Поэтому правильный путь удаления файлов всегда один: пометить в 1С → удалить обработкой.
Лишние файлы в томе
Со временем в папке тома могут появиться файлы, к которым в базе нет записей. Причины:
- 💥 обрыв связи при записи файла;
- 🔄 восстановление базы из старой копии, при котором папка тома осталась новой;
- ✋ ручное копирование файлов в папку.
Найти их помогает проверка целостности тома. Откройте справочник «Тома хранения файлов», затем карточку тома. В карточке есть команда проверки целостности: она строит отчёт с файлами, которые есть на диске, но не числятся в базе, и с записями, для которых файла на диске нет.
Лишние файлы из такого отчёта можно удалить или перенести в архивную папку. Записи без файла, наоборот, означают потерю данных: файл ищут в резервной копии папки тома.
Резервное копирование базы не включает тома. Папку тома копируют отдельно и в то же время, что и базу. Иначе после восстановления записи и файлы разойдутся.
Консоль кластера: подготовка сервера к удалению
В консоли администрирования серверов 1С нет команды удаления помеченных объектов. Удаление всегда запускается из самой базы. Консоль нужна, чтобы освободить базу от пользователей и фоновых заданий.
Порядок для клиент-серверной базы:
- Откройте консоль и разверните
Кластеры → (кластер) → Информационные базы → (ваша база). - Посмотрите ветку «Сеансы»: кто сейчас работает в базе.
- В свойствах базы включите «Блокировка начала сеансов включена», задайте сообщение и код разрешения.
- Завершите оставшиеся сеансы из контекстного меню.
Завершение сеанса обрывает работу пользователя без сохранения. Предупредите людей заранее и делайте это вне рабочего времени, например вечером или в выходной.
Тот же результат даёт команда из самой базы: Администрирование → Обслуживание → Блокировка работы пользователей. Она удобнее, если доступа к серверу у вас нет.
Новые версии Библиотеки стандартных подсистем умеют удалять помеченное без монопольного режима, прямо при работающих пользователях. Но объекты, которые кто-то держит открытыми, удалиться не смогут, а проверка ссылок на большой базе нагружает сервер. Для разового большого удаления блокировка всё равно надёжнее.
Ручная очистка папок на сервере: что можно, а что нельзя
Удалять файлы «руками» в проводнике можно только там, где 1С хранит временные данные, а не учётные.
| Что | Можно удалять вручную | Условие |
|---|---|---|
| Лишние файлы из отчёта проверки целостности тома | Да | Только те, что попали в отчёт как лишние |
| Остальные файлы в папке тома | Нет | Сломаются ссылки на файлы в документах |
Файл базы 1Cv8.1CD и его содержимое | Нет | Данные удаляются только из 1С |
Старые выгрузки .dt и копии баз | Да | Убедитесь, что есть свежая копия |
| Кэш клиента в профиле пользователя | Да | При закрытой 1С у этого пользователя |
Кэш клиента лежит в папках %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Его очистка не удаляет учётных данных, а только заставляет 1С заново скачать конфигурацию при входе. К помеченным объектам он отношения не имеет, но часто нужен после большого удаления, если в списках продолжают «мелькать» удалённые записи.
Автоматическое удаление помеченных объектов по расписанию и скриптом
Регламентное задание
Проще всего поручить удаление самой базе. В форме «Удаление помеченных объектов» в разделе Администрирование → Обслуживание есть флажок автоматического удаления по расписанию. Включите его и задайте время, например каждый день в 02:00.
Задание удаляет только то, на что нет ссылок. Объекты со ссылками остаются помеченными до ручного разбора.
Для клиент-серверной базы задания выполняет сервер. В файловой базе регламентные задания работают, только когда кто-то открыл базу, поэтому ночное расписание там не сработает без отдельного запуска.
Скрипт для файловой базы или внешнего планировщика
Если нужен запуск из планировщика Windows, сделайте внешнюю обработку и вызывайте её через командную строку. Код модуля формы обработки:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УдалитьПомеченныеНаСервере();
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УдалитьПомеченныеНаСервере()
Помеченные = НайтиПомеченныеНаУдаление();
Если Помеченные.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Попытка
УдалитьОбъекты(Помеченные, Истина);
Исключение
ЗаписьЖурналаРегистрации("Удаление помеченных",
УровеньЖурналаРегистрации.Ошибка, , ,
ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Второй параметр Истина включает контроль ссылок: платформа не удалит объект, на который есть ссылки. Не ставьте Ложь, иначе в документах останутся «битые» ссылки.
Файл запуска delete_marked.bat:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"robot" /P"пароль" /Execute"D:\Scripts\delete_marked.epf" /DisableStartupMessages
Для серверной базы вместо /F"путь" укажите /S"сервер\имябазы". Номер платформы подставьте свой.
Заведите для скрипта отдельного пользователя с полными правами и запускайте задачу ночью. Пароль в bat-файле храните на сервере с доступом только для администраторов.
Встроенное регламентное задание надёжнее этого скрипта: оно учитывает связанные данные конфигурации и пишет подробный протокол. Скрипт оправдан там, где задания не работают, то есть в файловой базе без пользователей ночью.
Облако 1С:Фреш и базы на SQL: свои особенности
Облачные базы
В облачных сервисах доступа к серверу, консоли и файловой системе нет. Удаление делают только из интерфейса программы: та же обработка в разделе Администрирование → Обслуживание. Блокировку пользователей включают там же.
Место в облаке после удаления освобождается на стороне провайдера. Сжимать базу пользователю не нужно и нечем.
Базы на MS SQL Server и PostgreSQL
Никогда не удаляйте помеченные записи SQL-запросом напрямую в таблицах. Платформа не узнает об удалении: останутся строки в табличных частях, движения регистров и ссылки на несуществующие объекты. Такую базу потом лечат тестированием и исправлением, а часть данных теряется.
SQL здесь полезен для другого: вернуть место на диске. После удаления сотен тысяч записей файл данных не уменьшается. Сжать его может администратор СУБД. В MS SQL Server это команда DBCC SHRINKFILE, в PostgreSQL — VACUUM FULL. Обе операции тяжёлые: запускайте их без пользователей и после резервной копии.
Сжатие файловой базы
Для файловой базы место возвращает Конфигуратор:
- Запустите базу в режиме Конфигуратора.
- Откройте
Администрирование → Тестирование и исправление. - Оставьте только флажок «Сжатие таблиц информационной базы».
- Нажмите «Выполнить».
Для этой операции нужен монопольный доступ: все пользователи должны выйти. После сжатия файл 1Cv8.1CD на базе с большим объёмом удалённых файлов иногда уменьшается в разы.