IRubricatorFactorIO.FactDataId

Синтаксис

FactDataId: String;

Описание

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

Комментарии

Идентификаторы атрибутов в списке разделяются знаком «;».

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

Пример: для извлечения данных указан следующий список атрибутов «FactDataId:="ATTR1;ATTR2;ATTR3"». Для сохранения данных только по третьему атрибуту необходимо в данном свойстве задать следующее значение «FactDataId:=";;ATTR3"».

Пример

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

Sub Main;

Var

MB: IMetabase;

RubInst: IRubricatorInstance;

Cub: ICubeInstance;

Dest: ICubeInstanceDestination;

Exe: ICubeInstanceDestinationExecutor;

Mat, DataMatr: IMatrix;

It: IMatrixIterator;

i: Integer;

Sto: ICubeInstanceStorage;

Begin

MB := MetabaseClass.Active;

RubInst := MB.ItemById("OBJ_RUBRICATOR").Open(Null) As IRubricatorInstance;

Cub := RubInst As ICubeInstance;

Dest := Cub.Destinations.DefaultDestination;

Exe := Dest.CreateExecutor;

//Атрибуты показателей

(Exe As IRubricatorFactorIO).FactDataId := "FACTOR;COUNTRY;USER_ATTR";

//Атрибуты наблюдения

(Exe As IRubricatorFactorIO).ValueId := "FACTOR;VL";

Exe.PrepareExecute(Null);

Exe.PerformExecute;

Mat := Exe.Matrix;

//Матрица

DataMatr := (CubeClass.ExecuteResult(Mat) As IRubricatorExecuteResult).Factors;

It := DataMatr.CreateIterator;

It.Move(IteratorDirection.First);

While It.Valid Do

//Ищем показатель с указанными значениями атрибутов

If (It.Values(1) = 94) And (It.Values(2) = 1) Then

i := It.Values(0);

Break;

End If;

It.Move(IteratorDirection.Next);

End While;

Mat.ValueFlag := 1;

DataMatr := (CubeClass.ExecuteResult(Mat) As IRubricatorExecuteResult).Values;

It := DataMatr.CreateIterator;

It.Move(IteratorDirection.First);

While It.Valid Do

//Ищем все значения по найденному показателю и меняем их на единицу

If It.Values(0) = i Then

It.Values(1) := (It.Values(1) As Double) + 1;

It.ValueFlag := 1;

Else

It.ValueFlag := 0;

End If;

It.Move(IteratorDirection.Next);

End While;

Sto := Dest.CreateStorage;

(Sto As IRubricatorFactorIO).ValueId := ";VL";

//Сохраняем новые значения

Sto.SaveMatrix(Mat, 1);

 End Sub Main;

После выполнения примера будут получены данные по атрибутам показателей «FACTOR», «COUNTRY» и «USER_ATTR». Будет найден показатель, для которого значение атрибута «COUNTRY» равно «94» и значение атрибута «USER_ATTR» равно «1». По найденному показателю все значения будут увеличены на единицу. После изменения обновленные данные будут сохранены обратно в базу данных временных рядов.

См. также:

IRubricatorFactorIO