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