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

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

При администрировании файловых баз данных «1С:Предприятие» часто возникает необходимость автоматизировать выполнение регламентных операций — например, проведение документов, запуск обменов или резервное копирование по расписанию. Для этого системные администраторы создают командные файлы (скрипты с расширением .bat или .cmd) и настраивают их запуск через стандартный Планировщик задач Windows (Task Scheduler).

Однако на практике многие сталкиваются со следующей проблемой: при ручном запуске скрипта база данных открывается и успешно работает, но при запуске по расписанию процесс 1cv8.exe инициализируется, успешно авторизуется в системе (что отражается в Журнале регистрации 1С), а через несколько секунд (обычно от 5 до 10 секунд) аварийно завершает свою работу без вывода каких-либо видимых ошибок.

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

Выясняем причину: влияние опции «Выполнять вне зависимости от регистрации пользователя»

Ключ к разгадке кроется в настройках безопасности самой задачи в Планировщике Windows. Обратим внимание на важное различие в поведении системы:

  1. Если в свойствах задачи активна опция «Выполнять только для зарегистрированного пользователя», то программа 1С успешно запускается, инициализирует графический интерфейс и остается запущенной до тех пор, пока пользователь сам не закроет ее.
  2. Если же активирована опция «Выполнять вне зависимости от регистрации пользователя» (чтобы задания выполнялись на сервере даже тогда, когда администратор завершил сеанс), то платформа 1С закрывается практически мгновенно после старта.

Почему это происходит? Дело в том, что начиная с версии Windows Vista и Windows Server 2008 в операционной системе реализован механизм безопасности под названием Изоляция Сессии 0 (Session 0 Isolation).

Когда вы указываете планировщику запускать задачу независимо от того, вошел ли пользователь в систему, Windows изолирует этот процесс. Он запускается в «Сессии 0» — специальной неинтерактивной среде, предназначенной исключительно для системных служб. В этом окружении полностью отсутствует графическая подсистема (рабочий стол, проводник, контекстные окна).

Интерактивное приложение (каковым по умолчанию является толстый или тонкий клиент 1С — файл 1cv8.exe), попадая в такие условия, пытается инициализировать графические окна, обратиться к драйверу видеокарты или проверить разрешение экрана. Не получая ответа от операционной системы, графическая оболочка платформы генерирует внутреннее исключение и аварийно завершает процесс.

Кроме того, на стороне конфигурации 1С могут отрабатывать обработчики событий, такие как ПриНачалеРаботыСистемы или ПередНачаломРаботыСистемы. В типовых конфигурациях в этих процедурах прописано множество проверок: вывод предупреждений, проверка обновлений, показ рекламных или информационных баннеров, модальные окна подтверждения. Любая попытка вывести диалоговое окно в неинтерактивной сессии приводит к моментальному падению процесса.

---

Способ 1. Организация постоянного интерактивного сеанса («Служебный робот»)

Если вам критически важно запускать регламентные задания именно через планировщик Windows и именно в файловом режиме работы базы данных, самым простым обходным путем является обеспечение постоянного интерактивного сеанса на сервере.

Проанализируем шаги по реализации этого подхода:

  1. Создание выделенного пользователя в Windows: Создайте на сервере отдельную локальную или доменную учетную запись (например, с именем 1C_Robot) и наделите ее необходимыми правами доступа к каталогу с базой данных 1С.
  2. Настройка автоматического входа (Autologon): Используя утилиту Autologon от Sysinternals (Microsoft) или соответствующие ветки реестра Windows, настройте автоматический вход в систему под этой учетной записью при перезагрузке сервера.
  3. Блокировка экрана вместо выхода из системы: Никогда не выполняйте команду «Выйти из системы» (Logoff) для этого пользователя. Вместо этого заблокируйте сеанс (сочетание клавиш Win + L) или просто закройте окно подключения к удаленному рабочему столу (RDP). Сессия пользователя останется активной в фоновом режиме, графическая подсистема Windows продолжит функционировать.
  4. Настройка задачи в планировщике: В свойствах задачи укажите запуск от имени пользователя 1C_Robot и обязательно выберите опцию «Выполнять только для зарегистрированного пользователя».

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

---

Способ 2. Публикация файловой базы на веб-сервере (IIS или Apache)

Это наиболее профессиональный и стабильный метод запуска регламентных задач в файловом варианте работы 1С, который полностью избавляет от необходимости держать открытые интерактивные сессии пользователей.

Разберем, почему это работает. При публикации базы данных на веб-сервере (например, под управлением IIS или Apache), веб-сервер регистрируется в операционной системе как полноценная системная служба. Внутри процессов веб-сервера запускается специальный веб-модуль платформы 1С. Этот модуль умеет самостоятельно, в полностью автоматическом режиме, без участия графической оболочки пользователя, инициализировать и выполнять фоновые и регламентные задания.

Для реализации этого метода выполните следующие шаги:

  1. Установите веб-сервер IIS (встроенный компонент Windows) или Apache на ваш сервер.
  2. Запустите конфигуратор 1С под правами администратора, перейдите в меню Администрирование -> Публикация на веб-сервере....
  3. Укажите имя публикации, выберите ваш веб-сервер, настройте каталог для публикации и обязательно установите галочку «Публиковать регламентные задания». Нажмите кнопку «Опубликовать».
  4. Настройте интервал запуска регламентных заданий в параметрах файловой базы (по умолчанию веб-сервер сам будет инициировать их запуск с нужной периодичностью).

Теперь вам не нужны bat-файлы и планировщик задач Windows. Платформа 1С внутри веб-сервера сама будет следить за расписанием и выполнять все необходимые фоновые процессы в фоновом режиме службы.

---

Способ 3. Отладка и подавление интерактивных окон через параметры запуска

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

Рассмотрим пример создания отказоустойчивого bat-файла:


@echo off
set BIN_PATH="C:\Program Files (x86)\1cv82\8.2.19.130\bin\1cv8.exe"
set BASE_PATH="\\ServerName\1C_Bases\Accounting"
set USER_NAME="ServiceRobot"
set LOG_FILE="C:\1C_Logs\1c_run_log.txt"

start /wait "" %BIN_PATH% ENTERPRISE /F %BASE_PATH% /N %USER_NAME% /Out %LOG_FILE% -NoTrunc /DisableStartupMessages /AppAutoCheckMode /C "РежимРобота"

Разберем подробнее ключевые параметры командной строки, которые мы использовали в примере:

Для того чтобы система не завершала работу аварийно при старте, проанализируем и доработаем код в модуле управляемого (или обычного) приложения 1С. Мы перехватим переданный параметр и отключим интерактивные диалоги:


Процедура ПриНачалеРаботыСистемы()
    
    // Проверяем, запущен ли сеанс в автоматическом режиме
    ПараметрЗапускаСтрока = ПараметрыЗапуска;
    
    Если Найти(ПараметрЗапускаСтрока, "РежимРобота") > 0 Тогда
        // Отключаем интерактивные проверки БСП, вывод рекламы, 
        // всплывающих окон новостей и предупреждений об обновлении
        ВыполнятьИнтерактивныеПроверки = Ложь;
        
        // Регистрируем успешный старт в Журнале регистрации
        ЗаписьЖурналаРегистрации("ЗапускРобота",
            УровеньЖурналаРегистрации.Информация,
            ,
            ,
            "Сеанс успешно запущен в фоновом режиме.");
    КонецЕсли;

КонецПроцедуры

Использование связки из подавления системных сообщений командной строки и программного обхода интерактивного кода в модуле 1С минимизирует вероятность падения процесса 1cv8.exe при запуске планировщиком задач в неинтерактивной среде.

← На главную