Проблема исчезновения прикрепленных файлов в конфигурациях уровня 1С:ERP или БИТ.ФИНАНС — это кошмар для системного администратора и пользователей. Ситуация, когда файлы удаляются физически с диска, при этом в журнале регистрации 1С нет прямых записей об удалении пользователем, требует глубокого понимания архитектуры хранения данных в платформе 1С:Предприятие 8.3.
В этой статье мы подробно разберем ситуацию, описанную в исходной проблеме: файлы пропадают "рандомно", физическое удаление происходит от имени пользователя, под которым запущен сервер 1С (обычно USR1CV8), а регламентные задания по очистке отключены. Мы проанализируем как очевидные, так и скрытые причины такого поведения, опираясь на механизмы Библиотеки Стандартных Подсистем (изучить которые поможет справочник по методам БСП) и особенности администрирования серверов.
Самая распространенная и опасная причина, по которой пропадают файлы в рабочей базе ("проде"), — это неправильно настроенные копии базы данных. Давайте разберем механику этого процесса, так как именно она упоминается как наиболее вероятная.
В современных конфигурациях (ERP, КА, УТ, БИТ.ФИНАНС) файлы часто хранятся не внутри самой базы данных (в таблицах SQL), а в томах на диске. Путь к этим томам прописывается в регистре сведений, например, ПутиКТомамХраненияФайлов.
Рассмотрим сценарий катастрофы:
Как это предотвратить?
При первом запуске копии базы (если она была перемещена) платформа 1С обычно задает вопрос: "Это копия базы или перемещенная база?".
Если выбрать ответ "Это копия", то платформа автоматически блокирует работу с внешними ресурсами, включая отправку почты и работу с томами файлов. Однако, если этот механизм был проигнорирован, сброшен или если администратор вручную включил регламентные задания в копии, угроза становится реальной.
Мы настоятельно рекомендуем в любой развернутой копии первым делом проверять настройки томов. Лучшая практика — очищать пути к томам в тестовых базах сразу после развертывания.
Если вы уверены, что копий базы нет или они изолированы, а файлы продолжают исчезать, необходимо поймать "виновника" за руку. Так как Журнал регистрации 1С не всегда фиксирует физическое удаление файла (особенно если это делает фоновый процесс платформы), нам поможет аудит на уровне Windows Server.
Рассмотрим, как настроить аудит для папки с томами:
После включения этой настройки, как только файл будет удален, в журнале событий Windows (Event Viewer -> Security) появится событие с кодом 4663 (An attempt was made to access an object). В деталях события вы увидите:
rphost.exe).Сопоставив точное время удаления из лога Windows с Журналом регистрации 1С, мы можем найти, какое фоновое задание или сеанс пользователя были активны в эту секунду. Это может указать на конкретный регламентный процесс.
В настройках томов хранения файлов (раздел Администрирование - Настройки работы с файлами - Тома хранения файлов) есть важные опции, определяющие политику очистки. Давайте проанализируем их.
Если настроена логика "Удалять файлы при удалении ссылок", система будет пытаться удалить физический файл, как только исчезнет последняя ссылка на него в базе данных. Здесь кроется нюанс работы БСП.
Существует регламентное задание "Очистка ненужных файлов". Даже если автор вопроса утверждает, что оно отключено, стоит проверить:
В БИТ.ФИНАНС и ERP файлы могут прикрепляться не напрямую к документу, а через регистры сведений или справочники "Присоединенные файлы". Если пользователь удаляет, например, запись в регистре визирования или истории согласования (думая, что чистит историю), система может посчитать, что файл стал "сиротой" (ссылок на него больше нет) и инициировать его физическое удаление.
Обратим внимание на особенности подсистемы БИТ.ФИНАНС. Часто файлы (сканы договоров, счетов) привязываются к механизму визирования.
Если в системе настроена автоматическая архивация или свертка процессов визирования, то удаление старых "Виз" может повлечь за собой удаление связанных файлов. Проверьте настройки модуля "Визирование": нет ли там включенных опций по удалению устаревших данных.
Если файлы пропадают, а причину найти не удается, и нужно срочно остановить потерю данных, применим метод "грубой силы". Мы ограничим права на уровне файловой системы.
Рассмотрим алгоритм действий:
USR1CV8).Что произойдет?
В следующий раз, когда 1С (будь то регламентное задание, копия базы или вирус) попытается удалить файл, операционная система заблокирует это действие и вернет ошибку "Access Denied".
Это даст два результата:
Именно момент возникновения этой ошибки и ее контекст (какой модуль кода ее вызвал) безошибочно укажут нам на истинного виновника проблемы.
Иногда проблема кроется не в удалении уже существующих файлов, а в том, что они не успевают записаться. Это может выглядеть как исчезновение: пользователь прикрепил файл, нажал "Записать", а через час файла нет.
Такое происходит при проблемах с Временным хранилищем. В веб-клиенте или тонком клиенте файл сначала передается во временное хранилище на сервер. Если в этот момент происходит рестарт рабочего процесса rphost, разрыв связи или сбой, ссылка в справочнике ПрисоединенныеФайлы может создаться, но физическое перемещение из временного хранилища в том не завершится успешно. В результате мы получаем ссылку на файл с размером 0 байт или ошибку при открытии.
Для устранения проблемы исчезновения файлов рекомендуем действовать в следующем порядке:
ПутиКТомамХраненияФайлов или используют свои собственные изолированные папки.Внимательный подход к изоляции контуров разработки (Dev/Test) от продуктивного контура (Prod) решает эту проблему в 90% случаев.