Открытие рабочей книги, изменение данных, сохранение изменений

Для выполнения примера предполагается наличие в репозитории рабочей книги с идентификатором «OBJ123», в которой будут изменены и сохранены данные.

Подключите ссылки на следующие системные сборки:

Пример Fore

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Exp: IEaxAnalyzer;
    WB: ILaner;
    Table: ILanerTable;
    i, j: Integer;
Begin
    MB := MetabaseClass.Active;
    //Открываем рабочую книгу на редактирование
    MObj := MB.ItemById("OBJ123").Edit;
    Exp := MObj As IEaxAnalyzer;
    WB := Exp.Laner;
    //Получаем таблицу рабочей книги
    Table := WB.Execute;
    //Разрешаем редактирование таблицы
    If Not Table.IsEditing Then
        Table.Edit;
    End If;
    //Для всех доступных ячеек таблицы присваиваем случайные значения от 0 до 100
    For i := 0 To Table.RowCount - 1 Do
    For j := 0 To Table.ColumnCount - 1 Do
    If Table.IsEditableCell(i, j) Then
    Table.Cell(i, j) := Math.RandBetween(0100);
    End If;
    End For;
    End For;
    //Сохраняем изменения
    Table.Post;
    Table.Update;
    MObj.Save;
End Sub UserProc;

После выполнения примера будет открыта на редактирование рабочая книга с указанным идентификатором. Данные в таблице рабочей книги будут изменены на случайные значения от 0 до 100.

Пример Fore.NET

Указанная процедура является точкой входа Main в модуле Program .NET-сборки. В данный модуль должны быть импортированы сборки Express, Metabase, Laner, MathFin из системной сборки Prognoz.Platform.Interop.

Public Shared Sub Main(Params: StartParams);

Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Exp: IEaxAnalyzer;
    WB: ILaner;
   Table: ILanerTable;
    i, j: Integer;
    m: Prognoz.Platform.Interop.MathFin.MathClass;
Begin
    MB := Params.Metabase;
    //Открываем рабочую книгу на редактирование
    MObj := MB.ItemById["OBJ123"].Edit();
    Exp := MObj As IEaxAnalyzer;
    WB := Exp.Laner;
   //Получаем таблицу рабочей книги
    Table := WB.Execute();
    //Разрешаем редактирование таблицы
    If Not Table.IsEditing Then
        Table.Edit();
    End If;
    //Для всех доступных ячеек таблицы присваиваем случайные значения от 0 до 100
    For i := 0 To Table.RowCount - 1 Do
    For j := 0 To Table.ColumnCount - 1 Do
    If Table.IsEditableCell[i, j] Then
        m := New Prognoz.Platform.Interop.MathFin.MathClass.Create();
        Table.Cell[i, j] := m.RandBetween(0100);
    End If;
    End For;
    End For;
    //Сохраняем изменения
    Table.Post();
    Table.Update();
    MObj.Save();
End Sub;

Результат выполнения примера аналогичен результату примера на Fore.

См. также:

Примеры | ILaner | ILanerTable