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