В этой статье:

Общие сведения

Описание

Пример

Выполнение стандартных операций над объектами репозитория

Номер статьи: KB000002

Общие сведения

Связанные блоки:

Описание

Все объекты репозитория поддерживают стандартные операции, такие как открытие и редактирование. Также каждый класс объектов может поддерживать специфичные только для него операции. Например, вычисляемый куб поддерживает операцию редактирования формул. Команды для выполнения над объектом всех доступных операций содержатся в контекстном меню, вызываемом для объекта из навигатора. Любую из этих операций можно выполнить из кода прикладной системы.

В «Форсайт. Аналитическая платформа» для объектов, поддерживающих выполнение операций над ними, предусмотрен интерфейс Ui.IUiCommandTarget:

Interface IUiCommandTarget
    Function CreateExecutionContext: IUiCommandExecutionContext;
    Function Execute(Command: String; Context: IUiCommandExecutionContext): Variant;

Для выполнения команды над объектом вызовите метод Execute, указав строковый идентификатор команды и, если потребуется, контекст выполнения. Контекст выполнения необходим для определения окружения, в котором будет выполняться команда: родительская форма, режим выполнения и параметры. Создать контекст выполнения команды можно вызвав метод CreateExecutionContext. Через свойство IUiCommandExecutionContext.Data передается значение параметра для выполнения параметризованной команды. Результат выполнения команды возвращает метод Execute (обычно возвращает пустое значение).

Все команды имеют уникальный строковый идентификатор. Например, команда открытия объекта имеет идентификатор «Object.Open», редактирования - «Object.Edit» и т.д. Перечень основных стандартных команд:

Выполнить команду над объектом репозитория можно получив интерфейс IUiCommandTarget. Его возвращает метод GetObjectTarget, вызванный для экземпляра объекта Ui.WinApplication.Instance. Далее нужно вызвать метод IUiCommandTarget.Execute с необходимыми параметрами.

Пример

Sub Sample;
Var
    Mb: IMetabase;
    ObjDes: IMetabaseObjectDescriptor;
    Target: IUiCommandTarget;
Begin
    MB := MetabaseClass.Active;
    ObjDes := MB.ItemById("Table_1");
    Target := WinApplication.Instance.GetObjectTarget(ObjDes);
    Target.Execute("Object.Open"Null);
End Sub Sample;

См. также:

База знаний разработчиков