Почему в 1С:ERP и БИТ.ФИНАНС исчезают прикрепленные файлы: разбор причин и решение проблемы

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

Проблема исчезновения прикрепленных файлов в конфигурациях уровня 1С:ERP или БИТ.ФИНАНС — это кошмар для системного администратора и пользователей. Ситуация, когда файлы удаляются физически с диска, при этом в журнале регистрации 1С нет прямых записей об удалении пользователем, требует глубокого понимания архитектуры хранения данных в платформе 1С:Предприятие 8.3.

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

Главный подозреваемый: Тестовые копии базы данных

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

В современных конфигурациях (ERP, КА, УТ, БИТ.ФИНАНС) файлы часто хранятся не внутри самой базы данных (в таблицах SQL), а в томах на диске. Путь к этим томам прописывается в регистре сведений, например, ПутиКТомамХраненияФайлов.

Рассмотрим сценарий катастрофы:

  1. Администратор делает бэкап рабочей базы (Productive) и разворачивает его в тестовую среду (Test/Dev) для программистов или консультантов.
  2. Вместе с данными в тестовую базу переносятся настройки путей к томам файлов. То есть тестовая база начинает "смотреть" в ту же сетевую папку или локальный каталог, что и рабочая база.
  3. Разработчик или тестировщик в тестовой базе решает "почистить мусор", запускает обработку свертки, выполняет удаление помеченных на удаление объектов или просто тестирует удаление документа.
  4. Платформа 1С в тестовой базе видит команду "Удалить файл". Она обращается по пути, указанному в настройках (а это рабочий путь!), и физически удаляет файл с диска.
  5. В рабочей базе ссылка на файл остается, но при попытке открыть его пользователь получает ошибку "Файл не найден".

Как это предотвратить?

При первом запуске копии базы (если она была перемещена) платформа 1С обычно задает вопрос: "Это копия базы или перемещенная база?".

Если выбрать ответ "Это копия", то платформа автоматически блокирует работу с внешними ресурсами, включая отправку почты и работу с томами файлов. Однако, если этот механизм был проигнорирован, сброшен или если администратор вручную включил регламентные задания в копии, угроза становится реальной.

Мы настоятельно рекомендуем в любой развернутой копии первым делом проверять настройки томов. Лучшая практика — очищать пути к томам в тестовых базах сразу после развертывания.

Диагностика средствами операционной системы: Аудит файлов

Если вы уверены, что копий базы нет или они изолированы, а файлы продолжают исчезать, необходимо поймать "виновника" за руку. Так как Журнал регистрации 1С не всегда фиксирует физическое удаление файла (особенно если это делает фоновый процесс платформы), нам поможет аудит на уровне Windows Server.

Рассмотрим, как настроить аудит для папки с томами:

  1. Откройте свойства папки, где хранятся тома с файлами.
  2. Перейдите на вкладку Безопасность (Security) -> Дополнительно (Advanced).
  3. Перейдите на вкладку Аудит (Auditing).
  4. Нажмите "Добавить" и выберите пользователя, под которым работает служба сервера 1С (или группу "Все", если хотите видеть всех).
  5. В типе доступа выберите "Успех" (Success).
  6. Нажмите "Показать дополнительные разрешения" и отметьте галочкой только Удаление (Delete) и Удаление подпапок и файлов.

После включения этой настройки, как только файл будет удален, в журнале событий Windows (Event Viewer -> Security) появится событие с кодом 4663 (An attempt was made to access an object). В деталях события вы увидите:

Сопоставив точное время удаления из лога Windows с Журналом регистрации 1С, мы можем найти, какое фоновое задание или сеанс пользователя были активны в эту секунду. Это может указать на конкретный регламентный процесс.

Проблема "висячих" ссылок и настроек тома

В настройках томов хранения файлов (раздел Администрирование - Настройки работы с файлами - Тома хранения файлов) есть важные опции, определяющие политику очистки. Давайте проанализируем их.

Если настроена логика "Удалять файлы при удалении ссылок", система будет пытаться удалить физический файл, как только исчезнет последняя ссылка на него в базе данных. Здесь кроется нюанс работы БСП.

Существует регламентное задание "Очистка ненужных файлов". Даже если автор вопроса утверждает, что оно отключено, стоит проверить:

В БИТ.ФИНАНС и ERP файлы могут прикрепляться не напрямую к документу, а через регистры сведений или справочники "Присоединенные файлы". Если пользователь удаляет, например, запись в регистре визирования или истории согласования (думая, что чистит историю), система может посчитать, что файл стал "сиротой" (ссылок на него больше нет) и инициировать его физическое удаление.

Специфика БИТ.ФИНАНС: Визирование и процессы

Обратим внимание на особенности подсистемы БИТ.ФИНАНС. Часто файлы (сканы договоров, счетов) привязываются к механизму визирования.

Если в системе настроена автоматическая архивация или свертка процессов визирования, то удаление старых "Виз" может повлечь за собой удаление связанных файлов. Проверьте настройки модуля "Визирование": нет ли там включенных опций по удалению устаревших данных.

Экстренная мера: Блокировка удаления на уровне NTFS

Если файлы пропадают, а причину найти не удается, и нужно срочно остановить потерю данных, применим метод "грубой силы". Мы ограничим права на уровне файловой системы.

Рассмотрим алгоритм действий:

  1. Зайдите на сервер, где лежит папка с томами.
  2. В свойствах безопасности папки найдите пользователя, под которым работает сервер 1С (USR1CV8).
  3. Нажмите "Дополнительно".
  4. Измените права: оставьте права на Чтение и Запись, но явно запретите (Deny) или уберите галочку с права Удаление (Delete) и Удаление подпапок и файлов.

Что произойдет?

В следующий раз, когда 1С (будь то регламентное задание, копия базы или вирус) попытается удалить файл, операционная система заблокирует это действие и вернет ошибку "Access Denied".

Это даст два результата:

  1. Файлы перестанут исчезать.
  2. В Журнале регистрации 1С или в технологическом журнале (если он настроен) появится ошибка с текстом "Ошибка удаления файла... Отказано в доступе".

Именно момент возникновения этой ошибки и ее контекст (какой модуль кода ее вызвал) безошибочно укажут нам на истинного виновника проблемы.

Временное хранилище и клиент-серверное взаимодействие

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

Такое происходит при проблемах с Временным хранилищем. В веб-клиенте или тонком клиенте файл сначала передается во временное хранилище на сервер. Если в этот момент происходит рестарт рабочего процесса rphost, разрыв связи или сбой, ссылка в справочнике ПрисоединенныеФайлы может создаться, но физическое перемещение из временного хранилища в том не завершится успешно. В результате мы получаем ссылку на файл с размером 0 байт или ошибку при открытии.

Резюме по поиску решения

Для устранения проблемы исчезновения файлов рекомендуем действовать в следующем порядке:

  1. Проверка копий: Убедитесь, что все тестовые базы имеют очищенный регистр ПутиКТомамХраненияФайлов или используют свои собственные изолированные папки.
  2. Защита данных: Временно запретите удаление файлов на уровне прав Windows для пользователя сервера 1С.
  3. Мониторинг: Включите аудит файловой системы на папку тома, чтобы зафиксировать точное время и процесс удаления.
  4. Анализ кода: Если удаление происходит строго по расписанию, ищите регламентные задания (в том числе в БИТ.ФИНАНС), связанные с очисткой "мусора", версионированием или архивацией процессов.

Внимательный подход к изоляции контуров разработки (Dev/Test) от продуктивного контура (Prod) решает эту проблему в 90% случаев.

← На главную