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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Разберем архитектуру хранения файлов

Прежде чем приступать к удалению, проанализируем ситуацию: где именно «прячутся» эти файлы? В современных конфигурациях 1С файлы не являются частью самого документа. Для каждого типа объектов, поддерживающих прикрепление файлов (например, «Счет на оплату»), создается отдельный справочник. Обычно он называется по принципу [ИмяОбъекта]ПрисоединенныеФайлы (например, СчетаНаОплатуКлиентамПрисоединенныеФайлы).

Помимо самих справочников, информация фиксируется в следующих местах:

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

Выясним причину: почему файл не помечается на удаление?

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

  1. Блокировка редактирования. Если файл был открыт кем-то из пользователей для просмотра или правки, в поле Редактирует записывается ссылка на этого пользователя. Пока это поле не очищено, система блокирует любые изменения объекта, включая установку пометки удаления.
  2. Статус Электронного Документооборота (ЭДО). Если файл является частью юридически значимого документа, который был подписан или отправлен через оператора ЭДО, стандартные механизмы удаления будут заблокированы подсистемой обмена для соблюдения регламента хранения первичных документов.
  3. Потеря связи с хранилищем. Если база была настроена на хранение файлов в томах на диске, а файлы физически были удалены или перемещены без участия 1С, ссылка в базе становится «фантомной».

Способ 1: Использование стандартного инструмента «Очистка файлов»

Для конфигураций на базе БСП (Библиотеки стандартных подсистем) предусмотрен штатный механизм. Рассмотрим порядок действий:

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

Способ 2: Ручная очистка через «Все функции»

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

  1. Откроем через меню Функции для технического специалиста (или «Все функции») список нужного справочника присоединенных файлов.
  2. Найдем файл, который не получается удалить, и откроем его карточку.
  3. Важный момент: найдем поле Редактирует:. Если там указан пользователь, очистим это поле. Без этого шага интерактивное удаление часто невозможно.
  4. Нажмем Записать и закрыть.
  5. Теперь попробуем нажать Del (пометить на удаление). Теперь пометка должна установиться корректно.

Способ 3: Групповая обработка объектов

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

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

Особенности работы с Электронными документами (ЭД)

Если вы работаете с электронными документами, которые «зависли» в пути, стандартных средств справочников может быть недостаточно. Рассмотрим пример программной очистки или использования специализированных обработок. В некоторых случаях помогает переход в рабочее место Текущие дела ЭДО и перевод документов в архив, либо аннулирование, если это позволяет регламент. Если же база тестовая и документы нужно «убить» физически, программисты используют простейшие скрипты.

Посмотрим на пример логики программного удаления:


Выборка = Справочники.СчетаНаОплатуКлиентамПрисоединенныеФайлы.Выбрать();
Пока Выборка.Следующий() Цикл
    ОбъектФайл = Выборка.ПолучитьОбъект();
    ОбъектФайл.УстановитьПометкуУдаления(Истина);
КонецЦикла;

Однако помните, что просто установка пометки не удаляет данные из таблиц. После этого обязательно нужно запустить стандартную процедуру Удаление помеченных объектов.

Перенос файлов в тома как альтернатива удалению

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

Рассмотрим процесс переноса:

  1. В разделе Администрирование — Настройки работы с файлами установим флаг Хранить файлы в томах на диске.
  2. Создадим новый Том хранения файлов, указав путь к сетевой папке в формате UNC (например, \\Server\1C_Files).
  3. Запустим обработку Перенос файлов в тома.

Система проанализирует все двоичные данные в справочниках присоединенных файлов, скопирует их в указанную папку и очистит место в базе данных, оставив только ссылки. Это позволяет уменьшить размер .1CD файла или SQL-таблицы Config в несколько раз, при этом документы останутся доступными для пользователей.

Предупреждение о «вандализме» в базе данных

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

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

← На главную