IRubricatorFactorStorage.DataOverwrite

Синтаксис

DataOverwrite: Boolean;

Описание

Свойство DataOverwrite определяет, перезаписывать ли существующие данные, т.е. не создавать новую ревизию. True - перезаписывать данные, False - не перезаписывать.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «OBJ_RUBRICATOR».

Sub Main;

Var

MB: IMetabase;

RubDesc: IMetabaseObjectDescriptor;

RubrIn: IRubricatorInstance;

Cub: ICubeInstance;

Dest: ICubeInstanceDestination;

FactorStorage: IRubricatorFactorStorage;

Storage: ICubeInstanceStorage;

FactorExec: IRubricatorFactorExecutor;

Exec: ICubeInstanceDestinationExecutor;

Mat: IMatrix;

Ite: IMatrixIterator;

Begin

MB := MetabaseClass.Active;

RubDesc := MB.ItemById("OBJ_RUBRICATOR");

RubrIn := RubDesc.Open(Null) As IRubricatorInstance;

Cub := RubrIn As ICubeInstance;

Dest := Cub.Destinations.DefaultDestination;

FactorStorage := Dest.CreateStorage As IRubricatorFactorStorage;

FactorStorage.DataOverwrite := False;

FactorStorage.FactDataId := "OBT";

FactorStorage.FactDataKind := MetaAttributeKind.Value;

FactorStorage.CurrentRevision := FactorStorage.OpenRevision("Ревизия для сохранения данных");

Storage := FactorStorage.AsCubeStorage;

FactorExec := Dest.CreateExecutor As IRubricatorFactorExecutor;

Exec := FactorExec.AsCubeExecutor;

Exec.PrepareExecute(Null);

Exec.PerformExecute;

FactorStorage.FactDataMatrix := Exec.Matrix;

Mat := FactorStorage.FactDataMatrix;

Ite := Mat.CreateIterator;

Ite.Move(IteratorDirection.First);

Debug.WriteLine("-----Данные до изменения-----");

While Ite.Valid Do

Debug.WriteLine(Ite.Value);

Ite.Value := Ite.Value + 1;

Ite.ValueFlag := 1;

Ite.Move(IteratorDirection.Next);

End While;

Storage.SaveMatrix(Mat, 1);

Debug.WriteLine("---- Данные после изменения-----");

Ite.Move(IteratorDirection.First);

While Ite.Valid Do

Debug.WriteLine(Ite.Value);

Ite.Move(IteratorDirection.Next);

End While;

End Sub Main;

После выполнения примера значения всех показателей будут увеличены на единицу, но не перезаписаны, а сохранены в новой ревизии и выведены в окно консоли.

См. также:

IRubricatorFactorStorage