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

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

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

Как удалить файл в 1С: удаление присоединенных файлов, файлов из справочника, через встроенный язык и с диска. Пошаговые инструкции и типичные ошибки.

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

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

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

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

В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP, ЗУП) используется механизм присоединённых файлов из библиотеки стандартных подсистем. Файл, который вы прикрепляете к документу или элементу справочника, сохраняется либо в самой информационной базе (в виде двоичных данных), либо в томах на диске, если администратор настроил хранение в томах. В обоих случаях в базе существует элемент справочника, который связывает файл с объектом.

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

Удаление присоединённого файла через интерфейс

Самый частый сценарий — удалить скан, фото или документ, прикреплённый к объекту. Порядок действий в типовых конфигурациях одинаков. Откройте карточку объекта (документ, контрагент, товар), найдите панель или ссылку «Присоединенные файлы» (иногда это кнопка со скрепкой). Откроется список вложений. Выделите нужный файл и нажмите Delete или кнопку «Удалить» в меню «Ещё».

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

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

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

Удаление файлов из справочника «Файлы» и очистка хранилища

В конфигурациях с подсистемой «Работа с файлами» (например, 1С:Документооборот) существует полноценный справочник «Файлы» с версиями, статусами и папками. Здесь удаление выполняется из списка файлов: выделите элемент, пометьте на удаление, затем выполните удаление помеченных. Учтите, что файл, занятый для редактирования другим пользователем (статус «занят»), удалить нельзя — сначала нужно освободить его или отменить редактирование.

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

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

Разработчики и администраторы нередко удаляют файлы кодом — например, временные файлы после обмена или устаревшие выгрузки. Для этого используется метод УдалитьФайлы(). Он принимает путь и, при необходимости, маску.

// Удаление конкретного файла

УдалитьФайлы("C:\Обмен\выгрузка.xml");

// Удаление по маске — все xml в каталоге

УдалитьФайлы("C:\Обмен\", "*.xml");

// Безопасный вариант с проверкой существования

Файл = Новый Файл("C:\Обмен\выгрузка.xml");

Если Файл.Существует() Тогда

УдалитьФайлы(Файл.ПолноеИмя);

КонецЕсли;

Код может выполняться на клиенте или на сервере — это принципиально. В серверной процедуре путь относится к дискам сервера 1С, а не компьютера пользователя. Распространённая ошибка — попытка удалить «C:\Temp\файл.xml» на сервере, когда файл лежит на клиентской машине. Для клиент-серверного режима используйте явное разделение контекстов директивами &НаКлиенте и &НаСервере.

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

bsl
Попытка
    УдалитьФайлы(ПутьКФайлу);
Исключение
    ЗаписьЖурналаРегистрации("Удаление файла", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;

Удаление файлов выгрузки, обмена и временных файлов

Файлы выгрузки отчётности, обмена с банками и сайтами, печатные формы, сохранённые на диск, — это обычные файлы операционной системы, к базе 1С они не привязаны. Их можно удалять штатно через проводник Windows или файловый менеджер без всякого риска для базы. Единственное исключение — файлы, которые ещё ожидают отправки или загрузки контрагентом: проверьте статус обмена перед удалением.

Временные файлы 1С платформа создаёт в каталоге временных файлов пользователя (обычно %TEMP%) и в служебных папках базы. Их очистка безопасна, когда сеансы 1С закрыты. При работающей платформе часть файлов будет заблокирована — это нормально, такие файлы удалятся при следующей очистке. Для файловой базы не трогайте файл 1Cv8.1CD и служебные каталоги рядом с ним — это сама база.

Типичные ошибки
01
Удаление папки тома хранения вручную — карточки объектов начинают выдавать ошибку «файл не найден»
02
Удаление пометкой без запуска «Удаления помеченных объектов» — место в базе не освобождается, файлы продолжают занимать объём
03
Попытка удалить файл на диске клиента из серверного кода — путь указывает на сервер, операция не находит файл или удаляет не тот
04
Удаление файла обмена до подтверждения загрузки на стороне получателя — обмен приходится повторять

Проверка результата и восстановление после ошибочного удаления

После удаления присоединённого файла откройте карточку объекта заново: файл не должен отображаться в списке вложений. Если файл был помечен на удаление, но обработка удаления помеченных не выполнялась, он будет виден с пометкой — это нормальное промежуточное состояние. Для программного удаления проверяйте результат методом Файл.Существует() или анализируйте журнал регистрации, если запись ошибок настроена.

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

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

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

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

Удалённый файл отсутствует в списке

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

Файл виден с пометкой — не выполнено удаление помеченных

Физическое наличие файла на диске
Норма

Файл отсутствует, метод Файл.Существует() возвращает Ложь

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

Файл на месте — не хватило прав или он был занят процессом

Открытие других карточек с файлами
Норма

Остальные вложения открываются без ошибок

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

Ошибки «файл не найден» — повреждён том хранения

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

Почему после удаления файлов размер базы 1С не уменьшился?

Пометка на удаление и даже штатное удаление помеченных объектов не сжимают физический файл базы. Для файловой базы выполните тестирование и исправление с реструктуризацией или сделайте выгрузку/загрузку через dt. Для клиент-серверной базы сжатие выполняется средствами СУБД (например, shrink в MS SQL), и делать это должен администратор.

Можно ли удалить файл, если он занят другим пользователем?

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

Как удалить сразу все присоединённые файлы у группы документов?

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

Чем отличается УдалитьФайлы() от НайтиФайлы() с последующим удалением?

УдалитьФайлы() сразу удаляет по пути или маске без предварительного просмотра. Связка НайтиФайлы() + перебор позволяет сначала получить список, отфильтровать по дате или размеру и удалить выборочно — это безопаснее при очистке каталогов обмена.

Удалится ли файл с диска, если удалить элемент справочника «Файлы»?

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

Безопасно ли чистить папку temp у 1С?

Да, при закрытых сеансах 1С очистка каталога временных файлов безопасна и иногда помогает при ошибках кэша. Не путайте её с каталогом информационной базы — содержимое папки базы (файл 1Cv8.1CD, служебные каталоги) удалять нельзя.

Итог

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

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