ICalcBlockIteratorStubDimension.Links

Синтаксис

Links: ICalcBlockIteratorStubDimensionLinks;

Описание

Свойство Links возвращает коллекцию связей измерения источника с приёмником данных.

Пример

Для выполнения примера предполагается наличие в репозитории алгоритма расчёта с идентификатором ALGORITHM, в котором содержится блок расчёта. Для блока расчёта должны быть выбраны приёмник и источники данных, в которых содержится хотя бы два измерения.

Добавьте ссылки на системные сборки: Algo, Cubes, Dimensions, Metabase. Также добавьте ссылки на сборки, которые необходимы для работы с алгоритмами расчёта.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObjectDescriptor;
    Algo: ICalcObject;
    List: ICalcObjectsList;
    CalcAlgo: ICalcAlgorithm;
    CalcBlock: ICalcObject;
    Block: ICalcBlock;
    IteratorModel: ICalcBlockIteratorModel;
    IteratorStub: ICalcBlockIteratorStub;
    IteratorStubs: ICalcBlockIteratorStubs;
    IteratorStubDimension: ICalcBlockIteratorStubDimension;
    IteratorStubDimensions: ICalcBlockIteratorStubDimensions;
    DimensionModel: IDimensionModel;
    StubOut: IVariableStub;
    StubDim: IDimensionModel;
    Attr, StubOutAttr: IDimAttributes;
    AddLink: ICalcBlockIteratorStubDimensionLink;
    Links: ICalcBlockIteratorStubDimensionLinks;
Begin
    // Получим алгоритм расчёта
    MB := MetabaseClass.Active;
    MObj := MB.ItemById("ALGORITHM");
    Algo := CalcObjectFactory.CreateCalcObject(MObj, True);
    CalcAlgo := Algo As ICalcAlgorithm;
    // Получим список объектов алгоритма расчёта
    List := CalcAlgo.Items;
    // Получим блок расчёта
    CalcBlock := List.Item(0);
    Block := CalcBlock As ICalcBlock;
    // Настроим связи между измерениями источника и приёмника данных
    IteratorModel := Block.EditIteratorModel;
    // Получим коллекцию источников данных
    IteratorStubs := IteratorModel.Stubs;
    // Получим первый источник данных
    IteratorStub := IteratorStubs.Item(0);
    // Выведем в консоль наименование полученного источника данных
    Debug.WriteLine("Наименование источника данных: " + IteratorStub.Stub.Name);
    // Получим коллекцию измерений источника данных
    IteratorStubDimensions := IteratorStub.Dimensions;
    // Получим второе измерение источника данных, для которого будет создана связь 
    IteratorStubDimension := IteratorStubDimensions.Item(1);
    // Получим приёмник данных
    StubOut := Block.StubOut;
    // Получим второе измерение приёмника данных, для которого будет создана связь
    DimensionModel := StubOut.Dimension(1); 
    // Добавим новую связь
    Links := IteratorStubDimension.Links;
    AddLink := Links.Add;
    // Зададим источник данных для связи
    AddLink.Stub := IteratorStubDimension.Stub;
    // Получим структуру измерения источника данных
    StubDim := IteratorStubDimension.Dimension;
    // Зададим структуру измерения источника данных
    AddLink.Dimension := StubDim;   
    // Получим атрибуты измерения источника данных
    Attr := StubDim.Attributes;
    // Зададим первый атрибут измерения источника данных (ключ)
    AddLink.DestinationAttribute := Attr.Item(0);
    // Зададим связываемое измерение приёмника
    AddLink.Owner := DimensionModel;
    // Получим атрибуты измерения приёмника данных
    StubOutAttr := DimensionModel.Attributes;
    // Зададим первый атрибут измерения приёмника данных (ключ)
    AddLink.SourceAttribute := StubOutAttr.Item(0);
    // Проверим задание всех обязательных параметров связи
    // При наличии изменений проверяем связь
    If AddLink.IsDirty = True Then
        // Проверка, что все обязательные поля заполнены
        If AddLink.IsFullLink = False Then
            // Удалить связь, если не все обязательные поля заполнены
            IteratorStub.CleanNotFullLink;
        End If;
        // Чтобы изменения применились, нужно сохранить саму модель
        IteratorModel.Save;
        IteratorModel.Dispose_;
    End If;
    Block.SaveObject;
End Sub UserProc;

В результате выполнения примера будет настроена связь между вторыми измерениями первого источника и приёмника данных по атрибуту «Ключ». В консоль будет выведено наименование источника данных, в котором настроена связь. Если во время настройки будут заполнены не все обязательные поля, то связь будет удалена.

См. также:

ICalcBlockIteratorStubDimension