Очистка базы 1С 8.3 от помеченных объектов и присоединённых файлов

· 9 мин

Содержание

Помеченные на удаление документы, элементы справочников и присоединённые файлы в 1С 8.3 удаляют штатной обработкой: Администрирование → Обслуживание → Удаление помеченных объектов. Программа сама проверит ссылки, удалит то, на что ничего не ссылается, и покажет список того, что удалить нельзя. Сама пометка ничего не стирает: объект лежит в базе, пока его не удалят этой обработкой.

Порядок одинаковый для Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других конфигураций на Библиотеке стандартных подсистем. Отличается то, где физически хранятся файлы: внутри базы или в томах на диске. От этого зависит, освободится ли место после удаления и нужно ли что-то чистить вручную.

Что происходит с объектом и файлом после пометки на удаление

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

Физически удаляет только специальная процедура. Перед удалением она ищет ссылки на объект во всей базе:

  • 🔗 документ, на который ссылается другой документ (например, счёт в платёжке), не удалится;
  • 📎 присоединённый файл удалится вместе с владельцем или отдельно, если сам помечен;
  • 🗂 элемент справочника, который указан хотя бы в одном непомеченном документе, останется.

Где лежит содержимое файла, задаёт администратор:

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

Узнать способ можно в разделе Администрирование, в настройках работы с файлами: там переключатель хранения и ссылка на справочник «Тома хранения файлов».

Удаление помеченных на удаление объектов и файлов штатной обработкой

Обработка встроена во все типовые конфигурации. Права нужны административные: обычный бухгалтер её не увидит.

Шаг 1. Подготовка

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

Шаг 2. Запуск обработки

  1. Откройте Администрирование → Обслуживание.
  2. В группе «Корректировка данных» нажмите ссылку «Удаление помеченных объектов».
  3. Выберите режим: удалить всё помеченное автоматически или выборочно.
  4. При выборочном удалении программа покажет дерево помеченных объектов. Снимите флажки с того, что хотите оставить.
  5. Нажмите «Удалить» и дождитесь окончания. На базе в несколько гигабайт с десятками тысяч помеченных объектов это занимает от нескольких минут до часа.

Шаг 3. Разбор того, что не удалилось

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

  • ✅ пометить на удаление и мешающий объект, если он тоже лишний, и запустить обработку снова;
  • ❌ снять пометку с объекта, если ссылка на него нужна.

Шаг 4. Проверка результата

Откройте журнал регистрации: Администрирование → Обслуживание → Журнал регистрации. Отберите события удаления за сегодняшний день. Там видно, кто запустил обработку, сколько объектов удалено и какие ошибки возникли.

Если вместе с документами удалялись присоединённые файлы, откройте пару документов, где файлы были нужны, и проверьте, что вложения на месте. Это быстрый способ убедиться, что под удаление не попало лишнее.

Нужный файл из помеченного документа перед удалением можно просто сохранить на компьютер из карточки: команда сохранения есть в списке присоединённых файлов. Так ничего не потеряется, даже если сам документ уйдёт.

Если ссылки в «Администрировании» нет

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

  1. В главном меню (кнопка с тремя полосками) откройте Сервис и настройки → Параметры и включите «Режим технического специалиста».
  2. В главном меню появится команда «Функции для технического специалиста».
  3. Откройте ветку Стандартные → Удаление помеченных объектов.

Если у объекта нет кнопки «Пометить на удаление», а есть «Удалить», значит, в базе включено непосредственное удаление для этого пользователя. Тогда запись стирается сразу, без пометки и без проверки ссылок. Давать такое право бухгалтерам не стоит.

Диагностика: выберите симптом

Как удалить файлы из томов хранения на сервере

Если файлы хранятся в томах, каждая запись справочника файлов указывает на конкретный файл в папке тома. Штатное удаление помеченных объектов убирает и запись, и файл на диске. Поэтому правильный путь удаления файлов всегда один: пометить в 1С → удалить обработкой.

Лишние файлы в томе

Со временем в папке тома могут появиться файлы, к которым в базе нет записей. Причины:

  • 💥 обрыв связи при записи файла;
  • 🔄 восстановление базы из старой копии, при котором папка тома осталась новой;
  • ✋ ручное копирование файлов в папку.

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

Лишние файлы из такого отчёта можно удалить или перенести в архивную папку. Записи без файла, наоборот, означают потерю данных: файл ищут в резервной копии папки тома.

Резервное копирование базы не включает тома. Папку тома копируют отдельно и в то же время, что и базу. Иначе после восстановления записи и файлы разойдутся.

Консоль кластера: подготовка сервера к удалению

В консоли администрирования серверов 1С нет команды удаления помеченных объектов. Удаление всегда запускается из самой базы. Консоль нужна, чтобы освободить базу от пользователей и фоновых заданий.

Порядок для клиент-серверной базы:

  1. Откройте консоль и разверните Кластеры → (кластер) → Информационные базы → (ваша база).
  2. Посмотрите ветку «Сеансы»: кто сейчас работает в базе.
  3. В свойствах базы включите «Блокировка начала сеансов включена», задайте сообщение и код разрешения.
  4. Завершите оставшиеся сеансы из контекстного меню.

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

Тот же результат даёт команда из самой базы: Администрирование → Обслуживание → Блокировка работы пользователей. Она удобнее, если доступа к серверу у вас нет.

Новые версии Библиотеки стандартных подсистем умеют удалять помеченное без монопольного режима, прямо при работающих пользователях. Но объекты, которые кто-то держит открытыми, удалиться не смогут, а проверка ссылок на большой базе нагружает сервер. Для разового большого удаления блокировка всё равно надёжнее.

Ручная очистка папок на сервере: что можно, а что нельзя

Удалять файлы «руками» в проводнике можно только там, где 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. Обе операции тяжёлые: запускайте их без пользователей и после резервной копии.

Сжатие файловой базы

Для файловой базы место возвращает Конфигуратор:

  1. Запустите базу в режиме Конфигуратора.
  2. Откройте Администрирование → Тестирование и исправление.
  3. Оставьте только флажок «Сжатие таблиц информационной базы».
  4. Нажмите «Выполнить».

Для этой операции нужен монопольный доступ: все пользователи должны выйти. После сжатия файл 1Cv8.1CD на базе с большим объёмом удалённых файлов иногда уменьшается в разы.

Удаление помеченных: порядок без потерь
Выполнено: 0 / 6

Частые вопросы об удалении помеченных объектов

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