В процессе эксплуатации крупных систем на базе 1С:Предприятие 8.3 администраторы часто сталкиваются с ситуацией, когда внешние обработки, подключенные через механизм дополнительных отчетов и обработок, внезапно перестают выполняться по расписанию. При этом в Журнале регистрации фиксируются ошибки вида «Файл не найден» в папке Temp, хотя при ручном запуске всё работает корректно. Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам методы её решения.
Когда мы запускаем внешнюю обработку интерактивно, она выполняется в контексте нашего текущего сеанса. Однако при запуске по расписанию 1С создает фоновое задание, которое выполняется на сервере под учетной записью, от имени которой запущена служба 1C:Enterprise 8.3 Server Agent. В этот момент платформа извлекает двоичные данные обработки из базы данных и сохраняет их во временный файл в профиле пользователя службы (обычно это путь вида C:\Users\ИмяПользователя\AppData\Local\Temp\).
Если файл «исчезает» или не может быть создан, регламентное задание завершается с ошибкой. Тот факт, что перезагрузка сервера или чистка кэша временно помогают, указывает на то, что проблема кроется не в коде самой обработки, а во взаимодействии платформы 1С с операционной системой Windows. Для своевременного контроля состояния и настроек таких задач можно использовать инструмент для аудита регламентных заданий и связанных дополнительных обработок.
Одной из наиболее частых причин является слишком длинный путь к папке Temp или проблемы с правами доступа к вложенным папкам профиля пользователя. Разберем, как перенаправить временные файлы в более надежное место. Выясним, под каким пользователем работает служба 1С, и выполним следующие действия:
C: отдельную папку с коротким названием, например C:\1C_Temp.TEMP и TMP для пользователя службы на созданный нами путь C:\1C_Temp.Это исключит ошибки, связанные с лимитом длины пути в Windows (260 символов) и возможные блокировки доступа к папке AppData.
В современных версиях Windows Server (начиная с 2008 R2) существует механизм, который автоматически выгружает реестр и временные файлы пользователя, если система считает, что сеанс завершен. Это часто происходит с учетной записью службы 1С, если под ней не залогинены интерактивно. Проанализируем настройки групповых политик:
gpedit.msc).Это гарантирует, что Windows не «подчистит» временную папку процесса rphost в самый неподходящий момент.
Посмотрим на ситуацию со стороны программного кода. В библиотеке стандартных подсистем (БСП) версии 2.4 и выше при регистрации дополнительной обработки часто по умолчанию включается Безопасный режим. Рассмотрим, как это влияет на выполнение:
В безопасном режиме платформа ограничивает доступ к файловой системе и внешним ресурсам. Если временный путь, сформированный системой, не попадает в список разрешенных, выполнение будет заблокировано. Для диагностики попробуйте временно отключить безопасный режим в карточке дополнительной обработки:
// В карточке дополнительной обработки в интерфейсе 1С:
// Снимите галочку "Безопасный режим"
// или установите профиль безопасности с соответствующими разрешениями.
Выясним причину возможной блокировки файлов антивирусом. Регламентные задания создают исполняемые файлы (обработки) в папке Temp динамически. Антивирус может воспринимать это как подозрительную активность. Чтобы это предотвратить, необходимо добавить в исключения антивируса:
rphost.exe, rmngr.exe).C:\1C_Temp).srvinfo).Если стандартная перезагрузка помогает ненадолго, возможно, произошло повреждение кэша сеансовых данных. Проанализируем процедуру «правильной» очистки:
1C:Enterprise 8.3 Server Agent.C:\Program Files\1cv8\srvinfo\).snccntxt... (сеансовые данные) и reg_XXXX....1cv8wsrv.lst).Рассмотренные шаги позволяют комплексно подойти к решению проблемы. В большинстве случаев сочетание Шага 1 (вынос Temp в короткий путь) и Шага 2 (запрет выгрузки профиля) полностью устраняет ошибки «Файл не найден» при работе внешних обработок по расписанию.