IMDCalculationInstance.CreateFormulasConverter

Синтаксис Fore

CreateFormulasConverter(Cube: ICalculatedCubeInstance): IMDCalculationFormulasConverter;

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

CreateFormulasConverter(Cube: Prognoz.Platform.Interop.Cubes.ICalculatedCubeInstance): Prognoz.Platform.Interop.Cubes.IMDCalculationFormulasConverter;

Параметры

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

Описание

Метод CreateFormulasConverter создает объект, предназначенный для конвертации формул из многомерного расчета в указанный вычисляемый куб.

Пример Fore

Для выполнения примера предполагается наличие в репозитории многомерного расчета на сервере БД с идентификатором «MDCalc» и вычисляемого куба с идентификатором «CalcCube». Многомерный расчет и вычисляемый куб должны быть построены на одинаковых источниках данных.

Sub UserProc;
Var
    MB: IMetabase;
    CalcCubeInst: ICalculatedCubeInstance;
    MDCalcInst: IMDCalculationInstance;
    FConverter: IMDCalculationFormulasConverter;
    bStruct: Boolean = False;
    StructError: String;
Begin
    MB := MetabaseClass.Active;
    CalcCubeInst := MB.ItemById("CalcCube").Open(NullAs ICalculatedCubeInstance;
    MDCalcInst := MB.ItemById("MDCalc").Open(NullAs IMDCalculationInstance;
    FConverter := MDCalcInst.CreateFormulasConverter(CalcCubeInst);
   FConverter.CorrectSourceFormulas := True;
    Try
        //Проверка соответствия структур многомерного расчета
        //и вычисляемого куба
        FConverter.ValidateStructure;
        bStruct := True;
    Except On e: Exception Do
        StructError := e.Message;
    End Try;
    If Not bStruct Then
        Debug.WriteLine("Структура многомерного расчета и вычисляемого куба не совместимы");
        Debug.WriteLine("Ошибка: " + StructError);
    Else
        //Конвертация формул
        FConverter.BatchMode := ConvertBatchMode.Update;
        FConverter.Convert;
        CalcCubeInst.SaveFormulas;
    End If;
End Sub UserProc;

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

Пример Fore.NET

Для выполнения примера предполагается наличие в репозитории многомерного расчета на сервере БД с идентификатором «MDCalc» и вычисляемого куба с идентификатором «CalcCube». Многомерный расчет и вычисляемый куб должны быть построены на одинаковых источниках данных.

Imports System.Diagnostics;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CalcCubeInst: ICalculatedCubeInstance;
    MDCalcInst: IMDCalculationInstance;
    FConverter: IMDCalculationFormulasConverter;
    bStruct: Boolean = False;
    StructError: String;
Begin
    MB := Params.Metabase;
    CalcCubeInst := MB.ItemById["CalcCube"].Open(NullAs ICalculatedCubeInstance;
    MDCalcInst := MB.ItemById["MDCalc"].Open(NullAs IMDCalculationInstance;
    FConverter := MDCalcInst.CreateFormulasConverter(CalcCubeInst);
    FConverter.CorrectSourceFormulas := True;
    Try
        //Проверка соответствия структур многомерного расчета
        //и вычисляемого куба
        FConverter.ValidateStructure();
        bStruct := True;
    Except On e: Exception Do
        StructError := e.Message;
    End Try;
    If Not bStruct Then
        Debug.WriteLine("Структура многомерного расчета и вычисляемого куба не совместимы");
        Debug.WriteLine("Ошибка: " + StructError);
    Else
        //Конвертация формул
        FConverter.BatchMode := ConvertBatchMode.cbmUpdate;
        FConverter.Convert();
        CalcCubeInst.SaveFormulas();
    End If;
End Sub;

Указанная процедура является точкой входа для .NET-сборки. При выполнении примера будет произведена проверка соответствия структур многомерного расчета и вычисляемого куба. Если структуры одинаковые, то формулы в вычисляемом кубе будут обновлены в соответствии с формулами многомерного расчета. Коррекция формул многомерного расчета произойдет перед конвертацией в вычисляемый куб.

См. также:

IMDCalculationInstance