Номер статьи: KB000002
Связанные блоки:
Все объекты репозитория поддерживают стандартные операции, такие как открытие и редактирование. Также каждый класс объектов может поддерживать специфичные только для него операции. Например, вычисляемый куб поддерживает операцию редактирования формул. Команды для выполнения над объектом всех доступных операций содержатся в контекстном меню, вызываемом для объекта из навигатора. Любую из этих операций можно выполнить из кода прикладной системы.
В «Форсайт. Аналитическая платформа» для объектов, поддерживающих выполнение операций над ними, предусмотрен интерфейс Ui.IUiCommandTarget:
Interface IUiCommandTarget
Function CreateExecutionContext: IUiCommandExecutionContext;
Function Execute(Command: String; Context: IUiCommandExecutionContext): Variant;
Для выполнения команды над объектом вызовите метод Execute, указав строковый идентификатор команды и, если потребуется, контекст выполнения. Контекст выполнения необходим для определения окружения, в котором будет выполняться команда: родительская форма, режим выполнения и параметры. Создать контекст выполнения команды можно вызвав метод CreateExecutionContext. Через свойство IUiCommandExecutionContext.Data передается значение параметра для выполнения параметризованной команды. Результат выполнения команды возвращает метод Execute (обычно возвращает пустое значение).
Все команды имеют уникальный строковый идентификатор. Например, команда открытия объекта имеет идентификатор «Object.Open», редактирования - «Object.Edit» и т.д. Перечень основных стандартных команд:
Object.Open. Открытие объекта;
Object.Edit. Редактирование свойств объекта;
Query.QueryBuilder. Вызов конструктора запроса;
Cube.SaveToFile. Вызов стандартного диалога сохранение куба в файл;
Cube.CreateReport. Создание регламентного отчета на основе куба;
CalcCube.EditFormulas. Вызов стандартного диалога редактирования формул.
Выполнить команду над объектом репозитория можно получив интерфейс 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;
См. также: