Запуск 1С в автоматическом режиме через планировщик задач — стандартная задача для системных администраторов и программистов 1С. Однако многие сталкиваются с тем, что после выполнения всех процедур внешней обработки процесс 1cv8.exe или 1cv8s.exe не завершается корректно и продолжает «висеть» в памяти сервера, постепенно потребляя ресурсы. Давайте разберем, почему это происходит и как это исправить.
Самая частая причина, по которой 1С не закрывается — это наличие диалогового окна с вопросом «Вы хотите завершить работу с программой?». В интерактивном режиме пользователь нажимает «Да», но в фоновом режиме планировщика этот запрос блокирует выполнение команды на закрытие навсегда.
Что нужно сделать:
Auto).После отключения этой настройки приложение 1С будет завершать работу мгновенно при получении команды ЗавершитьРаботуСистемы().
Иногда проблема кроется в выборе исполняемого файла платформы. Стандартный 1cv8s.exe предназначен для работы в режиме толстого клиента, который может быть более требователен к интерактивному взаимодействию. Замена его на 1cv8c.exe (тонкий клиент) часто помогает решить проблему корректного завершения процесса в пакетном режиме.
Попробуйте изменить ваш командный файл (файл с расширением .bat или .cmd), который вызывает планировщик, следующим образом:
"C:\Program Files\1cv82\8.2.15.289\bin\1cv8c.exe" /S"localhost\basa" /N "Auto" /P "123456" /Execute "W:\обработки\АвтозапускОбмена.epf"
Чтобы 1С завершила работу сразу после выполнения кода обработки, необходимо программно вызвать метод ЗавершитьРаботуСистемы. Разберем, как правильно реализовать вызов в коде вашей обработки.
Пример кода, который следует поместить в конец процедуры ПриОткрытии() или специального метода, вызываемого при запуске:
// Выполнение основной логики обмена
// ...
// Код завершения работы
ЗавершитьРаботуСистемы(Ложь, Ложь);
Параметры Ложь, Ложь означают, что мы отключаем запрос подтверждения и сохранение настроек, что критически важно для автоматизации.
Если вы запускаете 1С через скрипт .vbs и CreateObject("V82.Application"), помните, что простого закрытия программы недостаточно. Необходимо корректно очистить объект из оперативной памяти.
Рассмотрим правильную последовательность действий в скрипте:
Set v82 = CreateObject("V82.Application")
res = v82.Connect("Srvr=СЕРВЕР;Ref=БАЗА;")
set obr = v82.ExternalDataProcessors.Create("C:\Обработка.epf")
obr.Run
v82.Exit(false)
Set v82 = Nothing
Обязательно вызывайте метод Exit(false) перед тем, как присвоить переменной Nothing. Это даст команду серверу 1С корректно завершить сеанс COM-соединения.
Чтобы ваша система работала как часы, рекомендуем также учесть следующие советы:
/DisableStartupMessages, это позволит избежать появления лишних окон с предупреждениями системы при старте.taskkill /F /IM 1cv8.exe гарантированно освободит ресурсы, если по каким-то причинам 1С все же «зависнет».Проанализировав все вышеописанные методы, вы сможете настроить автоматический запуск так, чтобы процесс 1С не оставлял «хвостов» в памяти сервера, обеспечивая стабильную и бесперебойную работу ваших автоматизированных задач.