Описываю возникший кейс.
Пользователи добавили прикрепленные файлы к проекту договора. Через день база пишет "Не удалось открыть файл "Данные недоступны, т.к. возможно файл был очищен как ненужный или удален антивирусной программой".
Понятно, что первое, что я сделал - наехал на админов, что файлы были, а теперь их нет. И т.к. это не первый подобный случай, то они поставили логирование. Как же мне было стыдно, что после включения логирования выяснилось, что файлы удаляет пользователь службы 1С.
Вот результаты логирования:
Что мы получили из логов, учитывая, что у нас тьма баз и все под одним пользователям - дату удаления файла.
Начали шерстить все журналы регистрации, что же произошло в эту секунду.
Нашли, что это было типовое фоновое задание по удалению помеченных на удаление объектов.
Оказывается теперь 1С очищает в томах сами файлы, если элемент справочника был помечен на удаление.
Но как же так, у нас боевая база и в ней данный файл не помечен, и никто его не собирался помечать на удаление.
Разворачиваем копию, где файлы ещё живы, открываем присоединенные файлы и там вроде всё норм, но ставим галочку "Показывать помеченные файлы", и уже картина становится понятна:
Получается, у нас 2 элемента справочника Файлы, которые ссылаются на один и тот же файл на диске.
У нас типовая 1С (по подсистеме работы с файлами), и она позволяет это делать.
Получается, при удалении помеченного файла система очищает и сам файл. И второй файл теперь пустой!
Тут несколько вариантов решения, которые хорошо, чтобы 1С реализовала в коробке - или не давать создавать файлы с одним именем, или хотя бы при удалении проверять, что есть другой элемент справочника с ссылкой на тот же файл. Я пока закомментировал удаление файла из каталога при пометке на удаление файла.