Как запустить обработку в 1С по расписанию в нужное время?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

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

Анализ архитектурных вариантов решения

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

  1. Наличие Библиотеки Стандартных Подсистем (БСП): В современных конфигурациях (УТ 11, КА 2, ERP 2, БП 3.0) встроен механизм дополнительных отчетов и обработок, позволяющий настраивать расписание запуска напрямую в пользовательском режиме. В устаревших конфигурациях на обычных формах (например, УТ 10.3, УПП 1.3) такой механизм в типовом виде отсутствует.
  2. Вариант работы базы данных: В клиент-серверном режиме (SQL) регламентные задания выполняются фоновыми потоками службы кластера серверов 1С. В файловом режиме для выполнения фоновых заданий требуется постоянно запущенный специальный сеанс клиента.
  3. Возможность изменения конфигурации: Допустимо ли снимать конфигурацию с поддержки для добавления метаданных или требуется использовать исключительно внешние файлы обработок (.epf).

Вариант 1. Использование механизма дополнительных обработок БСП (без изменения конфигурации)

Если база работает на управляемых формах и содержит подсистему «Дополнительные отчеты и обработки», рассмотрим самый безопасный и удобный способ. Нам не потребуется снимать конфигурацию с поддержки или настраивать планировщик операционной системы.

Разберем по шагам, как подготовить внешнюю обработку для автоматического запуска:

  1. Откроем модуль объекта внешней обработки и создадим экспортную функцию СведенияОВнешнейОбработке().
  2. Укажем вид обработки как ДополнительнаяОбработка.
  3. Добавим команду с вариантом запуска ВызовСерверногоМетода.
  4. Создадим экспортную процедуру ВыполнитьКоманду(ИмяКоманды, ПараметрыКоманды), внутри которой опишем логику алгоритма.

Посмотрим на пример программного кода модуля объекта внешней обработки:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    ПараметрыРегистрации.Информация = "Автоматическая обработка регламентных данных";
    
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = "Выполнить регламентную операцию";
    Команда.Идентификатор = "ЗапускПоРасписанию";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.СпособВызоваКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Ложь;
    
    Возврат ПараметрыРегистрации;
КонецФункции

Процедура ВыполнитьКоманду(ИмяКоманды, ПараметрыКоманды) Экспорт
    Если ИмяКоманды = "ЗапускПоРасписанию" Тогда
        ВыполнитьОсновноеДействие();
    КонецЕсли;
КонецПроцедуры

Процедура ВыполнитьОсновноеДействие()
    // Логика фонового алгоритма
    ЗаписьЖурналаРегистрации("ФоноваяОбработка", УровеньЖурналаРегистрации.Информация,,, "Обработка успешно выполнена.");
КонецПроцедуры

После подготовки файла подключим его в режиме 1С:Предприятие через меню НСИ и администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки. В карточке подключенной обработки появится гиперссылка настройки расписания, где платформа сама создаст и свяжет регламентное задание.

Вариант 2. Создание собственного регламентного задания в конфигураторе

Рассмотрим случай, когда используется конфигурация без БСП (например, 1С:Управление торговлей 10.3) и есть возможность внесения изменений в метаданные. Это классический и наиболее надежный способ выполнения задач по расписанию внутри самой платформы.

Разберем по шагам создание регламентного задания:

  1. Откроем дерево метаданных в конфигураторе и перейдем в ветку Общие -> Общие модули. Создадим модуль, например, РегламентныеЗадачиСервер, и установим флаги Сервер и Вызов сервера.
  2. В созданном модуле опишем экспортную процедуру, выполняющую необходимое действие.
  3. Перейдем в ветку Общие -> Регламентные задания и добавим новый объект.
  4. В свойствах регламентного задания укажем имя процедуры в поле ИмяМетода (например, РегламентныеЗадачиСервер.ВыполнитьЗагрузкуДанных).
  5. Настроим расписание выполнения (время старта, дни недели, периодичность повторения).

Посмотрим на пример кода общего модуля, реализующего выполнение задачи:


Процедура ВыполнитьЗагрузкуДанных() Экспорт
    Попытка
        // Основной алгоритм работы
        Выборка = Справочники.Номенклатура.Выбрать();
        Пока Выборка.Следующий() Цикл
            // Обработка данных
        КонецЦикла;
    Исключение
        ИнформацияОбОшибке = ОписаниеОшибки();
        ЗаписьЖурналаРегистрации("РегламентноеЗадание", УровеньЖурналаРегистрации.Ошибка,,, ИнформацияОбОшибке);
    КонецПопытки;
КонецПроцедуры

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

Вариант 3. Запуск внешней обработки через Планировщик задач Windows и командную строку

Если конфигурацию нельзя изменять, БСП отсутствует, а обработка представлена отдельным файлом .epf, проанализируем запуск с помощью планировщика операционной системы (Windows Task Scheduler или cron в Linux).

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

Разберем параметры командной строки платформы 1С:

  1. ENTERPRISE — режим запуска пользовательского сеанса.
  2. /F <ПутьКБазе> или /S <Сервер\База> — путь к файловой информационной базе или имя базы на сервере 1С.
  3. /Execute <ПутьКФайлу.epf> — автоматическое открытие и выполнение внешней обработки.
  4. /C <Параметры> — передача произвольной строки параметров внутрь сеанса (считывается через глобальную функцию ПараметрыЗапуска).
  5. /DisableStartupMessages — отключение всплывающих системных диалогов, способных заблокировать автономную работу.

Посмотрим на пример командного файла (run_task.bat) с использованием Windows-аутентификации:


@echo off
"C:\Program Files\1cv8\8.3.23.1865\bin\1cv8.exe" ENTERPRISE /S "srv-1c\trade_base" /Execute "C:\1C_Tasks\AutoExport.epf" /C "AutoRun" /DisableStartupMessages

Теперь рассмотрим, как должна быть спроектирована сама внешняя обработка. Поскольку запуск происходит в режиме толстого или тонкого клиента, после выполнения действий сеанс 1С обязан штатно закрыться, иначе в диспетчере задач останется зависший процесс.

В модуле формы (или модуле объекта при инициализации) опишем перехват запуска и корректное завершение работы:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если Найти(ПараметрыЗапуска, "AutoRun") > 0 Тогда
        // Запуск основного алгоритма обработки
        ВыполнитьАвтоматическуюОбработку();
        
        // Обязательное завершение сеанса после окончания работы
        ПрекратитьРаботуСистемы(Ложь);
    КонецЕсли;
КонецПроцедуры

Особенности файлового и клиент-серверного вариантов

Проанализируем разницу в поведении подсистемы фоновых заданий в зависимости от типа базы данных:

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

Итоги и рекомендации

Подведем итог выбора инструмента под конкретные условия:

  1. Для современных конфигураций на управляемых формах всегда используем подсистему Дополнительные отчеты и обработки БСП. Это сохраняет типовую поддержку и позволяет гибко управлять графиком запуска из пользовательского интерфейса.
  2. Для нетиповых конфигураций или баз без БСП при наличии доступа к разработке оптимальным решением является добавление регламентного задания в дерево метаданных.
  3. Если база не подлежит модификации, а конфигурация устарела — применяем связку Планировщик Windows + параметры запуска командной строки с обязательной авторизацией через службы операционной системы и автоматическим закрытием сеанса через ПрекратитьРаботуСистемы().
← На главную