Почему процесс 1С зависает в диспетчере задач после выполнения обработки через планировщик?

Системный администратор 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Запуск 1С в автоматическом режиме через планировщик задач — стандартная задача для системных администраторов и программистов 1С. Однако многие сталкиваются с тем, что после выполнения всех процедур внешней обработки процесс 1cv8.exe или 1cv8s.exe не завершается корректно и продолжает «висеть» в памяти сервера, постепенно потребляя ресурсы. Давайте разберем, почему это происходит и как это исправить.

Причина №1: Запрос подтверждения при выходе

Самая частая причина, по которой 1С не закрывается — это наличие диалогового окна с вопросом «Вы хотите завершить работу с программой?». В интерактивном режиме пользователь нажимает «Да», но в фоновом режиме планировщика этот запрос блокирует выполнение команды на закрытие навсегда.

Что нужно сделать:

  1. Откройте базу 1С под тем пользователем, под которым осуществляется автоматический запуск (в примере из темы это был пользователь Auto).
  2. Перейдите в настройки параметров пользователя.
  3. Найдите и снимите галочку «Запрашивать подтверждение при выходе из программы».

После отключения этой настройки приложение 1С будет завершать работу мгновенно при получении команды ЗавершитьРаботуСистемы().

Причина №2: Использование неправильного исполняемого файла

Иногда проблема кроется в выборе исполняемого файла платформы. Стандартный 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"

Причина №3: Настройка внутри внешней обработки

Чтобы 1С завершила работу сразу после выполнения кода обработки, необходимо программно вызвать метод ЗавершитьРаботуСистемы. Разберем, как правильно реализовать вызов в коде вашей обработки.

Пример кода, который следует поместить в конец процедуры ПриОткрытии() или специального метода, вызываемого при запуске:


// Выполнение основной логики обмена
// ...
// Код завершения работы
ЗавершитьРаботуСистемы(Ложь, Ложь);

Параметры Ложь, Ложь означают, что мы отключаем запрос подтверждения и сохранение настроек, что критически важно для автоматизации.

Причина №4: Использование COM-объекта (V8.Application)

Если вы запускаете 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-соединения.

Дополнительные рекомендации для стабильной работы

Чтобы ваша система работала как часы, рекомендуем также учесть следующие советы:

Проанализировав все вышеописанные методы, вы сможете настроить автоматический запуск так, чтобы процесс 1С не оставлял «хвостов» в памяти сервера, обеспечивая стабильную и бесперебойную работу ваших автоматизированных задач.

← На главную