IMsCalculationChainEntries.AddIterator

Синтаксис Fore

AddIterator(CycleName: String): IMsCalculationChainIterator;

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

AddIterator(CycleName: string): Prognoz.Platform.Interop.Ms.IMsCalculationChainIterator;

Параметры

CycleName. Наименование добавляемого цикла.

Описание

Метод AddIterator добавляет цикл в цепочку расчета метамодели.

Пример Fore

Для выполнения примера в репозитории предполагается наличие табличного справочника с идентификатором «TABLE_DICTIONARY» и контейнера моделирования с идентификатором «MODELING_CONTAINER». В контейнере должна содержаться метамодель с идентификатором «META_MODEL».

Добавьте ссылки на системные сборки: Dimensions, Metabase, Ms.

Sub UserAddIterator;
Var
    pMetabase: IMetabase;
    pModelSpace: IMetabaseObjectDescriptor;
    pMetaModel: IMsMetaModel;
    pChain: IMsCalculationChainEntries;
    pCycle: IMsCalculationChainIterator;
    pDimInstance: IDimInstance;
    pSelection: IDimSelection;
    pParam: IMsModelParam;
Begin
    pMetabase := MetabaseClass.Active;
    
// Получаем контейнер моделирования
    pModelSpace := pMetabase.ItemById("MODELING_CONTAINER");
    
// Получаем метамодель
    pMetaModel := pMetabase.ItemByIdNamespace("META_MODEL", pModelSpace.Key).Edit As IMsMetaModel;
    
// Получаем цепочку расчёта метамодели
    pChain := pMetaModel.CalculationChain;
    pMetaModel.Params.Clear;
    
// Создаем параметр метамодели
    pParam := pMetaModel.Params.Add;
    pParam.Id := 
"PARAM_ITERATOP";
    pParam.Name := 
"Циклический параметр";
    
// Привязываем параметр к табличному справочнику
    pParam.LinkedObject := pMetabase.ItemById("TABLE_DICTIONARY");
    
// Создаем цикл в метамодели
    pCycle := pChain.AddIterator("Цикл");
    pDimInstance := pMetabase.ItemById(
"TABLE_DICTIONARY").Open(NullAs IDimInstance;
    
// Задаём отметку для расчёта цикла
    pSelection := pDimInstance.CreateSelection;
    pSelection.SelectAll;
    pCycle.Selection := pSelection;
    
// Задаём параметр, используемый для расчёта цикла
    pCycle.Parameter := pParam;
    
// Сохраняем изменения
    (pMetaModel As IMetabaseObject).Save;
End Sub UserAddIterator;

После выполнения примера в цепочку расчета метамодели будет добавлен цикл с параметром. Расчет цикла будет производиться по всем элементам справочника.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    pMetabase: IMetabase;
    pModelSpace: IMetabaseObjectDescriptor;
    pMetaModel: IMsMetaModel;
    pChain: IMsCalculationChainEntries;
    pCycle: IMsCalculationChainIterator;
    pDimInstance: IDimInstance;
    pSelection: IDimSelection;
    pParam: IMsModelParam;
Begin
    pMetabase := Params.Metabase;
    // Получаем контейнер моделирования
    pModelSpace := pMetabase.ItemById["MODELING_CONTAINER"];
    // Получаем метамодель
    pMetaModel := pMetabase.ItemByIdNamespace["META_MODEL", pModelSpace.Key].Edit() As IMsMetaModel;
    // Получаем цепочку расчёта метамодели
    pChain := pMetaModel.CalculationChain;
    pMetaModel.Params.Clear();
    // Создаем параметр метамодели
    pParam := pMetaModel.Params.Add();
    pParam.Id := "PARAM_ITERATOP";
    pParam.Name := "Циклический параметр";
    // Привязываем параметр к табличному справочнику
    pParam.LinkedObject := pMetabase.ItemById["TABLE_DICTIONARY"];
    // Создаем цикл в метамодели
    pCycle := pChain.AddIterator("Цикл");
    pDimInstance := pMetabase.ItemById["TABLE_DICTIONARY"].Open(NullAs IDimInstance;
    // Задаём отметку для расчёта цикла
    pSelection := pDimInstance.CreateSelection();
    pSelection.SelectAll();
    pCycle.Selection := pSelection;
    // Задаём параметр, используемый для расчёта цикла
    pCycle.Parameter := pParam;
    // Сохраняем изменения
    (pMetaModel As IMetabaseObject).Save();
End Sub;

См. также:

IMsCalculationChainEntries