Многие разработчики сталкиваются с ситуацией, когда автоматизация процессов, работающая идеально при запуске 1С локально, перестает функционировать при переходе на работу через веб-клиент. Чаще всего это связано с тем, что фоновые задания, инициированные через браузер, выполняются от имени системной службы веб-сервера, а не от имени текущего пользователя Windows. Давайте разберем эту проблему и способы ее устранения.
Когда вы используете файловую базу 1С, опубликованную на Apache, любое фоновое задание, запущенное через веб-клиент, выполняется в контексте пользователя, от имени которого запущена сама служба Apache. В стандартных конфигурациях Windows эта служба часто работает под учетной записью LocalSystem (Локальная система).
Проблема заключается в том, что системная учетная запись имеет существенные ограничения в плане взаимодействия с пользовательской средой и запуска сторонних исполняемых файлов (таких как python.exe). При попытке использовать методы WScript.Shell или ЗапуститьПриложение, 1С пытается обратиться к операционной системе, но получает отказ в доступе или ошибку поиска файла, так как процесс не обладает нужными правами доступа или не видит переменные окружения пользователя.
Чтобы обеспечить корректный запуск Python-скриптов, необходимо изменить учетную запись, от имени которой работает ваш веб-сервер. Разберем этот процесс по шагам:
services.msc).Apache2.4).После смены учетной записи Apache фоновые задания 1С начнут выполняться под выбранным вами пользователем, что позволит корректно запускать внешние приложения через ЗапуститьПриложение.
Хотя запуск службы от имени текущего пользователя решает проблему «здесь и сейчас», важно помнить о безопасности. Рассмотрим, как сделать это решение более надежным:
Создание сервисной учетной записи: Вместо использования своего личного профиля, создайте отдельную учетную запись ОС (Service Account) с минимально необходимыми правами. Предоставьте ей только доступ к папкам, участвующим в обмене файлами, и право на запуск Python. Это защитит систему, если в коде скрипта или веб-сервера обнаружится уязвимость.
Управление паролями: Учитывайте, что при смене пароля пользователя, от имени которого запущена служба, работа скриптов остановится. Если ваш сервер находится в домене, рассмотрите использование gMSA (групповых управляемых учетных записей), которые автоматически управляют сменой паролей.
Запуск внешних процессов через shell-команды — это лишь один из способов интеграции. В сложных производственных задачах мы рекомендуем рассмотреть более профессиональные подходы:
Flask или FastAPI). 1С будет отправлять HTTP-запросы через HTTPСоединение, передавая параметры обработки. Это исключает проблемы с правами запуска процессов напрямую из веб-сервера.При переходе на клиент-серверный вариант работы (SQL) роль исполнителя фоновых заданий берет на себя процесс rphost сервера 1С:Предприятие. Этот процесс запускается от имени пользователя USR1CV8. Администраторы серверов 1С заранее настраивают права для этого пользователя, поэтому запуск внешних приложений происходит штатно и предсказуемо. Если у вас есть возможность перехода на SQL, это будет более надежным архитектурным решением для интеграции с внешними скриптами.
Таким образом, для файловой базы ключевым моментом является настройка прав веб-сервера. Проанализировав настройки службы Apache, вы сможете добиться корректного выполнения всех запланированных операций.