Данные справочника НСИ можно получить в различной форме:
только элементы справочника;
элементы и группы справочника;
только группы справочника.
Для этого следует вызывать метод Open для справочника НСИ с параметром «RDSDIMTYPE». Данный параметр целочисленный и является необязательным. Значение параметра определяет, к какому виду будет приводится данные справочника НСИ:
0 - только элементы справочника;
1 - элементы и группы справочника;
2 - только группы справочника.
Если параметр «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
См. также: