При администрировании файловых баз данных «1С:Предприятие» часто возникает необходимость автоматизировать выполнение регламентных операций — например, проведение документов, запуск обменов или резервное копирование по расписанию. Для этого системные администраторы создают командные файлы (скрипты с расширением .bat или .cmd) и настраивают их запуск через стандартный Планировщик задач Windows (Task Scheduler).
Однако на практике многие сталкиваются со следующей проблемой: при ручном запуске скрипта база данных открывается и успешно работает, но при запуске по расписанию процесс 1cv8.exe инициализируется, успешно авторизуется в системе (что отражается в Журнале регистрации 1С), а через несколько секунд (обычно от 5 до 10 секунд) аварийно завершает свою работу без вывода каких-либо видимых ошибок.
В этой статье мы подробно проанализируем причины такого поведения операционной системы и платформы «1С:Предприятие», а также рассмотрим практические и надежные способы решения этой проблемы.
Ключ к разгадке кроется в настройках безопасности самой задачи в Планировщике Windows. Обратим внимание на важное различие в поведении системы:
Почему это происходит? Дело в том, что начиная с версии Windows Vista и Windows Server 2008 в операционной системе реализован механизм безопасности под названием Изоляция Сессии 0 (Session 0 Isolation).
Когда вы указываете планировщику запускать задачу независимо от того, вошел ли пользователь в систему, Windows изолирует этот процесс. Он запускается в «Сессии 0» — специальной неинтерактивной среде, предназначенной исключительно для системных служб. В этом окружении полностью отсутствует графическая подсистема (рабочий стол, проводник, контекстные окна).
Интерактивное приложение (каковым по умолчанию является толстый или тонкий клиент 1С — файл 1cv8.exe), попадая в такие условия, пытается инициализировать графические окна, обратиться к драйверу видеокарты или проверить разрешение экрана. Не получая ответа от операционной системы, графическая оболочка платформы генерирует внутреннее исключение и аварийно завершает процесс.
Кроме того, на стороне конфигурации 1С могут отрабатывать обработчики событий, такие как ПриНачалеРаботыСистемы или ПередНачаломРаботыСистемы. В типовых конфигурациях в этих процедурах прописано множество проверок: вывод предупреждений, проверка обновлений, показ рекламных или информационных баннеров, модальные окна подтверждения. Любая попытка вывести диалоговое окно в неинтерактивной сессии приводит к моментальному падению процесса.
---
Если вам критически важно запускать регламентные задания именно через планировщик Windows и именно в файловом режиме работы базы данных, самым простым обходным путем является обеспечение постоянного интерактивного сеанса на сервере.
Проанализируем шаги по реализации этого подхода:
1C_Robot) и наделите ее необходимыми правами доступа к каталогу с базой данных 1С.Autologon от Sysinternals (Microsoft) или соответствующие ветки реестра Windows, настройте автоматический вход в систему под этой учетной записью при перезагрузке сервера.Win + L) или просто закройте окно подключения к удаленному рабочему столу (RDP). Сессия пользователя останется активной в фоновом режиме, графическая подсистема Windows продолжит функционировать.1C_Robot и обязательно выберите опцию «Выполнять только для зарегистрированного пользователя».При такой конфигурации планировщик без проблем запустит ваш командный файл, база 1С развернется в реальном графическом окружении активного сеанса робота и успешно выполнит все необходимые алгоритмы.
---
Это наиболее профессиональный и стабильный метод запуска регламентных задач в файловом варианте работы 1С, который полностью избавляет от необходимости держать открытые интерактивные сессии пользователей.
Разберем, почему это работает. При публикации базы данных на веб-сервере (например, под управлением IIS или Apache), веб-сервер регистрируется в операционной системе как полноценная системная служба. Внутри процессов веб-сервера запускается специальный веб-модуль платформы 1С. Этот модуль умеет самостоятельно, в полностью автоматическом режиме, без участия графической оболочки пользователя, инициализировать и выполнять фоновые и регламентные задания.
Для реализации этого метода выполните следующие шаги:
Теперь вам не нужны bat-файлы и планировщик задач Windows. Платформа 1С внутри веб-сервера сама будет следить за расписанием и выполнять все необходимые фоновые процессы в фоновом режиме службы.
---
Если вы все же вынуждены использовать запуск 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 "РежимРобота"
Разберем подробнее ключевые параметры командной строки, которые мы использовали в примере:
/F — путь к файловой базе данных. Обратите внимание: крайне рекомендуется использовать прямые UNC-пути (вида \\ServerName\Share...) вместо букв сетевых дисков (таких как Z:\), так как сетевые диски не монтируются внутри изолированной Сессии 0./Out "ПутьКФайлу" -NoTrunc — этот параметр перенаправляет весь текстовый вывод платформы (включая сообщения об ошибках инициализации, отсутствии лицензий или ошибках конфигурации) в лог-файл. Это незаменимый инструмент для локализации проблем в неинтерактивном режиме./DisableStartupMessages — подавляет появление стартовых диалоговых окон (например, сообщений о нештатном завершении предыдущего сеанса или предложений о поиске обновлений)./AppAutoCheckMode — отключает интерактивные проверки платформы при запуске./C "РежимРобота" — передает текстовый параметр запуска внутрь конфигурации 1С.Для того чтобы система не завершала работу аварийно при старте, проанализируем и доработаем код в модуле управляемого (или обычного) приложения 1С. Мы перехватим переданный параметр и отключим интерактивные диалоги:
Процедура ПриНачалеРаботыСистемы()
// Проверяем, запущен ли сеанс в автоматическом режиме
ПараметрЗапускаСтрока = ПараметрыЗапуска;
Если Найти(ПараметрЗапускаСтрока, "РежимРобота") > 0 Тогда
// Отключаем интерактивные проверки БСП, вывод рекламы,
// всплывающих окон новостей и предупреждений об обновлении
ВыполнятьИнтерактивныеПроверки = Ложь;
// Регистрируем успешный старт в Журнале регистрации
ЗаписьЖурналаРегистрации("ЗапускРобота",
УровеньЖурналаРегистрации.Информация,
,
,
"Сеанс успешно запущен в фоновом режиме.");
КонецЕсли;
КонецПроцедуры
Использование связки из подавления системных сообщений командной строки и программного обхода интерактивного кода в модуле 1С минимизирует вероятность падения процесса 1cv8.exe при запуске планировщиком задач в неинтерактивной среде.