Нередко системные администраторы и разработчики 1С сталкиваются с ситуацией, когда служебный VBS-скрипт (например, для запуска обменов, архивации, выгрузки данных или обслуживания баз) прекрасно отрабатывает при ручном запуске двойным кликом мыши, но намертво зависает в статусе «Задание выполняется в настоящее время» при старте через планировщик задач (Windows Task Scheduler). При этом реальных действий скрипт не выполняет, а процесс продолжает висеть в памяти.
Разберем детально, почему возникает такое поведение в среде Windows Server, какие скрытые механизмы изолированных сессий блокируют работу скриптов 1С и как по шагам правильно настроить регламентное задание.
Проанализируем ключевые различия между ручным интерактивным запуском и запуском через службу планировщика:
MsgBox, ошибку, предупреждение безопасности или лицензирования), это окно ждет реакции пользователя в невидимой сессии, полностью блокируя выполнение потока..vbs ассоциированы с wscript.exe. Этот интерпретатор ориентирован на работу с графическим интерфейсом. Для автоматических пакетных задач необходимо использовать исключительно консольный интерпретатор cscript.exe в тихом пакетном режиме.V83.COMConnector), разрядность интерпретатора должна совпадать с разрядностью зарегистрированной COM-компоненты. При попытке запустить 32-битный коннектор из 64-битного cscript.exe без предварительной настройки COM+ скрипт завершится аварийно или зависнет.Z:\) существуют только внутри сеанса конкретного пользователя. Фоновый процесс планировщика не видит этих подключений и зависает при попытке обращения к файловой системе.Рассмотрим, как правильно прописать команду запуска сценария. Нельзя указывать сам VBS-файл в поле программы — запуск должен производиться через явный вызов исполняемого файла интерпретатора.
cscript.exe с учетом требуемой разрядности:
Для 64-разрядного режима:
C:\Windows\System32\cscript.exe
Для 32-разрядного режима:
C:\Windows\SysWOW64\cscript.exe
//B //NoLogo "C:\Scripts\My1CScript.vbs"
Ключ //B (Batch mode) гарантирует, что любые попытки вызова предупреждений и диалогов будут автоматически подавлены без блокировки выполнения.
C:\Scripts\), чтобы избежать проблем с относительными путями.Выясним причину частых сбоев при работе COM-автоматизации (включая работу с объектами Excel, Word и компонентами 1С). Службы Windows при выполнении под учетными записями SYSTEM, LOCAL SERVICE или при неинтерактивном входе обращаются к профилю systemprofile. Если папка Desktop отсутствует, инициализация COM-интерфейсов зависает.
Создадим вручную следующие каталоги на сервере:
C:\Windows\System32\config\systemprofile\DesktopC:\Windows\SysWOW64\config\systemprofile\DesktopПосле создания папок убедимся, что учетная запись, от имени которой стартует задача планировщика, имеет полные права доступа (Full Control) к этим каталогам.
Посмотрим на пример правильной структуры VBS-скрипта для взаимодействия с 1С. В сценарии необходимо отключить стандартную остановку на ошибках, принудительно перехватывать исключения и записывать результат в текстовый лог-файл, чтобы при возникновении сбоя можно было легко локализовать проблему.
Option Explicit
On Error Resume Next
Dim fso, logFile, logPath
logPath = "C:\Scripts\task_log.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set logFile = fso.OpenTextFile(logPath, 8, True)
logFile.WriteLine "--- Старт выполнения: " & Now & " ---"
Dim connector, connection
Set connector = CreateObject("V83.COMConnector")
If Err.Number <> 0 Then
logFile.WriteLine "Ошибка создания COM-коннектора: " & Err.Description
WScript.Quit 1
End If
' Строка подключения к информационной базе 1С (используем прямые сетевые или серверные пути)
Dim connectionString
connectionString = "Srvr=""1c-server"";Ref=""trade_base"";Usr=""Admin"";Pwd=""SecretPassword"";"
Set connection = connector.Connect(connectionString)
If Err.Number <> 0 Then
logFile.WriteLine "Ошибка авторизации в 1С: " & Err.Description
WScript.Quit 1
Else
logFile.WriteLine "Подключение к 1С успешно установлено."
End If
' Выполнение целевого действия в базе данных
' Например, вызов экспортной процедуры общего модуля
connection.РегламентныеПроцедурыСервер.ВыполнитьРегламентнуюОбработку()
If Err.Number <> 0 Then
logFile.WriteLine "Ошибка при выполнении логики 1С: " & Err.Description
Else
logFile.WriteLine "Регламентная процедура успешно завершена."
End If
logFile.WriteLine "--- Завершение работы: " & Now & " ---"
logFile.Close
WScript.Quit 0
Разберем параметры безопасности самой задачи в планировщике Windows:
Вход в качестве пакетного задания (Log on as a batch job) в оснастке локальной политики безопасности (secpol.msc).Соблюдение этих правил гарантирует стабильный запуск VBS-сценариев в неинтерактивном окружении Windows Server без зависания процессов в памяти.