В процессе эксплуатации 1С:Управление нашей фирмой 3.0 пользователи часто сталкиваются с мистической на первый взгляд проблемой: файлы печатей, загруженные в карточку организации для использования в факсимиле, исчезают через несколько дней. При попытке отправить счет на оплату система выдает критическую ошибку: "Не удалось открыть файл... Файл помечен на удаление и очищен как ненужный". При этом подписи ответственных лиц остаются на месте, а страдают только изображения печатей. Проанализируем причины этой ситуации и разберем по шагам методы её решения.
Прежде чем изменять настройки системы, нам необходимо выяснить, какой именно процесс инициирует пометку файла на удаление. В 1С:УНФ за работу с файлами отвечает Библиотека стандартных подсистем (БСП), и любые изменения фиксируются в Журнале регистрации, для которого также доступна выгрузка журнала регистрации в Excel с группировкой.
Рассмотрим порядок действий для локализации проблемы:
Данные.Изменение и Данные.Удаление.Организации присоединенные файлы.Проанализируем ситуацию, описанную пользователями: если в 22:30 происходит "Изменение", а ночью "Удаление", значит, вечером какая-то обработка ставит пометку удаления, а ночное задание Автоматическое удаление помеченных объектов окончательно стирает данные. Выясним, что скрывается под номером сеанса вечернего изменения. Для этого нужно найти в журнале событие Фоновое задание. Запуск с тем же номером сеанса — там будет указано имя регламентного задания.
Одной из специфических причин для 1С:УНФ является работа ассистента Даша. Рассмотрим, как программный код ассистента может влиять на присоединенные файлы. Когда ассистент формирует печатные формы (например, при массовой рассылке счетов или уведомлений о задолженности), система создает временные копии файлов для формирования PDF. В некоторых версиях конфигурации из-за ошибки в логике Даша может ошибочно помечать основной файл печати как "временный" или "отработанный".
Почему это происходит не у всех организаций? Выясним причину: ассистент работает только с теми объектами, по которым есть активные задачи (задолженность, новые заказы). Если по одной из организаций движения отсутствуют, её файлы остаются в сохранности. Чтобы проверить эту гипотезу, рекомендуется временно отключить все задачи ассистента в разделе CRM — Ассистент управления и понаблюдать за состоянием файлов в течение 2-3 дней.
Проанализируем структуру хранения. Файл печати должен быть жестко привязан к справочнику Организации. Иногда при копировании карточек организаций или при программном импорте данных связь в справочнике ОрганизацииПрисоединенныеФайлы может указывать не на сам объект, а на некорректный идентификатор (например, на временный ключ формы).
Для исправления этой ситуации выполним следующие действия:
Владелец. Там должна быть ссылка именно на элемент справочника Организации.Даже если в интерфейсе галочка "Очищать файлы" снята, механизмы БСП могут продолжать работу в фоновом режиме. Разберем, как принудительно исключить печати из алгоритма очистки. Нам потребуется программное вмешательство или использование расширения для подписки на события.
Рассмотрим пример кода для отслеживания момента установки пометки удаления. Создадим подписку на событие ПередЗаписью для справочника ОрганизацииПрисоединенныеФайлы. Это позволит нам записывать в журнал регистрации не просто факт изменения, а полное состояние объекта и стек вызова функций, которые привели к удалению.
Процедура ПриЗаписиФайлаПечатиПередЗаписью(Источник, Отказ) Экспорт
Если Источник.ПометкаУдаления И НЕ Источник.Ссылка.ПометкаУдаления Тогда
// Файл помечается на удаление
ЗаписьЖурналаРегистрации("Файлы.Внимание",
УровеньЖурналаРегистрации.Предупреждение,
Источник.Метаданные(),
Источник.Ссылка,
"Файл печати помечен на удаление! Автор: " + Пользователи.АвторизованныйПользователь());
КонецЕсли;
КонецПроцедуры
Этот код поможет нам точно "поймать" виновника в момент записи объекта. Если автором окажется системный пользователь (фоновое задание), мы сможем однозначно идентифицировать проблемный процесс.
Если в базе настроено хранение файлов в томах на диске, проанализируем состояние папок. Часто администраторы видят в отчете проверки целостности тома статус "Лишние файлы". Это файлы, которые есть на диске, но сведения о них в базе данных уже помечены как удаленные.
Важный момент: если вы повторно загружаете файл с тем же именем (например, pechat.jpg), 1С может конфликтовать с уже имеющимся "лишним" файлом в томе. Рассмотрим правильный алгоритм перезагрузки факсимиле:
Подводя итоги, можно выделить три основные стратегии борьбы с исчезновением печатей в УНФ 3.0:
Очистка ненужных файлов и Очистка устаревших данных. Убедитесь, что они либо выключены, либо в них настроены правила исключения для файлов организаций.Даша. Если проблема в ней, потребуется обновление конфигурации до актуального релиза (ошибки в механизме работы с вложениями активно исправлялись в ветке 3.0.5+).ПометкаУдаления.Помните, что 1С:УНФ — это сложная система с множеством автоматизированных процессов. Тщательный аудит Номеров сеансов в журнале регистрации — это кратчайший путь к пониманию того, почему ваши данные признаются системой "ненужными".