При сопровождении и администрировании баз 1С регулярно возникает задача автоматического выполнения регламентных процедур — например, ночной выгрузки данных, синхронизации с сайтом или очистки устаревших записей. Нередко требуется организовать запуск внешней обработки (файла с расширением .epf) по заданному графику без включения возможности изменения типовой конфигурации и без ручного добавления новых регламентных заданий в дерево метаданных.
Разберем основные практические способы реализации этой задачи: запуск через Планировщик задач операционной системы с использованием параметров командной строки платформы 1С и использование встроенного функционала Библиотеки стандартных подсистем (БСП).
Рассмотрим традиционный и универсальный подход, который работает во всех версиях платформы 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
Проанализируем используемые параметры командной строки:
/F для файловой базы, /S для сервера) — строка подключения к информационной базе.ПараметрыЗапуска).Выясним, какие доработки необходимо внести в саму внешнюю обработку, чтобы запуск через командную строку работал стабильно и автономно:
ПриОткрытии) необходимо вызвать метод ЗавершитьРаботуСистемы(Ложь). Передача параметра Ложь отключает запрос подтверждения на выход.Предупреждение(), Вопрос() или открывать модальные формы, так как при их появлении регламентный процесс зависнет в ожидании реакции пользователя.Попытка ... Исключение, а возникшие ошибки фиксировать через метод ЗаписьЖурналаРегистрации().Посмотрим на пример кода в модуле формы внешней обработки:
Процедура ПриОткрытии()
Попытка
ВыполнитьФоновыйАлгоритм();
ЗаписьЖурналаРегистрации("ФоноваяОбработка", УровеньЖурналаРегистрации.Информация,,, "Обработка успешно завершена.");
Исключение
ИнформацияОбОшибке = ОписаниеОшибки();
ЗаписьЖурналаРегистрации("ФоноваяОбработка", УровеньЖурналаРегистрации.Ошибка,,, "Ошибка выполнения: " + ИнформацияОбОшибке);
КонецПопытки;
// Завершаем работу сеанса без запроса подтверждения
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
Если используемая конфигурация разработана на базе Библиотеки стандартных подсистем (к таким относятся практически все современные типовые конфигурации), вносить изменения в метаданные или создавать внешние bat-файлы не требуется. Механизм БСП позволяет загрузить внешнюю обработку через пользовательский режим и настроить для нее регламентное задание средствами самой базы данных.
Разберем по шагам, что для этого требуется:
СведенияОВнешнейОбработке(), возвращающую структуру с метаинформацией (вид обработки — ДополнительнаяОбработка).ВызовСерверногоМетода, а исполняемый алгоритм выносится в процедуру ВыполнитьКоманду() в модуле объекта.При настройке Планировщика задач Windows (Task Scheduler) обратим внимание на следующие технические правила:
SYSTEM или LOCAL SERVICE. У них отсутствует стандартный пользовательский профиль и доступ к сетевым ресурсам. Настройте запуск от имени специального сервисного пользователя ОС с установленным флагом «Выполнять вне зависимости от регистрации пользователя».Z:\). В сессиях планировщика они могут быть недоступны. Всегда указывайте прямые сетевые UNC-пути вида \\server\share\file.epf.