Отсутствует;
Свойство 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 := IteratorStub.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.IsFullLink = True Then
Debug.WriteLine("Все обязательные параметры связи заданы");
// Проверим изменения в настройках связи и сохраним блок расчёта
If AddLink.IsDirty = True Then
IteratorModel.Save;
Block.SaveObject;
End If;
End If;
End Sub UserProc;
Не предусмотрен.
В результате выполнения примера будет настроена связь между вторыми измерениями первого источника и приёмника данных по атрибуту «Ключ». В консоль будет выведено наименование источника данных, в котором настроена связь, и результат проверки обязательных параметров связи, например:
Наименование источника данных: Куб-источник
Все обязательные параметры связи заданы
См. также: