ICubeCallbackSaveArgument.Origin

Синтаксис

Origin: String;

Описание

Свойство Origin возвращает ключ объекта, инициирующего изменения данных куба.

Комментарии

Инициаторами изменения данных куба могут выступать расширения «Интерактивные формы ввода данных» и «Алгоритмы расчёта»:

Ключ объекта, инициирующего изменения данных, можно получить только через обработчик процесса сохранения данных в куб, подключенный к кубу. Для подключения обработчика используйте свойство IStandardCube.SetDefaultCallback.

Пример обработчика процесса сохранения данных в куб с использованием свойства ICubeCallbackSaveArgument.Origin:

Public Class CubeSaveCallBack: CubeCallBack
    // Обработка события, наступающего до сохранения куба
    Sub OnBeforeSave(callbackSaveArg: ICubeCallbackBeforeSaveArgument);
    Begin
        //...
        Debug.WriteLine("Событие, наступающее до сохранения куба, выполнено");
    End Sub OnBeforeSave;

    // Обработка события, наступающего после сохранения данных куба
    Sub OnAfterSave(callbackSaveArg: ICubeCallbackSaveArgument);
    Begin
        Debug.WriteLine("Ключ объекта, изменившего данные куба: " + callbackSaveArg.Origin);
        Debug.WriteLine("Событие, наступающее после сохранения куба, выполнено");
    End Sub OnAfterSave;
End Class CubeSaveCallBack;

После выполнения примера будет получен ключ объекта, изменившего данные куба при его сохранении.

Пример

Для выполнения примера предполагается наличие в репозитории стандартного куба с идентификатором STD_CUBE и алгоритма расчёта с идентификатором ALGORITHM. В алгоритме расчёта должны выполняться следующие условия:

Также в репозитории должен содержаться модуль с идентификатором CUBESAVECALLBACK - обработчик процесса сохранения данных в куб. Пример содержимого модуля приведён в разделе «Комментарии».

Добавьте ссылки на системные сборки: Algo, Cubes, Metabase. Также добавьте ссылки на сборки, которые необходимы для работы с алгоритмами расчёта.

Sub UserProc;
Var
    MB: IMetabase;
    MObj, Module: IMetabaseObject;
    Cube: IStandardCube;
    Algo: ICalcObject;
    CalcAlgo: ICalcAlgorithm;
    CalcResult: IAlgorithmCalculationResult;
Begin
    MB := MetabaseClass.Active;
    // Получим куб
    MObj := MB.ItemById("STD_CUBE").Edit;
    Cube := MObj As IStandardCube;
    // Получим модуль - обработчик процесса сохранения данных в куб
    Module := MB.ItemById("CUBESAVECALLBACK").Bind;
    // Подключим обработчик к кубу
    Cube.SetDefaultCallback(Module, "CubeSaveCallBack");
    // Сохраним изменения в кубе
    MObj.Save;
    // Получим алгоритм расчёта
    MObj := MB.ItemById("ALGORITHM").Bind;
    Algo := CalcObjectFactory.CreateCalcObject(MObj, True);
    CalcAlgo := Algo As ICalcAlgorithm;
    // Выполним расчёт алгоритма
    CalcResult := CalcAlgo.Calculate;
End Sub UserProc;

В результате выполнения примера к кубу будет подключён обработчик процесса сохранения данных, который возвращает ключ объекта, изменившего данные куба. В консоль будет выведен соответствующий ключ объекта после расчёта алгоритма. Например:

Ключ объекта, изменившего данные куба: 305519

См. также:

ICubeCallbackSaveArgument