К статье
Практический материал

Автоматизация · 12 мин

Как запустить внешнюю обработку 1С по расписанию

Как настроить запуск внешней обработки 1С по расписанию: регламентные задания, дополнительные отчеты и обработки, планировщик Windows и командная строка.

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

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

Ниже разобраны три рабочих способа с конкретными шагами настройки, ограничениями каждого и типовыми ошибками, из-за которых обработка «молча» не выполняется.

Как выбрать способ запуска

Прежде чем настраивать расписание, определите три вещи: режим базы (файловый или клиент-серверный), наличие в конфигурации Библиотеки стандартных подсистем (БСП) и возможность доработки конфигурации. От этого зависит весь дальнейший путь.

Если конфигурация построена на БСП (УТ 11, ERP, КА, БП 3.0, ЗУП 3.1 и другие типовые на управляемых формах), правильный путь — подсистема «Дополнительные отчеты и обработки»: она умеет выполнять серверные процедуры обработки по расписанию без доработки конфигурации. Если конфигурация самописная или на обычных формах, потребуется свое регламентное задание. Если база файловая и дорабатывать ее нельзя — остается планировщик Windows.

Маршрут решения

Как выбрать действие

Конфигурация на БСП (УТ 11, ERP, БП 3.0, ЗУП 3.1), база файловая или клиент-сервернаяИспользуйте «Дополнительные отчеты и обработки» с командой «Вызов серверной процедуры» и расписанием
Самописная конфигурация или обычные формы, есть доступ к конфигураторуСоздайте регламентное задание, которое подключает обработку и вызывает ее экспортную процедуру
Файловая база, конфигурацию менять нельзя, БСП нетНастройте планировщик задач Windows с запуском 1cv8.exe /Execute и обработчиком ожидания или кодом в модуле обработки
Обработка должна работать интерактивно, с открытием формПо расписанию такое выполнить нельзя — вынесите логику в серверную процедуру без обращений к интерфейсу

Способ 1: запуск через «Дополнительные отчеты и обработки» (БСП)

В типовых конфигурациях на БСП внешняя обработка может выполняться по расписанию штатно, без единой строки изменений в конфигураторе. Для этого обработка должна быть подготовлена по правилам подсистемы: содержать функцию СведенияОВнешнейОбработке() в модуле объекта и экспортную серверную процедуру ВыполнитьКоманду.

Порядок настройки следующий. Сначала включите функциональную опцию: «Администрирование» → «Печатные формы, отчеты и обработки» → флаг «Дополнительные отчеты и обработки». Затем откройте одноименный справочник, загрузите файл обработки (.epf) и убедитесь, что в карточке появилась команда с вариантом запуска «Вызов серверной процедуры».

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

Требования к коду обработки

Ключевое условие — код не должен обращаться к клиентскому контексту: никаких открытых форм, Предупреждение(), Вопрос(), ПолучитьФайл с диалогами. В фоновом задании все это вызовет ошибку или зависание. Логику, требующую интерактива, заменяют параметрами, хранимыми в настройках обработки или константах.

Пример минимального каркаса модуля объекта:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();

ПараметрыРегистрации.Версия = "1.0";

ПараметрыРегистрации.БезопасныйРежим = Ложь;

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = "Выполнить обработку по расписанию";

Команда.Идентификатор = "ВыполнитьПоРасписанию";

Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

Команда.ПоказыватьОповещение = Ложь;

Возврат ПараметрыРегистрации;

КонецФункции

Процедура ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения) Экспорт

// Основная логика: только серверный код

ЗаписьЖурналаРегистрации("Обработка.Выполнение", УровеньЖурналаРегистрации.Информация,,,

"Обработка выполнена по расписанию");

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

Способ 2: собственное регламентное задание

В самописной конфигурации или когда нужен полный контроль над выполнением, создают регламентное задание в конфигураторе: «Конфигурация» → «Общие» → «Регламентные задания» → «Добавить». В свойствах указывают метод — экспортную процедуру общего модуля, расписание и признак использования.

Метод задания размещают в серверном общем модуле. Внутри него внешняя обработка подключается через ВнешниеОбработки.Создать() с указанием полного пути к файлу, после чего вызывается ее экспортная процедура:

Процедура ВыполнитьВнешнююОбработку() Экспорт

ПутьКФайлу = "D:\1C\Обработки\МояОбработка.epf";

Обработка = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь);

Обработка.ВыполнитьОсновнуюЛогику();

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

Учтите, что в клиент-серверном режиме путь к файлу должен быть доступен с сервера 1С, а не с клиентской машины — частая причина ошибки «файл не найден». Также в модуле обработки процедура должна быть объявлена с директивой, допускающей серверный вызов, а сама обработка — компилироваться в серверном контексте.

Способ 3: планировщик задач Windows

Для файловых баз без возможности доработки конфигурации используют запуск 1С из командной строки по расписанию Windows. Создается bat-файл, который стартует платформу с параметром /Execute, указывающим на файл обработки, и завершает сеанс после выполнения.

bat
"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-файла, и обязательно отмечают выполнение с наивысшими правами и независимо от входа пользователя, если сервер работает без интерактивного сеанса.

Ограничения способа: компьютер должен быть включен в момент запуска, платформа запускается в клиентском (толстый/тонкий) режиме, поэтому в обработке допустим клиентский код, но сеанс занимает лицензию. Также одновременный запуск обработки и работа пользователей в файловой базе могут приводить к конфликтам блокировок.

Проверка результата и диагностика

Основной инструмент проверки — журнал регистрации: «Администрирование» → «Обслуживание» → «Журнал регистрации», отбор по событию выполнения фонового задания. Дополнительно полезно явно писать в журнал факт старта и завершения обработки через ЗаписьЖурналаРегистрации — тогда «молчаливые» сбои видны сразу.

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

Контрольные точки

Как проверить результат

Запись в журнале регистрации о выполнении задания
Норма

Есть событие успешного выполнения в ожидаемое время

Тревожный признак

События нет или есть запись с уровнем «Ошибка»

Фактический результат работы обработки (данные, файлы, отчеты)
Норма

Данные обновлены, файлы созданы с актуальной датой

Тревожный признак

Задание выполнилось, но данные не изменились — логика отработала с пустым результатом

Состояние регламентного задания в консоли заданий
Норма

Состояние «Выполнено», дата последнего запуска актуальна

Тревожный признак

«Ошибка выполнения» или задание заблокировано

Сеанс при запуске через планировщик Windows
Норма

Процесс 1cv8 запустился и завершился, код возврата 0

Тревожный признак

Процесс висит в диспетчере задач или завершился с ошибкой

Типичные ошибки и ограничения

Чаще всего запуск по расписанию «не работает» по одной из предсказуемых причин. Разбор типовых ситуаций экономит часы диагностики.

Типичные ошибки
01
Обработка обращается к формам или диалогам в фоновом задании — задание падает с ошибкой или зависает; решение: только серверный код без интерактива
02
В клиент-серверной базе указан локальный путь к файлу обработки — файл недоступен с сервера 1С; решение: сетевой путь или путь на диске сервера
03
В файловой базе никто не вошел в сеанс — регламентные задания не выполняются; решение: планировщик Windows или выделенный сеанс
04
Безопасный режим включен при загрузке обработки в БСП — недоступны операции с файловой системой и COM; решение: снять флаг безопасного режима при понимании рисков
05
У пользователя, от имени которого выполняется задание, нет прав на объекты данных — обработка завершается ошибкой доступа; решение: выделенная учетная запись с нужными ролями
06
Расписание настроено, но задание заблокировано после серии ошибок — БСП блокирует задание после повторных аварийных завершений; решение: разблокировать в консоли заданий и устранить причину

Отдельно стоит упомянуть производительность: тяжелая обработка, запущенная в рабочее время на клиент-серверной базе, конкурирует за ресурсы рабочего процесса с пользователями. Ресурсоемкие операции планируйте на ночь и по возможности ограничивайте объем выборок за один запуск.

Итог

Что важно запомнить

В конфигурациях на БСП внешняя обработка запускается по расписанию через «Дополнительные отчеты и обработки» с командой «Вызов серверной процедуры». В самописных решениях — через собственное регламентное задание с подключением обработки кодом. В файловых базах без доработок — через планировщик Windows с параметром /Execute. Код обработки для фонового выполнения не должен содержать интерактивных вызовов, а результат всегда проверяется по журналу регистрации.

Частые вопросы

Можно ли запустить внешнюю обработку по расписанию в файловой базе без постоянно открытого сеанса 1С?

Штатные регламентные задания в файловой базе выполняются только при работающем сеансе. Если держать сеанс открытым нельзя, используйте планировщик задач Windows: он запускает 1cv8.exe с параметром /Execute, обработка выполняется, после чего сеанс завершается вызовом ЗавершитьРаботуСистемы(Ложь).

Почему обработка, загруженная в «Дополнительные отчеты и обработки», не предлагает настроить расписание?

Расписание доступно только для команд с вариантом использования «Вызов серверной процедуры». Если в СведенияОВнешнейОбработке() команда объявлена как «Открытие формы» или «Вызов клиентской процедуры», расписания не будет. Измените тип команды в модуле объекта и перезагрузите обработку в справочник.

Обработка выполняется по расписанию, но данные не меняются. Что проверить?

Убедитесь, что логика не зависит от параметров, которые задаются на форме вручную, — в фоновом выполнении они пусты. Проверьте отборы по периоду: обработка может брать «текущую дату сеанса» иначе, чем ожидалось. Добавьте запись в журнал регистрации с количеством обработанных объектов — это сразу покажет, работает ли выборка.

Нужны ли отдельные права для выполнения обработки по расписанию?

Регламентное задание выполняется от имени пользователя, указанного в его свойствах (или пользователя по умолчанию). У этой учетной записи должны быть роли, дающие доступ ко всем объектам, которые читает или изменяет обработка. Рекомендуется завести отдельного служебного пользователя с минимально необходимым набором прав.

Как отладить обработку перед постановкой на расписание?

Сначала запустите серверную процедуру вручную: вызовите ВыполнитьКоманду из внешней обработки-заглушки или через консоль кода на сервере. Затем выполните задание принудительно через консоль заданий, не дожидаясь времени по расписанию, и проверьте журнал регистрации. Только после успешного ручного прогона включайте регулярное расписание.

Можно ли запускать одну обработку с разными параметрами по разным расписаниям?

Да. В подсистеме БСП обработку можно добавить в справочник несколько раз как отдельные элементы с разными командами или настройками. При собственном регламентном задании создают несколько заданий, каждое со своим ключом и параметром, который передается в процедуру обработки.