Открытие справочника НСИ по различным измерениям

Данные справочника НСИ можно получить в различной форме:

Для этого следует вызывать метод Open для справочника НСИ с параметром «RDSDIMTYPE». Данный параметр целочисленный и является необязательным. Значение параметра определяет, к какому виду будет приводится данные справочника НСИ:

Если параметр «RDSDIMTYPE» не задан, то будут открыты только элементы справочника.

Для выполнения примера в репозитории предполагается наличие репозитория НСИ «RDS_REPO», содержащего справочник «OBJ_DICTIONARY». Предполагается наличие формы, расположенной на ней кнопки «Button1», и следующих компонентов: UiDimension с идентификатором «UiDimension1», UiRdsDictionary с идентификатором «UiRdsDictionary1», IntegerEdit с идентификатором «IntegerEdit1», Memo с идентификатором «Memo1», а также компонента DimensionTree. Источником данных для компонента DimensionTree является «UiDimension1». Для компонента «IntegerEdit1» значение свойства MinValue - «0», MaxValue - «2».

Форма выглядит следующим образом:

В компоненте «IntegerEdit1» необходимо ввести значение параметра «RDSDIMTYPE» и нажать кнопку «Открыть». После этого пример будет выполнен.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);

Var

Metabase: IMetabase;

RdsKey: Integer;

Object: IMetabaseObjectDescriptor;

Params: IMetabaseObjectParams;

Param: IMetabaseObjectParam;

Values: IMetabaseObjectParamValues;

Dictionary: IRdsDictionaryInstance;

Dict: IRdsDictionary;

DimInstance: IDimInstance;

Elements: IDimElements;

Element: Integer;

i: Integer;

Begin

Metabase := MetabaseClass.Active;

RdsKey := Metabase.GetObjectKeyById("RDS_REPO");

Object := Metabase.ItemByIdNamespace("OBJ_DICTIONARY", RdsKey);

Object := Object.Edit;

Params := Object.Params;

Param := Params.Add;

Param.Name := "RDSDIMTYPE";

Param.Id := "RDSDIMTYPE";

Param.DataType := DbDataType.Integer;

Values := Params.CreateEmptyValues;

Values.FindById("RDSDIMTYPE").Value := IntegerEdit1.Value;

Dictionary := Object.Open(Values) As IRdsDictionaryInstance;

DimInstance := Dictionary As IDimInstance;

UiDimension1.Instance := DimInstance;

Dict := Dictionary.Dictionary;

UiRdsDictionary1.Object := Dict;

UiRdsDictionary1.Open(Values);

UiRdsDictionary1.Active := True;

Memo1.Clear;

Elements := DimInstance.Elements;

For i := 0 To Elements.Count - 1 Do

Element := Elements.Elements.Element(i);

If Elements.IsGroup(Element)

Then Memo1.Lines.Add(" Группа: " + Elements.Name(Element));

Else Memo1.Lines.Add("Элемент: " + Elements.Name(Element));

End If;

End For;

End Sub Button1OnClick;

После выполнения примера справочник «OBJ_DICTIONARY» будет открыт с заданным значением параметра «RDSDIMTYPE». Данные в виде дерева будут отображены в компоненте DimensionTree и описаны в компоненте Memo.

Пример открытия справочника с различными значениями параметра «RDSDIMTYPE» приведен ниже:

RDSDIMTYPE=0

RDSDIMTYPE=1

RDSDIMTYPE=2

См. также:

Примеры