SetValueDimension(Instance: IDimInstance): IMsDimIteratorFilteredDimension;
SetValueDimension(Instance: Prognoz.Platform.Interop.Dimensions.IDimInstance): Prognoz.Platform.Interop.Ms.IMsDimIteratorFilteredDimension;
Instance. Измерение источника данных приёмника.
Метод SetValueDimension задает измерение источника данных приёмника, для которого необходимо привязать значение фильтрующего источника данных.
Используется в алгоритмах расчёта при настройке дополнительной фильтрации по данным блока расчёта. Для дополнительной фильтрации элементов измерения приёмника по значениям указанного атрибута выполняется привязка значения фильтрующего источника данных. При использовании дополнительной фильтрации отметка элементов измерения приёмника зависит от значений отмеченных элементов измерений выбранного источника данных и учитывается при расчёте алгоритма.
Для получения подробной информации обратитесь к разделу «Настройка фильтрации по данным».
Для указания атрибута измерения источника данных приёмника используйте свойство IMsDimIterateByDataStub.ValueDimAttr.
Для выполнения примера предполагается наличие в репозитории алгоритма расчёта. В алгоритме расчёта содержится блок расчёта, в котором выбран приёмник данных и фильтрующий источник данных для дополнительной фильтрации элементов измерения приёмника по значениям указанного атрибута. Убедитесь, что в составе приёмника содержится справочник НСИ с идентификатором DIMENSION и в алгоритме расчёта содержится метамодель блока расчёта с ключом 12345.
Добавьте ссылки на системные сборки: Metabase, Dimensions, Ms.
Sub UserProc;
Var
MB: IMetabase;
Meta: IMsMetaModel;
CalculationChain: IMsCalculationChainEntries;
Iter: IMsCalculationChainMultiDimIterator;
Dim: IDimInstance;
Param: IMsDimIterateByDataOptions;
Stub: IMsDimIterateByDataStub;
Begin
MB := MetabaseClass.Active;
// Получим измерение приёмника (справочник НСИ)
Dim := MB.ItemById("DIMENSION").Open(Null) As IDimInstance;
// Получим метамодель из алгоритма расчёта
Meta := MB.Item(12345).Edit As IMsMetaModel;
// Получим цепочку расчёта метамодели и первую итерацию
CalculationChain := Meta.CalculationChain;
Iter := CalculationChain.Item(0) As IMsCalculationChainMultiDimIterator;
// Получим параметры итерации
Param := Iter.IterateByData;
// Зададим привязку значения по атрибуту
Stub := Param.Stubs.Item(0);
Stub.SetValueDimension(Dim);
Stub.ValueDimAttr := "KEY";
// Сохраним изменения
Meta.MetabaseObject.Save;
// Выведем в консоль наименование измерения
Debug.WriteLine(Stub.ValueDimension.Name);
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Meta: IMsMetaModel;
CalculationChain: IMsCalculationChainEntries;
Iter: IMsCalculationChainMultiDimIterator;
Dim: IDimInstance;
Param: IMsDimIterateByDataOptions;
Stub: IMsDimIterateByDataStub;
Begin
MB := Params.Metabase;
// Получим измерение приёмника (справочник НСИ)
Dim := MB.ItemById["DIMENSION"].Open(Null) As IDimInstance;
// Получим метамодель из алгоритма расчёта
Meta := MB.Item[12345].Edit() As IMsMetaModel;
// Получим цепочку расчёта метамодели и первую итерацию
CalculationChain := Meta.CalculationChain;
Iter := CalculationChain.Item[0] As IMsCalculationChainMultiDimIterator;
// Получим параметры итерации
Param := Iter.IterateByData;
// Зададим привязку значения по атрибуту
Stub := Param.Stubs.Item[0];
Stub.SetValueDimension(Dim);
Stub.ValueDimAttr := "KEY";
// Сохраним изменения
Meta.MetabaseObject.Save();
// Выведем в консоль наименование измерения
System.Diagnostics.Debug.WriteLine(Stub.ValueDimension.Name);
End Sub;
В результате выполнения примера будет выполнена привязка значения атрибута «KEY», который содержится в измерении приёмника с идентификатором DIMENSION, к фильтрующему источнику данных. В консоль будет выведено наименование привязанного измерения приёмника.
См. также: