IPrxReport.SaveToStream

Синтаксис Fore

SaveToStream(Stream: IIOStream; Mode: PrxReportSaveMode);

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

SaveToStream(Stream: System.IO.Stream; Mode: Prognoz.Platform.Interop.Report.PrxReportSaveMode);

Параметры

Stream. Поток, в который будет сохранен регламентный отчет.

Mode. Режим сохранения отчета.

Описание

Метод SaveToStream сохраняет регламентный отчет в поток.

Комментарии

Сохранение регламентного отчета в поток может использоваться для передачи данных между отчетами, либо для сохранения отчета в таблицу репозитория. Регламентный отчет может быть сохранен в поле пользовательского типа. Более подробно работа с полями пользовательского типа описана в базе знаний в статье «Работа с полями, имеющими пользовательский тип данных».

Для загрузки регламентного отчета из потока используйте метод LoadFromStream.

Пример Fore

Для выполнения примера предполагается наличие в репозитории таблицы с идентификатором «RepTable». В данной таблице созданы строковые поля с идентификаторами «REP_ID» и «REP_ID», предназначенные для хранения идентификатора и наименования соответственно. Также создано двоичное поле «REPORT», в котором хранятся сами регламентные отчеты.

Также в репозитории должен быть создан регламентный отчет с идентификатором «Report_1».

Sub UserProc;
Var
    MB: IMetabase;
    TableInst: IDatasetInstance;
    Cache: ICachedDataset;
    Fields: IDatasetInstanceFields;
    Report: IPrxReport;
    RepStream: IMemoryStream;
Begin
    MB := MetabaseClass.Active;
    //Таблица для сохранения рег.отчета
    TableInst := MB.ItemById("RepTable").Open(NullAs IDatasetInstance;
    Cache := TableInst.OpenCached;
    Fields := Cache.Fields;
    //Рег.отчет
    Report := MB.ItemById("Report_1").Bind As IPrxReport;
    Cache.Append;
    Fields.FindById("REP_ID").Value := Report.MetabaseObject.Id;
    Fields.FindById("REP_NAME").Value := Report.MetabaseObject.Name;
    //Поток, в который будет сохранен рег.отчет
    RepStream := New MemoryStream.Create;
    Report.SaveToStream(RepStream, PrxReportSaveMode.Full);
    //Сохранение содержимого потока в таблицу
    Fields.FindById("REPORT").Value := RepStream;
    Cache.Post;
    Dispose RepStream;
End Sub UserProc;

При выполнения примера в таблице будет создана новая запись. В полях будет сохранена информация о регламентном отчета, а также сам отчет. Сохранение рег.отчета в поле таблицы происходит через поток.

Пример Fore.NET

Для выполнения примера предполагается наличие в репозитории таблицы с идентификатором «RepTable». В данной таблице созданы строковые поля с идентификаторами «REP_ID» и «REP_ID», предназначенные для хранения идентификатора и наименования соответственно. Также создано двоичное поле «REPORT», в котором хранятся сами регламентные отчеты.

Также в репозитории должен быть создан регламентный отчет с идентификатором «Report_1».

Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Marshalers;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;

Private Sub UserProc();
Var
    MB: IMetabase;
    TableInst: IDatasetInstance;
    Cache: ICachedDataset;
    Fields: IDatasetInstanceFields;
    Report: IPrxReport;
    IOStreamMarsh: ForeIOStreamMarshaler = New ForeIOStreamMarshaler();
    RepStream: System.IO.MemoryStream = New System.IO.MemoryStream();
Begin
    MB := Self.Metabase;
    //Таблица для сохранения рег.отчета
    TableInst := MB.ItemById["RepTable"].Open(NullAs IDatasetInstance;
    Cache := TableInst.OpenCached();
    Fields := Cache.Fields;
    //Рег.отчет
    Report := MB.ItemById["Report_1"].Bind() As IPrxReport;
    Cache.Append();
    Fields.FindById("REP_ID").Value := Report.MetabaseObject.Id;
    Fields.FindById("REP_NAME").Value := Report.MetabaseObject.Name;
    //Сохранение рег.отчет в поток
    Report.SaveToStream(RepStream, PrxReportSaveMode.prsmFull);
    //Сохранение содержимого потока в таблицу
    Fields.FindById("REPORT").Value := IOStreamMarsh.ManagedToFore(RepStream);
    Cache.Post();
    RepStream := Null;
End Sub;

При выполнения примера в таблице будет создана новая запись. В полях будет сохранена информация о регламентном отчета, а также сам отчет. Сохранение рег.отчета в поле таблицы происходит через поток.

См. также:

IPrxReport