ItemByIdNamespace(Id: String; Namespace_: Integer): IMetabaseObjectDescriptor;
ItemByIdNamespace[Id: String; Namespace_: Integer]: Prognoz.Platform.Interop.Metabase.IMetabaseObjectDescriptor;
Id. Идентификатор объекта, описание которого необходимо получить;
Namespace_. Ключ объекта-контейнера. В качестве объекта-контейнера могут указываться следующие объекты репозитория: репозиторий НСИ, контейнер моделирования, веб-приложение. Также могут указываться различные объекты, внутренние объекты которых не отображаются в навигаторе объектов (например, база данных временных рядов, контейнер пользовательских классов, справочники и другие).
Свойство ItemByIdNamespace возвращает описание объекта, содержащегося в каком-либо объекте-контейнере.
Данное свойство используется для доступа к внутренним объектам (например, схема отметки справочников), а также к дочерним объектам, хранящимся в объектах-контейнерах.
Свойство возвращает значение Null, если объект с указанным идентификатором не существует.
Для выполнения примера предполагается наличие формы и расположенной на ней кнопки с наименованием «Button1». В репозитории имеется репозиторий НСИ с идентификатором «RDS», в котором сохранён справочник НСИ с идентификатором «Dict_1».
Добавьте ссылки на системные сборки: Metabase, Rds, Ui.
Sub UserProc;
Var
MB: IMetabase;
RDS: IRdsDictionary;
Target: IUiCommandTarget;
Context: IUiCommandExecutionContext;
Begin
MB := MetabaseClass.Active;
RDS := MB.ItemByIdNamespace("Dict_1", MB.GetObjectKeyById("RDS")).Bind As IRdsDictionary;
If RDS <> Null Then
Target := WinApplication.Instance.GetPluginTarget("Rds");
Context := Target.CreateExecutionContext;
Context.Data := RDS;
Target.Execute("EditDictionary", Context);
End If;
End Sub UserProc;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
RDS: IRdsDictionary;
Target: IUiCommandTarget;
Context: IUiCommandExecutionContext;
WinApp: WinApplication = New WinApplicationClass_2();
Begin
MB := Params.Metabase;
RDS := MB.ItemByIdNamespace["Dict_1", MB.GetObjectKeyById("RDS")].Bind() As IRdsDictionary;
If RDS <> Null Then
Target := WinApp.GetPluginTarget("Rds");
Context := Target.CreateExecutionContext();
Context.Data := RDS;
Target.Execute("EditDictionary", Context, Null);
End If;
End Sub;
При нажатии на кнопку указанный справочник НСИ будет открыт на редактирование.
См. также: