IScheduledTask.ExecuteImmediate

Синтаксис Fore

ExecuteImmediate(SaveResult: Boolean): IScheduledTaskResult;

Синтаксис Fore.NET

ExecuteImmediate(SaveResult: boolean): Prognoz.Platform.Interop.KeFore.IScheduledTaskResult;

Параметры

SaveResult. Определяет, сохранять ли результат выполнения задачи в базу данных. Возможные значения:

Описание

Метод ExecuteImmediate выполняет задачу в текущем репозитории.

Комментарии

Метод ExecuteImmediate выполняет задачу в текущем процессе и текущем репозитории и не требуется наличие запущенного планировщика задач. Настройки отправки сообщений о выполнении задачи и сохранении результата на FTP-сервер игнорируются.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера запланированных задач с идентификатором SCHEDULEDTASKSCONTAINER. и задачи вычисления регламентного отчёта с идентификатором REPORT_TASK. Для данной задачи должно быть настроено какое-либо действие с результатом выполнения.

Добавьте ссылки на системные сборки: Fore, IO, Metabase.

Sub UserProc;
Var
    MB: IMetabase;
    Cont: IScheduledTasksContainer;
    Tasks: IMetabaseObjectDescriptors;
    i: Integer;
    Task: IScheduledTask;
    Result: IScheduledTaskResult;
    FileName: string;
    Stream: IIOStreamSys;
Begin
    
// Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    Cont := MB.ItemById(
"SCHEDULEDTASKSCONTAINER").Bind As IScheduledTasksContainer;
    
// Получаем задачу с идентификатором REPORT_TASK
    Tasks := Cont.Tasks;
    
For i := 0 To Tasks.Count - 1 Do
        
If Tasks.Item(i).Id = "REPORT_TASK" Then
            Task := Tasks.Item(i).Edit 
As IScheduledTask;
        
End If;
    
End For;
    
// Выполняем задачу
    Result := Task.ExecuteImmediate(True);
    
// Сохраняем результаты выполнения в файл
    If Result.HasDataStream Then
        FileName := 
"c:\" + (Task As IMetabaseObject).Name + "." + Result.FileExtension;
        Stream := 
New FileStream.Create(FileName, FileOpenMode.Create, FileShare.Exclusive) As IIOStreamSys;
        Result.ReadDataStream(Stream);
        Debug.WriteLine(
"Результат сохранён в файл " + FileName);
    
End If;
End Sub UserProc;

В результате выполнения задача будет выполнена, полученный результат будет сохранён в файл, название которого будет выведено в окно консоли.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.ForeIO;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.KeFore;
Imports System.IO;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Cont: IScheduledTasksContainer;
    Tasks: IMetabaseObjectDescriptors;
    i: Integer;
    Task: IScheduledTask;
    Result: IScheduledTaskResult;
    FileName: string;
    Stream: System.IO.FileStream;
Begin
    
// Получаем текущий репозиторий
    MB := Params.Metabase;
    Cont := MB.ItemById[
"SCHEDULEDTASKSCONTAINER"].Bind() As IScheduledTasksContainer;
    
// Получаем задачу с идентификатором REPORT_TASK
    Tasks := Cont.Tasks;
    
For i := 0 To Tasks.Count - 1 Do
        
If Tasks.Item[i].Id = "REPORT_TASK" Then
            Task := Tasks.Item[i].Edit() 
As IScheduledTask;
        
End If;
    
End For;
    
// Выполняем задачу
    Result := Task.ExecuteImmediate(True);
    
// Сохраняем результаты выполнения в файл
    If Result.HasDataStream Then
        FileName := 
"c:\" + (Task As IMetabaseObject).Name + "." + Result.FileExtension;
        Stream := 
New System.IO.FileStream.Create(FileName, System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite);
        Result.ReadDataStream(Stream 
As System.IO.Stream);
        System.Diagnostics.Debug.WriteLine(
"Результат сохранён в файл " + FileName);
    
End If;
End Sub;

См. также:

IScheduledTask