Каждый разработчик или администратор 1С рано или поздно сталкивается с ситуацией, когда после многочасовой работы над отчетом или сложной доработки конфигурации при попытке сохранения система выдает критическую ошибку: «Файл не найден ... .tmp 2(0x00000002) не удается найти указанный файл». Самое неприятное в этой ситуации то, что все незаписанные изменения теряются, а Конфигуратор зачастую приходится перезапускать.
В этой статье мы подробно разберем, почему возникают «плавающие» ошибки с временными файлами, как на это влияют настройки операционной системы и какие шаги нужно предпринять, чтобы навсегда забыть об этой неприятности. Проанализируем ситуацию комплексно: от релизов платформы до глубоких настроек Windows Server.
Первым делом нам необходимо обратить внимание на версию используемой платформы. Как показывает практика и обсуждения специалистов, определенные ветки платформы (особенно 8.3.16 и ранние 8.3.17) имели внутренние ошибки, связанные с утечкой дескрипторов файлов или некорректным обращением к временным хранилищам.
Рассмотрим рекомендации по обновлению:
8.3.16.1148 или аналогичные, вы находитесь в зоне риска. Эти версии часто ведут себя нестабильно при интенсивной работе с метаданными (например, в ERP или Бухгалтерии 3.0).8.3.17.1496 и выше.8.3.21 или 8.3.22, где механизмы работы с файловой системой были существенно переработаны.Одной из самых коварных причин являются «пересекающиеся» групповые политики. Это именно тот случай, который помог автору темы. Выясним, какие именно политики могут приводить к удалению файлов «на лету»:
Проанализируем настройки безопасности и сеансов RDP. Администраторы часто включают политики автоматической очистки временных папок при завершении сеанса или, что критичнее, политики ограничения размера профиля пользователя. Если настройки политик настроены некорректно и «перекрывают» друг друга, система может инициировать микро-очистку папки AppData\Local\Temp прямо во время вашей работы.
Что нужно проверить системному администратору:
AppData вынесена на сетевой ресурс..tmp файлы.В современных ОС Windows Server 2019/2022 и Windows 10/11 встроена функция «Контроль памяти». Разберем механизм её работы: она призвана автоматически освобождать место на диске, удаляя неиспользуемые временные файлы.
Если эта служба активна, она может распознать только что созданный файл Конфигуратора 1С как «мусорный», если он не был открыт другим приложением в течение определенного времени, и удалить его до того, как платформа завершит с ним транзакцию. Рекомендуется полностью отключить «Контроль памяти» на серверах, где ведется разработка и эксплуатация 1С.
Даже если вы уверены, что антивируса нет, в системе всегда активен Windows Defender. Проанализируем его влияние. Функции «Real-time Protection» и «Controlled Folder Access» могут блокировать запись или перемещать новые файлы в карантин для проверки.
Чтобы исключить влияние защитного ПО, выполним следующие действия:
1cv8.exe в исключения антивируса..tmp в список исключений для сканирования (с осторожностью, только для рабочих станций разработчиков).%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8.Служба индексирования пытается просканировать любой новый файл в профиле пользователя для обеспечения быстрого поиска. Рассмотрим ситуацию: Конфигуратор создает временный файл v8_XXXX.tmp, индексатор тут же его «захватывает» для чтения. В этот момент 1С пытается переименовать этот файл или переместить его в основное хранилище конфигурации, но получает отказ, так как файл занят другим процессом. В итоге — ошибка «Файл не найден» или «Ошибка доступа».
Решение: Исключите папку Temp пользователя из области индексации через «Параметры индексирования» в Панели управления.
Иногда проблема кроется в банальном ограничении длины пути в Windows. Если имя пользователя содержит много символов, а временная папка находится глубоко в профиле, итоговый путь к .tmp файлу может превысить допустимые пределы.
Попробуем переопределить переменные TEMP и TMP. Разберем, как это сделать правильно:
C:\Temp1C.Full Control для группы Users или конкретных пользователей 1С на эту папку.TEMP и TMP на наш короткий путь.Это не только решит проблему с длиной пути, но и упростит мониторинг файлов.
Если ни один из вышеперечисленных методов не помог, перейдем к «тяжелой артиллерии». Воспользуемся утилитой Process Monitor (ProcMon).
Разберем алгоритм поиска виновника:
Path contains .tmp.Result is NAME NOT FOUND или ACCESS DENIED.1cv8.exe, чтобы увидеть, кто еще обращается к этим файлам.SearchIndexer.exe, SentinelOne.exe или System) обращался к файлу непосредственно перед его исчезновением.Пример логики анализа событий в ProcMon:
// В логе это может выглядеть так:
// 12:00:01 1cv8.exe CreateFile C:\Temp\v8_A1.tmp SUCCESS
// 12:00:02 SomeService.exe CreateFile C:\Temp\v8_A1.tmp SUCCESS (Захват файла)
// 12:00:03 1cv8.exe SetRenameInformationFile C:\Temp\v8_A1.tmp SHARING VIOLATION
Подводя итог, можно сказать, что ошибка 0x00000002 — это почти всегда результат внешнего вмешательства в работу файловой системы. Совместное использование обновленной платформы (от 8.3.17 и выше), коротких путей к переменным TEMP и исключение папок из проверок антивирусов и политик очистки гарантированно избавляет от данной проблемы. Помните, что стабильность работы Конфигуратора напрямую зависит от «чистоты» окружения, в котором он запущен.