Dataset: IDatasetModel;
Свойство Dataset определяет табличный справочник НСИ, который выступает в качестве приёмника данных.
Для выполнения примера предполагается наличие в репозитории задачи ETL с идентификатором «ETL_Task» и табличного справочника НСИ с идентификатором «RDS_DICT».
Добавьте ссылки на системные сборки: Andy, Db, Drawing, Dt, Etl, Metabase.
Sub UserProc;
Var
MB: IMetabase;
ETLTask: IEtlTask;
EtlConsumer: IEtlPlainDataConsumer;
DtRds: IDtRdsConsumer;
Begin
MB := MetabaseClass.Active;
ETLTask := MB.ItemById("ETL_Task").Edit As IEtlTask;
//Создание нового приёмника - табличного справочника НСИ
EtlConsumer := ETLTask.Create(EtlObjectType.PlainDataRdsConsumer) As IEtlPlainDataConsumer;
EtlConsumer := EtlConsumer.Edit;
EtlConsumer.ClearConsumer := False;
EtlConsumer.Id := "RDS_Consumer";
EtlConsumer.Name := "Приёмник - Табличный справочник НСИ";
//Создаем визуальный объект приёмника
CreateWX(ETLTask, EtlConsumer, 0, 0);
//Настраиваем приёмник
DtRds := EtlConsumer.Consumer As IDtRdsConsumer;
DtRds.Dataset := Mb.ItemById("RDS_DICT").Bind As IDatasetModel;
DtRds.CatchAddRecordException := True;
DtRds.UpdateMode := UpdateLoadMode.InsertUpdate;
//Сохранение приёмника
EtlConsumer.Save;
//Сохранение задачи
(ETLTask As IMetabaseObject).Save;
End Sub UserProc;
//Создание визуального объекта
Sub CreateWX(ETLTask: IEtlTask; ETLObject: IEtlObject; XPosition: Integer; YPosition: Integer);
Var
WxRect: IWxRectangle;
WxETLObj: IWxEtlObject;
Begin
WxRect := ETLTask.Workspace.CreateRectangle;
WxRect.Id := ETLObject.Id;
WxETLObj := New WxEtlObject.Create;
WxETLObj.EtlObject := ETLObject;
WxRect.Style.TextPosition := WxTextPosition.Bottom;
WxRect.Style.PictureMarginTop := -10;
WxRect.PinPosition := New GxPointF.Create(XPosition, YPosition);
WxRect.Extension := WxETLObj As IWxShapeExtension;
End Sub CreateWX;
Imports Prognoz.Platform.Interop.Andy;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Dt;
Imports Prognoz.Platform.Interop.Etl;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
ETLTask: IEtlTask;
EtlConsumer: IEtlPlainDataConsumer;
DtRds: IDtRdsConsumer;
Begin
MB := Params.Metabase;
ETLTask := MB.ItemById["ETL_Task"].Edit() As IEtlTask;
//Создание нового приёмника - табличного справочника НСИ
EtlConsumer := ETLTask.Create(EtlObjectType.eotPlainDataRdsConsumer) As IEtlPlainDataConsumer;
EtlConsumer := EtlConsumer.Edit();
EtlConsumer.ClearConsumer := False;
EtlConsumer.Id := "RDS_Consumer";
EtlConsumer.Name := "Источник - Табличный справочник НСИ";
//Создаем визуальный объект источника
CreateWX(ETLTask, EtlConsumer, 0, 0);
//Настраиваем приёмник
DtRds := EtlConsumer.Consumer As IDtRdsConsumer;
DtRds.Dataset := Mb.ItemById["RDS_DICT"].Bind() As IDatasetModel;
DtRds.CatchAddRecordException := True;
DtRds.UpdateMode := UpdateLoadMode.ulmInsertUpdate;
//Сохранение приёмника
EtlConsumer.Save();
//Сохранение задачи
(ETLTask As IMetabaseObject).Save();
End Sub;
//Создание визуальных объектов
Public Shared Sub CreateWX(ETLTask: IEtlTask; ETLObject: IEtlObject; XPosition: Integer; YPosition: Integer);
Var
GxPointFCls: GxPointF = New GxPointFClass();
WxRect: IWxRectangle;
WxETLObj: IWxEtlObject = New WxEtlObject();
Begin
WxRect := ETLTask.Workspace.CreateRectangle();
WxRect.Id := ETLObject.Id;
WxETLObj.EtlObject := ETLObject;
WxRect.Style.TextPosition := WxTextPosition.wtpBottom;
WxRect.Style.PictureMarginTop := -10;
GxPointFCls.Create(XPosition, YPosition);
WxRect.PinPosition := GxPointFCls;
WxRect.Extension := WxETLObj As IWxShapeExtension;
End Sub;
При выполнении примера в задаче ETL будет создан новый приёмник данных, связанный с указанным табличным справочником НСИ.
См. также: