Администрирование · 10 мин
Как удалить все присоединённые файлы в 1С
Как удалить все присоединённые файлы в 1С: массовая очистка через обработку, типовые средства и код. Проверка результата, риски и типичные ошибки.
Присоединённые файлы в 1С накапливаются годами: сканы документов, фото товаров, печатные формы, архивы. Со временем хранилище разрастается, база становится тяжёлой, резервные копии занимают всё больше места и времени. Удалить файлы по одному через карточки объектов непрактично, поэтому для массовой очистки используют типовые механизмы конфигурации, внешние обработки или программный код.
Перед любой массовой операцией важно понять, где именно хранятся файлы. В типовых конфигурациях на БСП (Управление торговлей, ERP, Бухгалтерия, ЗУП) применяется справочник присоединённых файлов, а сами данные могут лежать в информационной базе (в хранилище значения) или в томах на диске. От этого зависит и способ удаления, и ожидаемый эффект: если файлы хранятся в томах, очистка записей в базе не освободит место на диске без дополнительных действий.
Массовое удаление — необратимая операция. Восстановить файлы без резервной копии невозможно, поэтому любой сценарий начинается с создания выгрузки базы или полного бэкапа, включая тома хранения файлов.
Где 1С хранит присоединённые файлы
В конфигурациях на базе Библиотеки стандартных подсистем присоединённые файлы учитываются в справочниках вида «ИмяОбъектаПрисоединенныеФайлы» — например, «НоменклатураПрисоединенныеФайлы» или «ПоступлениеТоваровУслугПрисоединенныеФайлы». Каждая запись содержит ссылку на владельца, имя файла, расширение, размер и указание места хранения.
Сами двоичные данные размещаются одним из двух способов. Первый — в информационной базе: содержимое файла лежит в хранилище значения внутри базы, и её размер растёт напрямую. Второй — в томах на диске: в базе остаётся только путь к файлу, а сам файл лежит в сетевой или локальной папке. Режим задаётся в настройках хранения файлов (обычно раздел «Администрирование» → «Обслуживание» или «Настройки работы с файлами»).
Понять текущий режим можно по размеру базы и по структуре каталогов томов. Если в настройках указаны тома и папки реально заполнены файлами — работает дисковое хранение. Если томов нет, а база велика относительно количества данных — файлы, скорее всего, внутри неё.
Подготовка: резервная копия и оценка объёма
Первый шаг — полная резервная копия. Для файловой базы достаточно скопировать файл 1Cv8.1CD при остановленной работе пользователей. Для клиент-серверной — выполнить выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу) или сделать бэкап средствами СУБД. Если файлы хранятся в томах, скопируйте и каталоги томов целиком.
Затем оцените объём предстоящей очистки. Откройте список справочника присоединённых файлов и посмотрите количество записей и суммарный размер — во многих конфигурациях колонка «Размер» доступна в настройках списка. Это поможет спланировать время операции: удаление сотен тысяч записей может занять часы и потребовать монопольного доступа.
Способ 1: типовая пометка на удаление
Самый безопасный вариант без программирования — пометить записи справочника на удаление и затем использовать штатную обработку «Удаление помеченных объектов» (Администрирование → Обслуживание). Пометить можно вручную через список справочника: выделить все записи (Ctrl+A) и нажать «Пометить на удаление». В некоторых конфигурациях список ограничивает вывод, поэтому для очень больших объёмов способ неудобен.
После пометки запустите «Удаление помеченных объектов» в монопольном режиме. Обработка проверит ссылки на помеченные записи: если на файл ссылаются другие объекты, удаление будет заблокировано, и программа покажет список мешающих ссылок. Их придётся разобрать вручную — либо очистить ссылки, либо оставить эти файлы.
- 1Сделайте резервную копию базы и томов
- 2Откройте справочник присоединённых файлов нужного вида
- 3Выделите записи и пометьте на удаление
- 4Завершите работу пользователей, запустите «Удаление помеченных объектов» в монопольном режиме
- 5Разберите объекты, мешающие удалению, и повторите
- 6Проверьте освобождение места и работу связанных документов
Учтите ограничение: если файлы хранятся в томах на диске, типовое удаление записей обычно удаляет и сами файлы из тома — но при ошибках доступа к каталогу файлы могут остаться. Проверьте содержимое томов после операции и при необходимости очистите «осиротевшие» файлы вручную.
Способ 2: программное удаление через код
Для больших объёмов и точного контроля удобнее написать обработку. Логика проста: запросом выбрать все записи нужного справочника присоединённых файлов, в цикле получить объект и вызвать удаление. Работать лучше порциями с фиксацией транзакций, чтобы не создавать одну гигантскую транзакцию и не блокировать базу надолго.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.НоменклатураПрисоединенныеФайлы");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектФайла = Выборка.Ссылка.ПолучитьОбъект();
ОбъектФайла.Удалить();
КонецЦикла;Если нужно удалить файлы только определённого вида (например, только изображения или только файлы старше даты), добавьте условия в запрос: отбор по расширению, по дате изменения, по владельцу. Для файлов в томах после удаления записей отдельно пройдитесь по каталогам томов и удалите файлы, на которые больше нет ссылок, — либо используйте штатную проверку целостности томов, если она предусмотрена конфигурацией.
Запускайте код сначала на копии базы. Прямое удаление объектов обходит часть прикладных проверок, поэтому тест на копии обязателен: убедитесь, что документы и карточки открываются без ошибок, а отчёты, использующие файлы, не ломаются.
Способ 3: внешние обработки и групповая обработка справочников
Во многих конфигурациях есть типовая обработка «Групповое изменение реквизитов» (Администрирование → Обслуживание → Корректировка данных). Она умеет работать со справочниками, включая присоединённые файлы, и позволяет установить пометку удаления по произвольному отбору — например, по всем файлам конкретного владельца или по расширению. Это удобный компромисс между ручной пометкой и написанием кода.
Также существуют внешние обработки очистки присоединённых файлов. Используйте только проверенные обработки из доверенных источников и обязательно тестируйте их на копии: сторонний код с прямым удалением способен повредить данные при несовпадении версий конфигурации.
Сравнение способов
Безопасно, без кода; медленно на больших объёмах и требует разбора ссылок
Быстро и гибко по отборам; требует навыков, теста на копии и обходит часть проверок
Штатный инструмент с отборами; только пометка, финальное удаление всё равно через обработку
Очистка томов и сжатие базы после удаления
Удаление записей не всегда освобождает место автоматически. Если файлы хранились внутри базы, физический размер файла 1Cv8.1CD или таблиц СУБД уменьшится только после сжатия: для файловой базы — тестирование и исправление с включённым сжатием, для клиент-серверной — операции shrink средствами СУБД. Без этого место останется зарезервированным внутри файла базы.
Если использовались тома, проверьте каталоги томов на предмет файлов, оставшихся без записей в базе. Несоответствие возникает при сбоях, ручном копировании или прерывании транзакций. Очистку выполняйте аккуратно: сначала сформируйте список файлов, на которые нет ссылок, и только потом удаляйте.
Как проверить результат
Список пуст или содержит только нужные файлы
Записи остались, хотя удаление завершилось без ошибок
Размер заметно уменьшился
Размер не изменился — сжатие не выполнялось
В каталогах только файлы с живыми ссылками
Есть файлы без записей в базе или битые ссылки
Всё открывается без сообщений об отсутствующих файлах
Ошибки вида «файл не найден» — удалено лишнее
Типичные ошибки и ограничения
Отдельное ограничение касается электронного документооборота: файлы, участвующие в ЭДО (подписанные документы, квитанции), удалять нельзя — это юридически значимые данные. Перед массовой очисткой исключите из отбора файлы, связанные с документами ЭДО, и файлы, на которые ссылаются действующие обмены с сайтом или другими системами.
Ещё одна ловушка — права доступа. Для удаления нужны права на справочники присоединённых файлов и, для монопольных операций, права администратора. Проверьте права заранее, иначе обработка завершится частично.
Что важно запомнить
Сначала резервная копия базы и томов, затем удаление — типовое, программное или через групповую обработку. После удаления выполните сжатие базы и очистку томов, проверьте открытие документов. Файлы ЭДО и связанные с обменами данные из отбора исключайте.
Частые вопросы
Удалятся ли сами файлы с диска при удалении записей в базе?
Если включено хранение в томах, типовые механизмы обычно удаляют файл из тома вместе с записью. Но при ошибках доступа к каталогу файлы могут остаться — после очистки проверьте тома и удалите осиротевшие файлы вручную.
Почему размер базы не уменьшился после удаления файлов?
СУБД и файловый формат 1С не отдают место операционной системе автоматически. Для файловой базы выполните тестирование и исправление со сжатием, для клиент-серверной — сжатие средствами СУБД.
Можно ли удалить файлы только определённого типа, например все PDF?
Да. В запросе или в отборе групповой обработки добавьте условие по расширению файла. Также доступны отборы по дате изменения, размеру и владельцу.
Что делать, если удаление блокируется ссылками на файлы?
Обработка «Удаление помеченных объектов» покажет список объектов, которые ссылаются на файлы. Откройте их и очистите ссылки, либо исключите эти файлы из удаления, если они ещё нужны.
Можно ли восстановить удалённые присоединённые файлы?
Только из резервной копии: для файловой базы — восстановить файл 1Cv8.1CD, для клиент-серверной — бэкап СУБД, плюс копию томов, если файлы хранились на диске. Без копии восстановление невозможно.
Нужен ли монопольный режим для удаления?
Для штатного удаления помеченных объектов — да, иначе часть записей окажется заблокированной. Программная обработка порциями может работать без монопольного доступа, но риск конфликтов с пользователями возрастает.