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

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

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

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

Способ 1. Запуск через командный файл (BAT) и Планировщик задач Windows

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

Для запуска обработки сразу после входа в базу используется системный параметр /Execute.

Разберем пример структуры командного файла для клиент-серверной или файловой базы:


@echo off
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBConnectionString "Srvr=""app-server"";Ref=""trade_base"";" /N "RoboUser" /P "SecretPass" /Execute "C:\1C_Tasks\MyExportTask.epf" /DisableStartupMessages /DisableStartupChecks /ClearCache

Проанализируем используемые параметры командной строки:

  1. ENTERPRISE — запуск платформы в режиме «1С:Предприятие».
  2. /IBConnectionString (или /F для файловой базы, /S для сервера) — строка подключения к информационной базе.
  3. /N и /P — имя пользователя 1С и его пароль. Рекомендуется завести отдельного сервисного пользователя с ограниченными правами.
  4. /Execute <ПутьКФайлу> — ключ, предписывающий платформе открыть и выполнить указанную внешнюю обработку сразу после старта сеанса.
  5. /DisableStartupMessages — подавление показа стартовых диалоговых и информационных окон платформы.
  6. /DisableStartupChecks — отключение вспомогательных фоновых проверок при старте.
  7. /ClearCache — очистка пользовательского кэша перед входом во избежание сбоев.
  8. /C <СтрокаПараметров> — дополнительный ключ, позволяющий передать произвольные строковые параметры в обработку (считываются через свойство ПараметрыЗапуска).

Важные нюансы реализации кода внутри обработки

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

  1. Автоматическое закрытие сеанса 1С. После отработки логики платформа не завершит сеанс самостоятельно. Если не закрыть программу программно, сессия останется висеть в памяти и будет блокировать клиентскую лицензию. В конце исполняемого алгоритма (или в обработчике формы ПриОткрытии) необходимо вызвать метод ЗавершитьРаботуСистемы(Ложь). Передача параметра Ложь отключает запрос подтверждения на выход.
  2. Полный отказ от интерактивных окон. В регламентном коде категорически запрещено использовать вызовы Предупреждение(), Вопрос() или открывать модальные формы, так как при их появлении регламентный процесс зависнет в ожидании реакции пользователя.
  3. Перехват ошибок и логирование. Весь исполняемый блок кода обязательно следует оборачивать в конструкцию Попытка ... Исключение, а возникшие ошибки фиксировать через метод ЗаписьЖурналаРегистрации().

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


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

Способ 2. Использование подсистемы «Дополнительные отчеты и обработки» (БСП)

Если используемая конфигурация разработана на базе Библиотеки стандартных подсистем (к таким относятся практически все современные типовые конфигурации), вносить изменения в метаданные или создавать внешние bat-файлы не требуется. Механизм БСП позволяет загрузить внешнюю обработку через пользовательский режим и настроить для нее регламентное задание средствами самой базы данных.

Разберем по шагам, что для этого требуется:

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

Рекомендации по настройке окружения операционной системы

При настройке Планировщика задач Windows (Task Scheduler) обратим внимание на следующие технические правила:

  1. Учетная запись службы: Не запускайте задачу от имени встроенных системных учетных записей SYSTEM или LOCAL SERVICE. У них отсутствует стандартный пользовательский профиль и доступ к сетевым ресурсам. Настройте запуск от имени специального сервисного пользователя ОС с установленным флагом «Выполнять вне зависимости от регистрации пользователя».
  2. Сетевые пути: Избегайте использования букв подключенных сетевых дисков (таких как Z:\). В сессиях планировщика они могут быть недоступны. Всегда указывайте прямые сетевые UNC-пути вида \\server\share\file.epf.
  3. Управление лицензиями: Помните, что каждый запускаемый планировщиком сеанс клиента 1С занимает одну рабочую клиентскую лицензию на время своего исполнения.
← На главную