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

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

Как удалить присоединенные файлы в 1С 8.3

Как удалить присоединенные файлы в 1С 8.3: из карточки объекта, через список файлов, обработкой и программно. Очистка хранилища, риски и проверка результата.

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

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

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

Где 1С хранит присоединенные файлы и почему это важно

Перед удалением нужно понять, как настроено хранение в вашей базе — от этого зависит, что именно нужно чистить. В типовых конфигурациях на базе БСП (УТ 11, ERP, Бухгалтерия 3.0, ЗУП 3.1) есть два варианта хранения: в информационной базе (внутри таблиц SQL или файла 1Cv8.1CD) и в томах на диске (файлы лежат в сетевой папке, а в базе хранятся только ссылки на них).

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

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

Как удалить один файл из карточки объекта

Это самый частый сценарий: пользователь прикрепил не тот скан или устаревшую версию документа. Откройте объект, к которому прикреплен файл (документ, элемент справочника), и перейдите к списку присоединенных файлов. Обычно это команда «Присоединенные файлы» на панели навигации формы или кнопка со скрепкой в командной панели.

В открывшемся списке выделите нужный файл и нажмите клавишу Delete или кнопку «Удалить» в меню «Еще». Программа задаст вопрос о пометке на удаление — подтвердите. Файл станет помеченным на удаление: он перестанет отображаться в стандартных списках (в зависимости от настроек отбора), но физически еще останется в базе.

Если файл открыт на редактирование (захвачен), удалить его не получится — сначала нужно освободить захват: в карточке файла нажмите «Освободить» или завершите редактирование. Также проверьте, что у вас есть права на удаление присоединенных файлов — при ограниченных правах кнопка удаления может быть недоступна.

Порядок действий
  1. 1
    Откройте объект (документ или элемент справочника), к которому прикреплен файл
  2. 2
    Нажмите «Присоединенные файлы» на панели навигации или кнопку со скрепкой
  3. 3
    Выделите файл и нажмите Delete, подтвердите пометку на удаление
  4. 4
    Проверьте, что файл исчез из списка
  5. 5
    Запустите «Удаление помеченных объектов» для окончательной очистки

Окончательное удаление через «Удаление помеченных объектов»

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

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

Если на файл ссылаются другие объекты (например, он указан в каком-то документе или используется как версия), удаление будет заблокировано, и программа покажет список ссылающихся объектов. Сначала уберите ссылки или пометьте на удаление связанные объекты, затем повторите операцию.

Массовое удаление файлов: обработки и групповое изменение

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

Первый — типовая обработка «Групповое изменение реквизитов» (доступна в разделе «Администрирование» → «Обслуживание» → «Корректировка данных» в конфигурациях на БСП). Выберите вид объектов «Присоединенные файлы» (или специфичный справочник вашей конфигурации, например «НоменклатураПрисоединенныеФайлы»), задайте отбор по дате, владельцу или размеру и установите пометку удаления для отобранных элементов.

Второй вариант — список файлов через «Все функции»: откройте справочник присоединенных файлов, настройте отбор, выделите все строки (Ctrl+A) и нажмите Delete. Это быстрее обработки, но менее управляемо при больших объемах. Третий вариант — универсальные обработки с ИТС или самописные: они позволяют сразу удалять файлы физически из томов и вести протокол.

Сравнение вариантов массового удаления

Удаление помеченных объектов

Штатно и безопасно, контролирует ссылки. Минусы: требует монопольного режима, удаляет только помеченное, не чистит тома на диске.

Групповое изменение реквизитов

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

Самописная обработка

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

Программное удаление через встроенный язык

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

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Файлы.Ссылка

|ИЗ

| Справочник.ПрисоединенныеФайлы КАК Файлы

|ГДЕ

| Файлы.ДатаСоздания < &ГраницаДаты";

Запрос.УстановитьПараметр("ГраницаДаты", ДобавитьМесяц(ТекущаяДата(), -24));

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

ФайлОбъект = Выборка.Ссылка.ПолучитьОбъект();

ФайлОбъект.Удалить(); // физическое удаление без пометки

КонецЦикла;

Метод Удалить() у объекта удаляет запись сразу, минуя пометку, и не контролирует ссылочную целостность — это быстрее, но опаснее. Безопасный вариант: ФайлОбъект.УстановитьПометкуУдаления(Истина) с последующим штатным удалением помеченных. Для поиска файлов-«сирот» (записей, у которых владелец удален) добавьте в запрос проверку, что владелец файла помечен на удаление или отсутствует.

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

Очистка томов хранения файлов на диске

Если файлы хранятся в томах на диске, удаление записей в 1С оставляет сами файлы в папках томов нетронутыми. Со временем там скапливаются гигабайты «мертвых» данных. Путь к тому указан в справочнике «Тома хранения файлов»: там задается полный путь к каталогу на сервере.

Алгоритм очистки такой: сначала удалите записи о файлах в 1С (пометка + удаление помеченных), затем сравните содержимое папок томов с оставшимися в базе ссылками. Файлы, на которые нет ссылок в справочниках, можно удалять. Ручное сравнение при большом числе файлов непрактично — используйте обработку, которая выгружает список путей из базы и сверяет с содержимым каталога, формируя список лишних файлов.

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

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

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

Частая ситуация: файлы удалены, а размер базы не изменился. Это нормально — удаленные данные остаются внутри файла базы как свободное место. Для файловой базы выполните сжатие: запустите конфигуратор, откройте «Администрирование» → «Тестирование и исправление», отметьте «Сжатие таблиц информационной базы» и выполните. Операция требует монопольного доступа и при большом объеме может занять продолжительное время.

Для клиент-серверных баз на MS SQL сокращение файла данных выполняется средствами СУБД (shrink), но делать это рекомендуется осознанно: частое сжатие приводит к фрагментации индексов. На PostgreSQL аналогичную роль играет VACUUM FULL. В любом случае сначала убедитесь, что файлы действительно удалены, а не просто помечены.

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

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

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

Список присоединенных файлов у объекта
Норма

Удаленный файл не отображается, остальные открываются

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

Файл виден с пометкой или при открытии ошибка «файл не найден»

Удаление помеченных объектов
Норма

Обработка завершилась без списка неудаленных файлов

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

Есть объекты, которые нельзя удалить из-за ссылок

Размер базы или папки тома
Норма

После сжатия таблиц/очистки тома объем уменьшился

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

Объем прежний — данные помечены, но физически не удалены

Журнал регистрации
Норма

Нет ошибок обращения к файлам после очистки

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

Ошибки «файл не найден в томе» — удалены лишние файлы с диска

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

Можно ли восстановить удаленный присоединенный файл?

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

Почему кнопка удаления файла недоступна?

Чаще всего дело в правах: у роли пользователя нет права «Удаление» на справочник присоединенных файлов. Вторая причина — файл захвачен для редактирования другим пользователем. Третья — в конфигурации настроен запрет удаления файлов с определенным статусом или подписанных ЭЦП.

Удаляются ли файлы вместе с документом-владельцем?

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

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

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

Файлы хранятся в томах, но папка тома недоступна — как удалить записи?

Записи в справочнике удаляются независимо от доступности тома: пометьте их на удаление и выполните «Удаление помеченных объектов». Ошибка доступа к тому возникнет только при попытке открыть или сохранить сам файл. После восстановления доступа к папке отдельно удалите файлы-«сироты» на диске.

Можно ли настроить автоматическое удаление старых вложений?

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

Итог

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

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