ICalendarDimension.Setup

Синтаксис Fore

Setup: ICalendarSetup;

Синтаксис Fore.NET

Setup: Prognoz.Platform.Interop.Dimensions.ICalendarSetup;

Описание

Свойство Setup возвращает параметры календаря, элементы которого были построены динамически.

Комментарии

Для динамического открытия календаря используйте метод ICalendarDimension.OpenAs.

Пример Fore

Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «FC_COMM». Также должна существовать форма, содержащая кнопку с идентификатором «Button1» и два компонента Memo с идентификаторами «Memo1» и «Memo2». Добавьте ссылки на системные сборки «Metabase», «Cube», «Dimensions». Пример является обработчиком события OnClick для кнопки.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    mb: IMetabase;
    Rub: IRubricator;
    CalendarObj: IMetabaseObject;
    Calendar: ICalendarDimension;
    CalendDimInst: IDimInstance;
    DynamicCalendInst: IDynamicCalendarInstance;
    Setup: ICalendarSetup;
    Iterator: IDimIterator;
Begin
    mb := MetabaseClass.Active;
    Rub := mb.ItemById("FC_COMM").Edit As IRubricator;
    CalendarObj := Rub.EditCalendar As IMetabaseObject;
    Calendar := CalendarObj As ICalendarDimension;
    Calendar.DefaultOpenType := CalendarOpenType.Hierarchical;
    CalendDimInst := Calendar.OpenAs(CalendarOpenType.Flat);
    DynamicCalendInst := CalendDimInst As IDynamicCalendarInstance;
    Setup := Calendar.Setup;
    Iterator := DynamicCalendInst.Iterator(Setup);
    Memo1.Clear;
    Memo1.Lines.Add("Старые значения");
    While Iterator.Next Do
        Memo1.Lines.Add(CalendDimInst.Elements.Name(Iterator.Element));
    End While;
    Setup.Levels := DimCalendarLevelSet.Week Or DimCalendarLevelSet.Month Or DimCalendarLevelSet.Year;
    Setup.StartDay := DateTime.Parse("01.01.2000");
    Setup.EndDay := DateTime.Parse("01.01.2020");
    Setup.WeekLevel.RestDays := DayOfWeekSet.SaturdaySunday;
    CalendarObj.Save;
    CalendDimInst := Calendar.OpenAs(CalendarOpenType.Flat);
    DynamicCalendInst := CalendDimInst As IDynamicCalendarInstance;
    Iterator := DynamicCalendInst.Iterator(Setup);
    Memo2.Clear;
    Memo2.Lines.Add("Новые значения");
    While Iterator.Next Do
        Memo2.Lines.Add(CalendDimInst.Elements.Name(Iterator.Element));
    End While;
End Sub Button1OnClick;

После выполнения примера календарь базы данных временных рядов  будет динамически открыт в плоском виде. Элементы календаря будут выведены в компонент «Memo1». Затем параметры календаря будут изменены и сохранены:

Элементы календаря (в плоском виде с учетом изменений) будут выведены в компонент «Memo2».

Пример Fore.NET

Для выполнения примера в репозитории предполагается наличие базы данных временных рядов  с идентификатором «FC_COMM». Также должна существовать форма .NET, содержащая кнопку с идентификатором «button1» и два компонента ListBox с идентификаторами «listBox1» и «listBox2». Пример является обработчиком события Click для кнопки.

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Cubes;

Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
    mb: IMetabase;
    Rub: IRubricator;
    CalendarObj: IMetabaseObject;
    Calendar: ICalendarDimension;
    CalendDimInst: IDimInstance;
    DynamicCalendInst: IDynamicCalendarInstance;
    Setup: ICalendarSetup;
    Iterator: IDimIterator;
Begin
    mb := Self.Metabase;
    Rub := mb.ItemById["FC_COMM"].Edit() As IRubricator;
    CalendarObj := Rub.EditCalendar() As IMetabaseObject;
    Calendar := CalendarObj As ICalendarDimension;
    Calendar.DefaultOpenType := CalendarOpenType.caoptyHierarchical;
    CalendDimInst := Calendar.OpenAs(CalendarOpenType.caoptyFlat);
    DynamicCalendInst := CalendDimInst As IDynamicCalendarInstance;
    Setup := Calendar.Setup;
    Iterator := DynamicCalendInst.Iterator[Setup];
    listBox1.Items.Clear();
    listBox1.Items.Add("Старые значения");
    While Iterator.Next() Do
        listBox1.Items.Add(CalendDimInst.Elements.Name[Iterator.Element]);
    End While;
    Setup.Levels := DimCalendarLevelSet.dclsWeek Or DimCalendarLevelSet.dclsMonth Or DimCalendarLevelSet.dclsYear;
    Setup.StartDay := DateTime.Parse("01.01.2000");
    Setup.EndDay := DateTime.Parse("01.01.2020");
    Setup.WeekLevel.RestDays := DayOfWeekSet.dowsSaturdaySunday;
    CalendarObj.Save();
    CalendDimInst := Calendar.OpenAs(CalendarOpenType.caoptyFlat);
    DynamicCalendInst := CalendDimInst As IDynamicCalendarInstance;
    Iterator := DynamicCalendInst.Iterator[Setup];
    listBox2.Items.Clear();
    listBox2.Items.Add("Новые значения");
    While Iterator.Next() Do
        listBox2.Items.Add(CalendDimInst.Elements.Name[Iterator.Element]);
    End While;
End Sub;

После выполнения примера календарь базы данных временных рядов  будет динамически открыт в плоском виде. Элементы календаря будут выведены в компонент «listBox1». Затем параметры календаря будут изменены и сохранены:

Элементы календаря (в плоском виде с учетом изменений) будут выведены в компонент «listBox2».

См. также:

ICalendarDimension