Администрирование · 12 мин
Как запустить 1С в фоне: фоновые задания, расписание и пакетный режим
Разбираем, как запустить 1С в фоне: фоновые и регламентные задания, пакетный режим запуска, настройка расписания, проверка выполнения и типичные ошибки.
Под запуском 1С в фоне обычно понимают три разные задачи: выполнение фоновых заданий внутри работающей базы, автоматический запуск регламентных операций по расписанию и старт программы без открытия окна на экране пользователя. Все три сценария решаются штатными средствами платформы и не требуют сторонних утилит.
В клиент-серверном варианте фоновые задания исполняются на сервере 1С:Предприятия, поэтому пользователь может закрыть сеанс, а обработка продолжится. В файловом варианте фоновое выполнение привязано к сеансу, который его инициировал, либо к отдельному сеансу, запущенному специально для регламентных заданий. Это ключевое различие определяет выбор способа.
Ниже разобраны рабочие способы для обоих вариантов развёртывания, настройка расписания, пакетный запуск из командной строки, проверка результата и типичные ошибки, из-за которых задания «молча» не выполняются.
Что такое фоновые и регламентные задания в 1С
Фоновое задание — это программно запущенное выполнение процедуры или функции, которое идёт параллельно с основным сеансом пользователя. Его создаёт код на встроенном языке методом «ФоновыеЗадания.Выполнить», и оно живёт, пока не завершится или не будет принудительно отменено.
Регламентное задание — это задание, привязанное к расписанию: ежедневная свёртка, обмен данными, отправка отчётов, обновление курсов валют. Платформа сама создаёт фоновое задание для каждого срабатывания расписания. Именно регламентные задания — основной инструмент запуска 1С «в фоне» без действий пользователя.
Важно понимать ограничение: регламентное задание вызывает только общие серверные процедуры и функции без параметров, размещённые в общих модулях с признаком «Сервер». Интерактивные действия — открытие форм, диалоги, предупреждения — в фоне недоступны и приведут к ошибке.
Настройка регламентного задания по расписанию
Если конфигурация типовая, большинство регламентных заданий уже созданы: их список открывается в разделе «Администрирование» → «Обслуживание» → «Регламентные операции» или «Регламентные и фоновые задания» (название зависит от конфигурации). Там же включается и отключается каждое задание и задаётся его расписание.
Для собственного задания в конфигураторе нужно: создать общий модуль с флажками «Сервер» и «Вызов сервера», написать в нём экспортную процедуру без параметров, затем в ветке «Общие» → «Регламентные задания» добавить новое задание и указать в свойстве «Имя метода» полное имя процедуры вида «ИмяМодуля.ИмяПроцедуры».
Расписание настраивается в консоли заданий или в конфигураторе: периодичность (ежедневно, еженедельно, с интервалом в секундах), время начала и окончания, дни недели. Для тяжёлых операций выбирайте ночные часы с низкой нагрузкой, чтобы фоновое выполнение не конкурировало за ресурсы с работой пользователей.
- 1Создайте общий серверный модуль и экспортную процедуру без параметров
- 2Добавьте регламентное задание и укажите имя метода
- 3Задайте расписание и убедитесь, что флажок «Использование» установлен
- 4В клиент-серверной базе проверьте, что на сервере не заблокированы регламентные задания
- 5Запустите задание вручную из консоли и проверьте журнал регистрации
Фоновое выполнение в файловой базе
Файловый вариант не имеет сервера, который сам следил бы за расписанием. Поэтому регламентные задания выполняются только в сеансе, где это явно разрешено. Стандартное решение — выделить отдельный компьютер или сеанс, который постоянно запущен с параметром выполнения регламентных заданий.
Для этого создают ярлык запуска толстого или тонкого клиента с дополнительным параметром командной строки. Сеанс под специальной учётной записью (например, «Робот») остаётся открытым и исполняет задания по расписанию. Если этот сеанс закрыть или компьютер выключить, задания просто перестанут выполняться — это самая частая причина «сломавшегося» обмена в файловых базах.
"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Trade" /NRobot /PPassword /ExecuteScheduledJobs /DisableStartupDialogsАльтернатива постоянному сеансу — запуск из планировщика Windows по расписанию: задача стартует 1С в пакетном режиме, та выполняет нужную обработку через параметр /Execute и завершается. Такой подход надёжнее для редких операций вроде ночного резервного копирования или выгрузки данных.
Пакетный запуск из командной строки
Исполняемый файл 1cv8.exe принимает набор параметров, позволяющих запустить базу без диалогов: указание пути к базе (/F для файловой или /S для серверной), имя и пароль пользователя (/N и /P), ключ /DisableStartupDialogs для подавления стартовых окон и /DisableStartupMessages для подавления сообщений.
Чтобы выполнить конкретное действие, используют параметр /Execute с путём к внешней обработке (.epf) — она откроется, выполнит код в событии «ПриОткрытии» или через обработчик ожидания и должна сама завершить сеанс вызовом «ЗавершитьРаботуСистемы(Ложь)». Без завершения сеанса процесс останется висеть в памяти.
Полную команду удобно оформить в bat-файл и поставить в планировщик заданий Windows: задать триггер по времени, запуск от имени учётной записи с доступом к базе и включить опцию «Выполнять вне зависимости от регистрации пользователя», если запуск нужен ночью без входа в систему.
Как проверить, что фоновое задание выполнилось
Основной инструмент контроля — консоль «Регламентные и фоновые задания» в режиме предприятия. Для каждого задания видно состояние (выполняется, завершено, ошибка), время последнего запуска и сообщения об ошибках. В типовых конфигурациях есть также «Результаты выполнения регламентных заданий».
Второй источник — журнал регистрации: события фоновых заданий фиксируются там с указанием имени задания, сеанса и текста ошибки. Если задание завершилось аварийно, именно в журнале видно, на какой строке и с каким сообщением оно упало.
Для критичных операций полезно добавить в код задания явное подтверждение результата: запись служебного документа, письмо администратору или запись в собственный регистр сведений с датой последнего успешного выполнения. Тогда отсутствие свежей записи само по себе становится сигналом проблемы.
Как проверить результат
«Завершено» с актуальным временем последнего запуска
«Ошибка» или дата запуска давно устарела
События задания без сообщений об ошибках
Записи с уровнем «Ошибка» по имени метода
Созданы документы, отправлены файлы, обновлены данные
Данные не изменились, хотя задание «выполнено»
Типичные ошибки и ограничения
Самая частая проблема в клиент-серверном варианте — блокировка регламентных заданий на уровне информационной базы. В консоли кластера или в параметрах базы есть свойство «Блокировка регламентных заданий»; если она включена (например, после восстановления копии базы), ни одно задание не запустится, и внешне это выглядит как «всё настроено, но не работает».
Вторая группа ошибок — неподходящий код: попытка открыть форму, вызвать модальный диалог или обратиться к клиентскому контексту в фоновом задании. Такой код падает сразу. Третья группа — права: учётная запись, под которой исполняется задание, должна иметь права на все объекты, которые читает и изменяет процедура.
Отдельно стоит помнить о взаимоблокировках: фоновое задание, массово изменяющее данные в рабочее время, может конфликтовать с сеансами пользователей и вызывать ошибки «Конфликт блокировок». Длинные транзакции разбивайте на порции, а тяжёлые операции переносите на нерабочие часы.
Выбор способа под вашу ситуацию
Выбор зависит от варианта развёртывания базы и характера задачи. Разовая выгрузка, регулярный обмен, постоянная фоновая обработка документов — для каждого сценария есть оптимальный инструмент, и смешивать их без необходимости не стоит.
Сравнение вариантов
Основной способ для регулярных операций; исполняются на сервере независимо от сеансов. Требуют снятой блокировки заданий на базе.
Подходит для постоянных фоновых задач в файловом режиме; требует постоянно включённого компьютера и открытого сеанса.
Лучший вариант для редких операций и резервного копирования; не требует постоянного сеанса, но нужен аккуратный bat-файл с завершением работы.
Для разгрузки интерфейса пользователя — длительная операция уходит в фон, а пользователь продолжает работать. В файловой базе привязан к сеансу инициатора.
Если база клиент-серверная — начинайте всегда с регламентных заданий: это штатный, управляемый и журналируемый механизм. Планировщик Windows оставьте для задач, выходящих за рамки платформы: копирование файлов базы, архивация, запуск сторонних утилит.
Что важно запомнить
В клиент-серверной базе фоновый запуск — это регламентные задания с расписанием, исполняемые сервером. В файловой базе нужен постоянный сеанс с /ExecuteScheduledJobs или пакетный запуск через планировщик Windows. Всегда проверяйте результат через консоль заданий и журнал регистрации, а разрушительные операции тестируйте на копии.
Частые вопросы
Как выбрать действие
Почему регламентное задание не запускается, хотя расписание настроено?
Проверьте три вещи: установлен ли флажок «Использование» у задания, не включена ли блокировка регламентных заданий в свойствах информационной базы (актуально для клиент-серверного варианта) и работает ли в файловой базе сеанс, отвечающий за выполнение заданий. Детали смотрите в журнале регистрации.
Можно ли запустить 1С в фоне без открытого окна на рабочем столе?
Да, при запуске через планировщик Windows с опцией «Выполнять вне зависимости от регистрации пользователя» процесс работает без видимого окна. Дополнительно используйте ключи /DisableStartupDialogs и /DisableStartupMessages, чтобы программа не ждала реакции пользователя.
Чем фоновое задание отличается от регламентного?
Фоновое задание создаётся программно в любой момент и выполняется один раз. Регламентное — это объект конфигурации с расписанием: платформа сама порождает фоновое задание при каждом срабатывании расписания. Регламентное задание — это «фоновое задание плюс расписание».
Что будет, если фоновое задание зависнет?
Задание продолжит занимать рабочий процесс сервера или сеанс. Его можно найти в консоли заданий и принудительно отменить. Чтобы зависания не блокировали работу, задавайте разумные таймауты в коде и избегайте ожидания внешних ресурсов без ограничения по времени.
Безопасно ли хранить пароль в bat-файле для пакетного запуска?
Это допустимый, но слабый вариант: пароль виден любому, кто откроет файл или посмотрит задачу планировщика. Лучше использовать аутентификацию ОС, ограничить права учётной записи-робота минимумом и ограничить доступ к самому bat-файлу на уровне файловой системы.
Почему задание выполнилось, но данные не изменились?
Частая причина — исключение внутри транзакции, которое код перехватил и «проглотил» без записи в журнал. Добавьте в обработчик исключений явную запись ошибки в журнал регистрации и проверьте права учётной записи, под которой исполняется задание.