StartPosition: MsDimSelectionOffsetStartPosition;
Свойство StartPosition определяет тип смещения элементов.
Для выполнения примера предполагается наличие в репозитории алгоритма расчёта с идентификатором ALGORITHM, в котором содержится блок расчёта. Для блока расчёта должны быть выбраны приёмник и источники данных, в которых содержатся хотя бы два измерения. Для второго измерения источника данных настроена связь в упрощенном режиме.
Добавьте ссылки на системные сборки: Algo, Metabase, Ms. Также добавьте ссылки на сборки, которые необходимы для работы с алгоритмами расчёта.
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;
Link: 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);
// Получим коллекцию измерений источника данных
IteratorStubDimensions := IteratorStub.Dimensions;
// Получим второе измерение источника данных, для которого настроена связь
IteratorStubDimension := IteratorStubDimensions.Item(1);
// Получим расширенные настройки связи
Links := IteratorStubDimension.Links;
Link := Links.Item(0);
// Зададим принцип работы связи при расчёте блока
Link.Behaviour := MsLinkBehaviour.EmptyCoordAsEmptyValue;
// Зададим тип смещения элементов - первый элемент
Link.StartPosition := MsDimSelectionOffsetStartPosition.First;
// Зададим смещение элементов
Link.OffSet := 1;
// Сохраним изменения параметров связи
IteratorModel.Save;
// Сохраним блок расчёта
Block.SaveObject;
End Sub UserProc;
В результате выполнения примера будет настроена расширенная связь второго измерения источника с измерением приёмника данных в соответствии с заданными параметрами.
См. также: