ILanerContext.LoadFromStream

Синтаксис Fore

LoadFromStream(Stream: IIOStream);

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

LoadFromStream(Stream: System.IO.Stream);

Параметры

Stream. Поток.

Описание

Метод LoadFromStream загружает контекст из указанного потока.

Комментарии

Для выгрузки контекста в поток используйте метод ILanerContext.SaveToStream.

Пример Fore

Для выполнения примера предполагается наличие формы, содержащей:

В репозитории должен присутствовать документ с идентификатором «OBJ_CONTEXT», содержащий сохраненный контекст.

Добавьте ссылки на системные сборки «Metabase», «Io», «Fore». Пример является обработчиком события OnClick для кнопки.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    Mb: IMetabase;
    pContext: ILanerContext;
    ContextObject, LanerObject: IMetabaseObjectDescriptor;
    Stream: IIOStream;
    Laner: ILaner;
    Doc: IDocument;
    MemStream: IMemoryStream;
Begin
    Mb := MetabaseClass.Active;
// Создание контекста
    pContext := New LanerContext.Create;
// Загрузка контекста из потока 
    ContextObject := Mb.ItemById("OBJ_CONTEXT");
    Doc := ContextObject.Edit As IDocument;
    Stream := Doc.GetAsStream;
    pContext.LoadFromStream(Stream);
// Начало загрузки рабочих книг в контекст
    pContext.BeginLoad;
// Загрузка 1-й рабочей книги   
    Laner := UiErAnalyzer1.ErAnalyzer.Laner;
    If Not Laner.IsInContext Then
        pContext.Register(Laner);
    End If;
// Загрузка рабочих книг, от которых зависит 1-я книга
    For Each LanerObject In Laner.Dependencies Do
        Laner := LanerObject.Bind As ILaner;
        If Not Laner.IsInContext Then
            pContext.Register(Laner);
        End If;
    End For;
// Загрузка рабочих книг, которые зависят от 1-й книги
        For Each LanerObject In Laner.Dependents Do
        Laner := LanerObject.Bind As ILaner;
        If Not Laner.IsInContext Then
            pContext.Register(Laner);
        End If;
    End For;
// Завершение загрузки рабочих книг в контекст
    pContext.EndLoad;
// Сохранение контекста в потока
    MemStream := New MemoryStream.Create;
    pContext.SaveToStream(MemStream);
    Doc.LoadFromStream(MemStream);
    (Doc As IMetabaseObject).Save;
End Sub Button1OnClick;

После выполнения примера контекст будет загружен из документа «OBJ_CONTEXT». Затем в контекст будет добавлена рабочая книга, а также все зависимые книги и книги, от которых она зависит. Полученный контекст будет сохранен в документ «OBJ_CONTEXT».

Пример Fore.NET

Для выполнения примера предполагается наличие .NET-формы, содержащей:

Пример является обработчиком события Click для кнопки.

Imports Prognoz.Platform.Interop.Laner;
Imports System.IO;
Imports Prognoz.Platform.Interop.KeFore;


Private Sub button2_Click(sender: System.Object; e: System.EventArgs);
Var
    Mb: IMetabase;
    pContext: ILanerContext;
    ContextObject, LanerObject: IMetabaseObjectDescriptor;
    Stream: Stream;
    Laner: ILaner;
    Doc: IDocument;
    MemStream: MemoryStream;
Begin
    Mb := Self.Metabase;
// Создание контекста   
    pContext := New LanerContext.Create();
// Загрузка контекста из потока 
    ContextObject := Mb.ItemById["OBJ_CONTEXT"];
    Doc := ContextObject.Edit() As IDocument;
    Stream := Doc.GetAsStream();
    pContext.LoadFromStream(Stream);
// Начало загрузки рабочих книг в контекст
    pContext.BeginLoad();
// Загрузка 1-й рабочей книги   
    Laner := uiErAnalyzerNet1.ErAnalyzer.ErAnalyzer.Laner;
    If Not Laner.IsInContext Then
        pContext.Register(Laner As LanerFactory);
    End If;
// Загрузка рабочих книг, от которых зависит 1-я книга
    For Each LanerObject In Laner.Dependencies Do
        Laner := LanerObject.Bind() As ILaner;
        If Not Laner.IsInContext Then
            pContext.Register(Laner As LanerFactory);
        End If;
    End For;
// Загрузка рабочих книг, которые зависят от 1-й книги
        For Each LanerObject In Laner.Dependents Do
        Laner := LanerObject.Bind() As ILaner;
        If Not Laner.IsInContext Then
            pContext.Register(Laner As LanerFactory);
        End If;
    End For;
// Завершение загрузки рабочих книг в контекст
    pContext.EndLoad();
// Сохранение контекста в потока
    MemStream := New MemoryStream.Create();
    pContext.SaveToStream(MemStream);
    Doc.LoadFromStream(MemStream);
    (Doc As IMetabaseObject).Save();
End Sub;

После выполнения примера контекст будет загружен из документа «OBJ_CONTEXT». Затем в контекст будет добавлена рабочая книга, а также все зависимые книги и книги, от которых она зависит. Полученный контекст будет сохранен в документ «OBJ_CONTEXT».

См. также:

ILanerContext