ExecuteImmediate(SaveResult: Boolean): IScheduledTaskResult;
ExecuteImmediate(SaveResult: boolean): Prognoz.Platform.Interop.KeFore.IScheduledTaskResult;
SaveResult. Определяет, сохранять ли результат выполнения задачи в базу данных. Возможные значения:
True. Сохранять результат в базу данных;
False. Не сохранять результат в базу данных.
Метод ExecuteImmediate выполняет задачу в текущем репозитории.
Метод ExecuteImmediate выполняет задачу в текущем процессе и текущем репозитории и не требуется наличие запущенного планировщика задач. Настройки отправки сообщений о выполнении задачи и сохранении результата на FTP-сервер игнорируются.
Для выполнения примера в репозитории предполагается наличие контейнера запланированных задач с идентификатором 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.
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;
См. также: